From 68cc1ba3b65d178921fdd1610f02ae3e672b0fcb Mon Sep 17 00:00:00 2001 From: lzeng14 Date: Fri, 16 Nov 2012 01:24:31 +0000 Subject: Use IA32_IDT_GATE_DESCRIPTOR defined in BaseLib instead of local struct INTERRUPT_GATE_DESCRIPTOR. Signed-off-by: Star Zeng Reviewed-by: Jiewen Yao git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13948 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Acpi/BootScriptExecutorDxe/IA32/SetIdtEntry.c | 28 ++++++---------------- 1 file changed, 7 insertions(+), 21 deletions(-) (limited to 'MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/IA32/SetIdtEntry.c') diff --git a/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/IA32/SetIdtEntry.c b/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/IA32/SetIdtEntry.c index fbdf32b60b..04eba0d756 100644 --- a/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/IA32/SetIdtEntry.c +++ b/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/IA32/SetIdtEntry.c @@ -15,22 +15,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #include "ScriptExecute.h" -// -// INTERRUPT_GATE_DESCRIPTOR and SetIdtEntry () are used to setup IDT to do debug -// -#pragma pack(1) - -typedef struct { - UINT16 OffsetLow; - UINT16 SegmentSelector; - UINT16 Attributes; - UINT16 OffsetHigh; -} INTERRUPT_GATE_DESCRIPTOR; - -#define INTERRUPT_GATE_ATTRIBUTE 0x8e00 - -#pragma pack() /** Set a IDT entry for interrupt vector 3 for debug purpose. @@ -42,7 +27,7 @@ SetIdtEntry ( IN ACPI_S3_CONTEXT *AcpiS3Context ) { - INTERRUPT_GATE_DESCRIPTOR *IdtEntry; + IA32_IDT_GATE_DESCRIPTOR *IdtEntry; IA32_DESCRIPTOR *IdtDescriptor; UINTN S3DebugBuffer; @@ -63,11 +48,12 @@ SetIdtEntry ( // S3DebugBuffer = (UINTN) (AcpiS3Context->S3DebugBufferAddress); if (*(UINTN *)S3DebugBuffer != (UINTN) -1) { - IdtEntry = (INTERRUPT_GATE_DESCRIPTOR *)(IdtDescriptor->Base + (3 * sizeof (INTERRUPT_GATE_DESCRIPTOR))); - IdtEntry->OffsetLow = (UINT16)S3DebugBuffer; - IdtEntry->SegmentSelector = (UINT16)AsmReadCs ();; - IdtEntry->Attributes = (UINT16)INTERRUPT_GATE_ATTRIBUTE; - IdtEntry->OffsetHigh = (UINT16)(S3DebugBuffer >> 16); + IdtEntry = (IA32_IDT_GATE_DESCRIPTOR *)(IdtDescriptor->Base + (3 * sizeof (IA32_IDT_GATE_DESCRIPTOR))); + IdtEntry->Bits.OffsetLow = (UINT16)S3DebugBuffer; + IdtEntry->Bits.Selector = (UINT16)AsmReadCs (); + IdtEntry->Bits.Reserved_0 = 0; + IdtEntry->Bits.GateType = IA32_IDT_GATE_TYPE_INTERRUPT_32; + IdtEntry->Bits.OffsetHigh = (UINT16)(S3DebugBuffer >> 16); } ); } -- cgit v1.2.3