Intel P4 processor SMM state save map |
| offset |
contents |
size |
notes |
| 7E00h |
reserved |
196 bytes |
| 7EC4h |
CR3 |
dword |
copy dumped for unknown purposes |
| 7EC8h |
PDPTR0 |
qword |
| 7ED0h |
PDPTR1 |
qword |
| 7ED8h |
PDPTR2 |
qword |
| 7EE0h |
PDPTR3 |
qword |
| 7EE8h |
??? |
dword |
0000_0001h |
| 7EECh |
??? |
byte |
12h |
| reserved |
byte |
| byte |
| byte |
| 7EF0h |
CR4 |
dword |
| 7EF4h |
??? |
dword |
0000_0000h |
| 7EF8h |
SMBASE |
dword |
| 7EFCh |
REVISION |
dword |
0003_0003h or 0003_0004h |
| 7F00h |
IO_RESTART |
word |
| 7F02h |
HLT_RESTART |
word |
| 7F04h |
ES |
bas |
dword |
| 7F08h |
ar |
dword |
shifted left by one, bit0=1 indicates NULL |
| 7F0Ch |
lim |
dword |
000x_xxxxh or xxxx_xFFFh, with bits 19...16 also in ar |
| 7F10h |
CS |
bas |
dword |
| 7F14h |
ar |
dword |
shifted left by one, bit0=1 indicates NULL |
| 7F18h |
lim |
dword |
000x_xxxxh or xxxx_xFFFh, with bits 19...16 also in ar |
| 7F1Ch |
SS |
bas |
dword |
| 7F20h |
ar |
dword |
shifted left by one, bit0=1 indicates NULL |
| 7F24h |
lim |
dword |
000x_xxxxh or xxxx_xFFFh, with bits 19...16 also in ar |
| 7F28h |
DS |
bas |
dword |
| 7F2Ch |
ar |
dword |
shifted left by one, bit0=1 indicates NULL |
| 7F30h |
lim |
dword |
000x_xxxxh or xxxx_xFFFh, with bits 19...16 also in ar |
| 7F34h |
FS |
bas |
dword |
| 7F38h |
ar |
dword |
shifted left by one, bit0=1 indicates NULL |
| 7F3Ch |
lim |
dword |
000x_xxxxh or xxxx_xFFFh, with bits 19...16 also in ar |
| 7F40h |
GS |
bas |
dword |
| 7F44h |
ar |
dword |
shifted left by one, bit0=1 indicates NULL |
| 7F48h |
lim |
dword |
000x_xxxxh or xxxx_xFFFh, with bits 19...16 also in ar |
| 7F4Ch |
GDTR |
bas |
dword |
| 7F50h |
lim |
dword |
| 7F54h |
IDTR |
bas |
dword |
| 7F58h |
lim |
dword |
| 7F5Ch |
LDTR |
bas |
dword |
| 7F60h |
lim |
dword |
000x_xxxxh only, with bits 19...16 also in ar |
| 7F64h |
ar |
word |
has no G bit |
| 7F66h |
??? |
word |
0002h |
| 7F68h |
EFLAGS |
dword |
copy dumped for unknown purposes |
| 7F6Ch |
TR |
bas |
dword |
| 7F70h |
ar |
dword |
shifted left by one, bit0=1 indicates NULL |
| 7F74h |
lim |
dword |
000x_xxxxh or xxxx_xFFFh, with bits 19...16 also in ar |
| 7F78h |
IO_RESTART_EDI |
dword |
| 7F7Ch |
IO_RESTART_EIP |
dword |
| 7F80h |
IO_RESTART_ECX |
dword |
| 7F84h |
IO_RESTART_ESI |
dword |
| 7F88h |
??? |
dword |
00130000h |
| 7F8Ch |
??? |
byte |
00h |
| A20M |
byte |
00h if A20M=flat, 30h if A20M=wrap |
| ??? |
byte |
FEh |
| ??? |
byte |
01h |
| 7F90h |
??? |
dword |
0000_0C00h |
| 7F94h |
??? |
dword |
03A4_FFB0h |
| 7F98h |
??? |
dword |
0000_0000h |
| 7F9Ch |
??? |
dword |
0008_4000h |
| 7FA0h |
IO_MEM_ADDR |
dword |
if rev=0004h |
| 7FA4h |
IO_MISC_INFO |
dword |
if rev=0004h |
| 7FA8h |
ES.sel |
dword |
| 7FACh |
CS.sel |
dword |
| 7FB0h |
SS.sel |
dword |
| 7FB4h |
DS.sel |
dword |
| 7FB8h |
FS.sel |
dword |
| 7FBCh |
GS.sel |
dword |
| 7FC0h |
LDTR.sel |
dword |
| 7FC4h |
TR.sel |
dword |
| 7FC8h |
DR7 |
dword |
| 7FCCh |
DR6 |
dword |
| 7FD0h |
EAX |
dword |
| 7FD4h |
ECX |
dword |
| 7FD8h |
EDX |
dword |
| 7FDCh |
EBX |
dword |
| 7FE0h |
ESP |
dword |
| 7FE4h |
EBP |
dword |
| 7FE8h |
ESI |
dword |
| 7FECh |
EDI |
dword |
| 7FF0h |
EIP |
dword |
| 7FF4h |
EFLAGS |
dword |
| 7FF8h |
CR3 |
dword |
| 7FFCh |
CR0 |
dword |
Intel/AMD processor state after SMM entry |
| register |
contents |
| selector |
base |
limit |
access rights |
| CS |
3000h #1 |
SMBASE |
(FFF)F_FFFFh |
8093h #2 |
| SS |
0000h |
0000_0000h |
(FFF)F_FFFFh |
8093h |
| DS |
0000h |
0000_0000h |
(FFF)F_FFFFh |
8093h |
| ES |
0000h |
0000_0000h |
(FFF)F_FFFFh |
8093h |
| FS |
0000h |
0000_0000h |
(FFF)F_FFFFh |
8093h |
| GS |
0000h |
0000_0000h |
(FFF)F_FFFFh |
8093h |
| EFLAGS |
0000_0002h |
| EIP |
0000_8000h |
| CR0 |
bits 0 (PE), 2 (EM), 3 (TS), and 31 (PG) cleared, rest unmodified |
| CR4 |
0000_0000h |
| DR7 |
0000_0400h |
| TEMP_DR6 |
0000_0000h |
| IN_REP |
false |
| IN_SMM |
true |
| IN_HLT |
false |
| IN_SHUTDOWN |
false |
| IN_FP_FREEZE |
false |
| SUPPRESS_INTERRUPTS |
false (both bits) |
| BLOCK_INIT |
true |
| BLOCK_SMI |
true |
| BLOCK_NMI |
true |
| LATCH_INIT |
true if INIT recognized together with SMI, else false |
| LATCH_SMI |
false |
| LATCH_NMI |
true if NMI recognized together with SMI, else false |
| FERR# |
unmodified |
| A20M# |
processor-specific |
| notes |
description |
| #1 |
On Intel P6-core processors the CS selector is loaded with SMBASE SHR 4. |
| #2 |
Like the data segments, CS is writeable too. |