diff --git a/MdePkg/Include/Library/BaseLib.h b/MdePkg/Include/Library/BaseLib.h index 24f93c9bb1..01d7f0eea9 100644 --- a/MdePkg/Include/Library/BaseLib.h +++ b/MdePkg/Include/Library/BaseLib.h @@ -5079,17 +5079,39 @@ typedef struct { /// /// Byte packed structure for an Interrupt Gate Descriptor /// +#if defined (MDE_CPU_IA32) + typedef union { struct { - UINT32 OffsetLow:16; /// Offset bits 15..0 - UINT32 Selector:16; /// Selector - UINT32 Reserved_0:8; /// Reserved - UINT32 GateType:8; /// Gate Type. See #defines above - UINT32 OffsetHigh:16; /// Offset bits 31..16 + UINT32 OffsetLow:16; // Offset bits 15..0 + UINT32 Selector:16; // Selector + UINT32 Reserved_0:8; // Reserved + UINT32 GateType:8; // Gate Type. See #defines above + UINT32 OffsetHigh:16; // Offset bits 31..16 } Bits; UINT64 Uint64; } IA32_IDT_GATE_DESCRIPTOR; +#endif + +#if defined (MDE_CPU_X64) + +typedef union { + struct { + UINT32 OffsetLow:16; // Offset bits 15..0 + UINT32 Selector:16; // Selector + UINT32 Reserved_0:8; // Reserved + UINT32 GateType:8; // Gate Type. See #defines above + UINT32 OffsetHigh:16; // Offset bits 31..16 + UINT32 OffsetUpper:32; // Offset bits 63..32 + UINT32 Reserved_1:32; // Reserved + } Bits; + UINT64 Uint64; + UINT64 Uint64_1; +} IA32_IDT_GATE_DESCRIPTOR; + +#endif + /// /// Byte packed structure for an FP/SSE/SSE2 context ///