Intel Extensible Firmware Interface User Manual
Page 721

Protocols
— Debugger Support
Version 1.10
12/01/02
16-7
NOTE
When the context record field is larger than the register being stored in it, the upper bits of the
context record field are unused and ignored.
// System context for IA-32 processors
typedef struct {
UINT32
ExceptionData;
// ExceptionData is
// additional data pushed
// on the stack by some
// types of IA-32
// exceptions
EFI_FXSAVE_STATE
FxSaveState;
UINT32
Dr0, Dr1, Dr2, Dr3, Dr6, Dr7;
UINT32
Cr0, Cr1 /* Reserved */, Cr2, Cr3, Cr4;
UINT32
Eflags;
UINT32
Ldtr, Tr;
UINT32
Gdtr[2], Idtr[2];
UINT32
Eip;
UINT32
Gs, Fs, Es, Ds, Cs, Ss;
UINT32
Edi, Esi, Ebp, Esp, Ebx, Edx, Ecx, Eax;
} EFI_SYSTEM_CONTEXT_IA32;
// FXSAVE_STATE - FP / MMX / XMM registers
typedef struct {
UINT16
Fcw;
UINT16
Fsw;
UINT16
Ftw;
UINT16
Opcode;
UINT32
Eip;
UINT16
Cs;
UINT16
Reserved1;
UINT32
DataOffset;
UINT16
Ds;
UINT8
Reserved2[10];
UINT8
St0Mm0[10], Reserved3[6];
UINT8
St0Mm1[10], Reserved4[6];
UINT8
St0Mm2[10], Reserved5[6];
UINT8
St0Mm3[10], Reserved6[6];
UINT8
St0Mm4[10], Reserved7[6];
UINT8
St0Mm5[10], Reserved8[6];
UINT8
St0Mm6[10], Reserved9[6];
UINT8
St0Mm7[10], Reserved10[6];
UINT8
Reserved11[22 * 16];
} EFI_FXSAVE_STATE;