ST486DX ST Microelectronics, ST486DX Datasheet - Page 27

no-image

ST486DX

Manufacturer Part Number
ST486DX
Description
PROGRAMMING MANUAL
Manufacturer
ST Microelectronics
Datasheet
3.9
When the RSM instruction is executed at the end of the SMI handler, the EIP is loaded from the
SMM header at the address (SMMbase + SMMsize - 14h) called NEXT_IP. This permits the in-
struction to be restarted if NEXT_IP was modified by the SMM program. The values of ECX, ESI,
and EDI, prior to the execution of the instruction that was interrupted by SMI, can be restored from
information in the header which pertains to the INx and OUTx instructions. See Section 3.6 for an
example program to restart an I/O instruction. The only registers that are restored from the SMM
header are CS, NEXT_IP, EFLAGS, CR0, and DR7. All other registers which were modified by
the SMM program need to be restored before executing the RSM instruction.
got_inst:
not_hlt:
; data within the SMM Space Code Segment
seg4G dw
Exiting the SMI Handler
mov
out
cmp
jne
dec
jmp
dw
db
db
db
db
dw
al,ah
23h,al
bl,0f4h
not_hlt
cs:dword ptr [SMI_NEXTIP]
continue_SMI_routine
0ffffh
0
0
10010011B
8Fh
0
0
ST486DX - SMM SOFTWARE CONSIDERATIONS
;set MMAC back to normal
;was it a HLT instruction?
;if not a F4 then not a HLT
;set up SMM header to return
;to the HLT instruction
;limit 15-0
;base
;base
;data segment, DPL=0, present
;high limit =f, Gran =4K, 16 bit
;base
37

Related parts for ST486DX