Voici la structure de données d'un SMM (System Managment Mode).
Intel SSM (Format du SMRAM)
Déplacement du SMBASE | Taille | Description |
---|---|---|
FFFCh | 4 octets | Registre CR0 |
FFF8h | 4 octets | Registre CR3 |
FFF4h | 4 octets | Registre EFLAGS |
FFF0h | 4 octets | Registre EIP |
FFECh | 4 octets | Registre EDI |
FFE8h | 4 octets | Registre ESI |
FFE4h | 4 octets | Registre EBP |
FFE0h | 4 octets | Registre ESP |
FFDCh | 4 octets | Registre EBX |
FFD8h | 4 octets | Registre EDX |
FFD4h | 4 octets | Registre ECX |
FFD0h | 4 octets | Registre EAX |
FFCCh | 4 octets | Registre DR6 |
FFC8h | 4 octets | Registre DR7 |
FFC4h | 4 octets | TR |
FFC0h | 4 octets | LDTR |
FFBCh | 4 octets | Registre GS |
FFB8h | 4 octets | Registre FS |
FFB4h | 4 octets | Registre DS |
FFB0h | 4 octets | Registre SS |
FFACh | 4 octets | Registre CS |
FFA8h | 4 octets | Registre ES |
FFA4h | 4 octets | DWORD d'une trappe d'entrée/sortie |
FFA0h | 8 octets | Réservé |
FF9Ch | 4 octets | Registre EIP d'une trappe d'entrée/sortie |
FF94h | 8 octets | Réservé |
FF90h | 4 octets | Base d'un IDT |
FF8Ch | 4 octets | Limite d'un IDT |
FF88h | 4 octets | Base d'un GDT |
FF84h | 4 octets | Limite d'un GDT |
FF80h | 4 octets | Attribut d'un TSS |
FF7Ch | 4 octets | Base d'un TSS |
FF78h | 4 octets | Limite d'un TSS |
FF74h | 4 octets | Attribut d'un LDT |
FF70h | 4 octets | Base d'un LDT |
FF6Ch | 4 octets | Limite d'un LDT |
FF68h | 4 octets | Attribut d'un registre GS |
FF64h | 4 octets | Base d'un registre GS |
FF60h | 4 octets | Limite d'un registre GS |
FF5Ch | 4 octets | Attribut d'un registre FS |
FF58h | 4 octets | Base d'un registre FS |
FF54h | 4 octets | Limite d'un registre FS |
FF50h | 4 octets | Attribut d'un registre DS |
FF4Ch | 4 octets | Base d'un registre DS |
FF48h | 4 octets | Limite d'un registre DS |
FF44h | 4 octets | Attribut d'un registre SS |
FF40h | 4 octets | Base d'un registre SS |
FF3Ch | 4 octets | Limite d'un registre SS |
FF38h | 4 octets | Attribut d'un registre CS |
FF34h | 4 octets | Base d'un registre CS |
FF30h | 4 octets | Limite d'un registre CS |
FF2Ch | 4 octets | Attribut d'un registre ES |
FF28h | 4 octets | Base d'un registre ES |
FF24h | 4 octets | Limite d'un registre ES |
FF18h | 12 octets | Réservé |
FF14h | 4 octets | Registre CR2 |
FF10h | 4 octets | Registre CR4 |
FF0Ch | 4 octets | Redémarrage d'entrée/sortie du registre ESI |
FF08h | 4 octets | Redémarrage d'entrée/sortie du registre ECX |
FF04h | 4 octets | Redémarrage d'entrée/sortie du registre EDI |
FF02h | 2 octets | Redémarrage automatique d'une fente HALT |
FF00h | 2 octets | Redémarrage d'une fente de trappe d'entrée/sortie |
FEFCh | 4 octets | Identificateur de révision SMM |
FEF8h | 4 octets | Fente SMBASE |
7E00h | 248 octets | Réservé |
Cyrix SMM (Format du SMRAM)
Déplacement du SMBASE | Taille | Description | |
---|---|---|---|
+00h | 4 octets | Registre SMHR pointant ici (M2) | |
-04h | 4 octets | Registre DR7 | |
-08h | 4 octets | Registre EFLAGS | |
-0Ch | 4 octets | Registre CR0 | |
-10h | 4 octets | Registre EIP courant | |
-14h | 4 octets | Registre EIP suivant | |
-18h | 4 octets | Sélecteur de registre CS | |
-20h | 8 octets | Descripteur de registre CS | |
-24h | 4 octets | Champ de bits : | |
Bit | Description | ||
22 à 21 | CPL | ||
15 | Indicateur SMI imbriqué | ||
13 | Indicateur interne SMI | ||
4 | SMI sur l'instruction HLT | ||
3 | Entrée logiciel SMI | ||
2 | Indicateur REP INSx/OUTSx | ||
1 | Indicateur IN/INSx/OUT/OUTSx | ||
0 | Drapeau inscriptible du segment de code | ||
-26h | 2 octets | Taille des données d'écriture d'entrée/sortie | |
-28h | 2 octets | Adresse d'écriture d'entrée/sortie | |
-2Ch | 2 octets | Écriture des données d'entrée/sortie | |
-30h | 4 octets | Registres ESI ou EDI |
Ancien style AMD SMM (Format du SMRAM)
Déplacement du SMBASE | Taille | Description |
---|---|---|
60000h | 4 octets | Registre CR0 |
60004h | 4 octets | Registre EFLAGS |
60008h | 4 octets | Registre EIP |
6000Ch | 4 octets | Registre EDI |
60010h | 4 octets | Registre ESI |
60014h | 4 octets | Registre EBP |
60018h | 4 octets | Registre ESP |
6001Ch | 4 octets | Registre EBX |
60020h | 4 octets | Registre EDX |
60024h | 4 octets | Registre ECX |
60028h | 4 octets | Registre EAX |
6002Ch | 4 octets | Registre DR6 |
60030h | 4 octets | Registre DR7 |
60034h | 4 octets | Sélecteur TR |
60038h | 4 octets | Sélecteur LDT |
6003Ch | 4 octets | Sélecteur de registre GS |
60040h | 4 octets | Sélecteur de registre FS |
60044h | 4 octets | Sélecteur de registre DS |
60048h | 4 octets | Sélecteur de registre SS |
6004Ch | 4 octets | Sélecteur de registre CS |
60050h | 4 octets | Sélecteur de registre ES |
60054h | 4 octets | Attribut d'un descripteur TSS |
60058h | 4 octets | Base d'un descripteur TSS |
6005Ch | 4 octets | Limite d'un descripteur TSS |
60060h | 4 octets | Réservé |
60064h | 4 octets | Base d'un IDTR |
60068h | 4 octets | Limite d'un IDTR |
6006Ch | 4 octets | Drapeau de dépassement REP OUTS |
60070h | 4 octets | Base d'un GDTR |
60074h | 4 octets | Limite d'un GDTR |
60078h | 4 octets | Attribut d'un LDT |
6007Ch | 4 octets | Base d'un LDT |
60080h | 4 octets | Limite d'un LDT |
60084h | 4 octets | Attribut d'un registre GS |
60088h | 4 octets | Base d'un registre GS |
6008Ch | 4 octets | Limite d'un registre GS |
60090h | 4 octets | Attribut d'un registre FS |
60094h | 4 octets | Base d'un registre FS |
60098h | 4 octets | Limite d'un registre FS |
6009Ch | 4 octets | Attribut d'un registre DS |
600A0h | 4 octets | Base d'un registre DS |
600A4h | 4 octets | Limite d'un registre DS |
600A8h | 4 octets | Attribut d'un registre SS |
600ACh | 4 octets | Base d'un registre SS |
600B0h | 4 octets | Limite d'un registre SS |
600B4h | 4 octets | Attribut d'un registre CS |
600B8h | 4 octets | Base d'un registre CS |
600BCh | 4 octets | Limite d'un registre CS |
600C0h | 4 octets | Attribut d'un registre ES |
600C4h | 4 octets | Base d'un registre ES |
600C8h | 4 octets | Limite d'un registre ES |
... | ||
60100h | 4 octets | Registre temporaire TST |
60104h | 4 octets | Registre temporaire IDX |
60108h | 4 octets | Registre temporaire TMPH |
6010Ch | 4 octets | Registre temporaire TMPG |
60110h | 4 octets | Registre temporaire TMPF |
60114h | 4 octets | Registre temporaire TMPE |
60118h | 4 octets | Registre temporaire TMPD |
6011Ch | 4 octets | Registre temporaire TMPC |
60120h | 4 octets | Registre temporaire TMPB |
60124h | 4 octets | LEIP (dernier registre EIP) |
Champs additionnel AMD Am486DXLV | ||
60128h | 4 octets | PEIP |
6012Ch | 36 octets | Non-utilisé |
60150h | 88 octets | Registres internes des nombres flottants |
IBM SMM (Format du SMRAM)
Déplacement du SMBASE | Taille | Description |
---|---|---|
60000h | 4 octets | Registre CR0 |
60004h | 4 octets | Registre EFLAGS |
60008h | 4 octets | Registre EIP |
6000Ch | 4 octets | Registre EDI |
60010h | 4 octets | Registre ESI |
60014h | 4 octets | Registre EBP |
60018h | 4 octets | Registre ESP |
6001Ch | 4 octets | Registre EBX |
60020h | 4 octets | Registre EDX |
60024h | 4 octets | Registre ECX |
60028h | 4 octets | Registre EAX |
6002Ch | 4 octets | Registre DR6 |
60030h | 4 octets | Registre DR7 |
60034h | 4 octets | Sélecteur TR |
60038h | 4 octets | Sélecteur LDT |
6003Ch | 4 octets | Sélecteur GS |
60040h | 4 octets | Sélecteur FS |
60044h | 4 octets | Sélecteur DS |
60048h | 4 octets | Sélecteur SS |
6004Ch | 4 octets | Sélecteur CS |
60050h | 4 octets | Sélecteur ES |
60054h | 4 octets | Attribut d'un descripteur TSS |
60058h | 4 octets | Base d'un descripteur TSS |
6005Ch | 4 octets | Limite d'un descripteur TSS |
60060h | 4 octets | Réservé |
60064h | 4 octets | Base d'un IDTR |
60068h | 4 octets | Limite d'un IDTR |
6006Ch | 4 octets | Drapeau de dépassement REP OUTS |
60070h | 4 octets | Base d'un GDTR |
60074h | 4 octets | Limite d'un GDTR |
60078h | 4 octets | Attribut d'un LDT |
6007Ch | 4 octets | Base d'un LDT |
60080h | 4 octets | Limite d'un LDT |
60084h | 4 octets | Attribut d'un GS |
60088h | 4 octets | Base d'un GS |
6008Ch | 4 octets | Limite d'un GS |
60090h | 4 octets | Attribut d'un FS |
60094h | 4 octets | Base d'un FS |
60098h | 4 octets | Limite d'un FS |
6009Ch | 4 octets | Attribut d'un DS |
600A0h | 4 octets | Base d'un DS |
600A4h | 4 octets | Limite d'un DS |
600A8h | 4 octets | Attribut d'un SS |
600ACh | 4 octets | Base d'un SS |
600B0h | 4 octets | Limite d'un SS |
600B4h | 4 octets | Attribut d'un CS |
600B8h | 4 octets | Base d'un CS |
600BCh | 4 octets | Limite d'un CS |
600C0h | 4 octets | Attribut d'un ES |
600C4h | 4 octets | Base d'un ES |
600C8h | 4 octets | Limite d'un ES |
... | ||
60100h | 4 octets | Registre temporaire TST |
60104h | 4 octets | Registre temporaire IDX |
60108h | 4 octets | Registre temporaire TMPH |
6010Ch | 4 octets | Registre temporaire TMPG |
60110h | 4 octets | Registre temporaire TMPF |
60114h | 4 octets | Registre temporaire TMPE |
60118h | 4 octets | Registre temporaire TMPD |
6011Ch | 4 octets | Registre temporaire TMPC |
60120h | 4 octets | Registre temporaire TMPB |
60124h | 4 octets | Registre temporaire TMPA |
60128h | 4 octets | Registre CR2 |
6012Ch | 4 octets | Registre CR3 |
60130h | 4 octets | MSR 1001h (0 à 31) |
60134h | 4 octets | MSR 1001h (63 à 32) |
60138h | 4 octets | MSR 1000h (0 à 31) |
6013Ch | 4 octets | Registre DR0 |
60140h | 4 octets | Registre DR1 |
60144h | 4 octets | Registre DR2 |
60148h | 4 octets | Registre DR3 |
6014Ch | 4 octets | PEIP (Précédent pointeur d'instruction d'espace mémoire cachée) |
Voir également
Langage de programmation - Assembleur 80x86 - Mode d'adressage du processeur - Mode SMM
Dernière mise à jour : Lundi, le 20 mai 2019