AMD LX 900@1.5W Computer Hardware User Manual


 
654 AMD Geode™ LX Processors Data Book
Instruction Set
33234H
Exceptions
None.
Notes
None.
8.3.4.10 SMINT - Enter System Management Mode
Operation
Opcode Instruction Clocks Description
0F 38 SMINT 55 Enter SMM and call the SMI handler
IF (CPL<>0 OR (SMM_INST_EN=0 AND SMM=0 AND DMM=0))
#UD;
ELSE
SMM_HEADER[SMM_CTL] <= SMM_CTL;
SMM_HEADER[I/O_DATA] <= 0;
SMM_HEADER[I/O_ADDRESS] <= 0;
SMM_HEADER[I/O_SIZE] <= 0;
SMM_HEADER[SMM_FLAGS] <= SMM_FLAGS;
SMM_HEADER[SS_FLAGS] <= SS.FLAGS;
SMM_HEADER[CS_LIMIT] <= CS.LIMIT;
SMM_HEADER[CS_BASE] <= CS.BASE;
SMM_HEADER[CS_SELECTOR] <= CS.SELECTOR;
SMM_HEADER[CS_FLAGS] <= CS.FLAGS;
SMM_HEADER[NEXT_IP] <= IP OF INSTRUCTIOn after SMINT;
SMM_HEADER[CURRENT_IP] <= IP of SMINT Instruction;
SMM_HEADER[CR0] <= CR0;
SMM_HEADER[EFLAGS] <= eflags;
SMM_HEADER[DR7] <= DR7;
CR0 <= {1’b0, CR0.CD, CR0.NW, 29’h010};
if (!DMM_CTL.DBG_AS_DMI)
DR7 <= 32’h00000400;
SS.flags <= {SS.FLAGS[15:7], 2’b0, SS.FLAGS[4:0]};
CS.FLAGS <= 16’h009a;
CS.SELECTOR <= SMM_BASE >> 4;
CS.BASE <= SMM_BASE;
IF (SMM_LIMIT < 32’g100000)
CS.LIMIT <= SMM_LIMIT;
CS.G <= 1’b0;
else
CS.LIMIT <= SMM_LIMIT | 32’hfff;
CS.G <= 1’b1;
EFLAGS <= 32’h00000002;
SMM_CTL <= {SMM_CTL[31:3],1’b0, SMM_CTL[1], 1’b0};
SMM <= 1;
Jump to CS at offset of 0;