diff --git a/reactos/ntoskrnl/kdbg/kdb.c b/reactos/ntoskrnl/kdbg/kdb.c index 4e49aab9272..612293c5206 100644 --- a/reactos/ntoskrnl/kdbg/kdb.c +++ b/reactos/ntoskrnl/kdbg/kdb.c @@ -320,10 +320,7 @@ KdbpStepOverInstruction(ULONG_PTR Eip) BOOLEAN KdbpStepIntoInstruction(ULONG_PTR Eip) { - struct __attribute__((packed)) { - USHORT Limit; - ULONG Base; - } Idtr; + KDESCRIPTOR Idtr; UCHAR Mem[2]; INT IntVect; ULONG IntDesc[2]; @@ -353,7 +350,7 @@ KdbpStepIntoInstruction(ULONG_PTR Eip) } /* Read the interrupt descriptor table register */ - asm volatile("sidt %0" : : "m"(Idtr)); + asm volatile("sidt %0" : : "m"(Idtr.Limit)); if (IntVect >= (Idtr.Limit + 1) / 8) { /*KdbpPrint("IDT does not contain interrupt vector %d\n.", IntVect);*/ diff --git a/reactos/ntoskrnl/kdbg/kdb_cli.c b/reactos/ntoskrnl/kdbg/kdb_cli.c index 8e4e13a28c7..ce91b37a609 100644 --- a/reactos/ntoskrnl/kdbg/kdb_cli.c +++ b/reactos/ntoskrnl/kdbg/kdb_cli.c @@ -411,10 +411,7 @@ KdbpCmdRegs(ULONG Argc, PCHAR Argv[]) else if (Argv[0][0] == 'c') /* cregs */ { ULONG Cr0, Cr2, Cr3, Cr4; - struct __attribute__((packed)) { - USHORT Limit; - ULONG Base; - } Gdtr, Ldtr, Idtr; + KDESCRIPTOR Gdtr, Ldtr, Idtr; ULONG Tr; STATIC CONST PCHAR Cr0Bits[32] = { " PE", " MP", " EM", " TS", " ET", " NE", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, @@ -431,9 +428,9 @@ KdbpCmdRegs(ULONG Argc, PCHAR Argv[]) Cr4 = KdbCurrentTrapFrame->Cr4; /* Get descriptor table regs */ - asm volatile("sgdt %0" : : "m"(Gdtr)); - asm volatile("sldt %0" : : "m"(Ldtr)); - asm volatile("sidt %0" : : "m"(Idtr)); + asm volatile("sgdt %0" : : "m"(Gdtr.Limit)); + asm volatile("sldt %0" : : "m"(Ldtr.Limit)); + asm volatile("sidt %0" : : "m"(Idtr.Limit)); /* Get the task register */ asm volatile("str %0" : "=g"(Tr));