652 AMD Geode™ LX Processors Data Book
Instruction Set
33234H
8.3.4.7 RSM - Leave System Management Mode
Operation
Description
The RSM instruction restores the state of the processor from the System Management Mode (SMM) header, and then
jumps to the address indicated by the NEXT_IP field of the SMM header. Below is the format of the SMM header.
Flags Affected
All bits of the EFlags register is restored from the SMM header.
Exceptions
#UD If current privilege level is not 0, or the SMM_INST_EN = 0 and if the processor is not in SMM and if the processor
is not in DMM.
Opcode Instruction Clocks Description
0F AA RSM 36 Return from SMI
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DR7 -4
EFlags -8
CR0 -C
CURRENT_IP -10
NEXT_IP -14
CS_FLAGS Code Segment Selector -18
GD
0Av 0 1 DPL 1 1 Cf R A INDEX TI RPL
CS_BASE -1C
0 CS_LIMIT[19:0] -20
SS_FLAGS SMM Flags -24
GB
0Av 01DPL10EWAc
r
NVXMHSP Ic
w
0 I/O SIZE I/O ADDRESS[15:0] -28
I/O_DATA -2C
SMM_CTL -30
0-34
IF (CPL<>0 OR (SMM_INST_EN=0 AND SMM=0 AND DMM=0))
#UD;
ELSE
SMM_CTL <= SMM_HEADER[SMM_CTL];
SS.FLAGS <= SMM_HEADER[SS.FLAGS];
CPL <= SMM_HEADER[SS.DPL];
CS.LIMIT <= SMM_HEADER[CS.LIMIT];
CS.BASE <= SMM_HEADER[CS.BASE]
CS.SELECTOR <= SMM_HEADER[CS.SELECTOR];
CS.FLAGS <= SMM_HEADER[CS.FLAGS];
CR0 <= SMM_HEADER[CR0];
EFLAGS <= SMM_HEADER[EFLAGS];
IF (!DMM_CTL.DBG_AS_DMI)
DR7 <= SMM_HEADER[DR7];
IF (SMM_HEADER[N])
SMM <= 1;
else
SMM <= 0;
IF (SMM_HEADER[H])
HALT PROCESSOR;
ELSE
JUMP to CS at OFFSET of SMM_HEADER[NEXT_IP];