From dc31771382e9892bedaa1dc917df8ec10a91be25 Mon Sep 17 00:00:00 2001 From: mdkinney Date: Mon, 27 Oct 2008 02:20:02 +0000 Subject: [PATCH] Add X64 Gate Descriptor git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6247 6f19259b-4bc3-4df7-8a09-765794883524 --- MdePkg/Include/Library/BaseLib.h | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) 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 ///