From 8876d8092b8cfacc9334f4219ac356a434b45468 Mon Sep 17 00:00:00 2001 From: Dmitry Gorbachev Date: Sun, 2 Aug 2009 21:27:26 +0000 Subject: [PATCH] Remove r42305 hack, preserve racial purity of KiSystemStartupReal. svn path=/trunk/; revision=42352 --- reactos/ntoskrnl/ke/i386/kiinit.c | 36 +++++++++---------------------- 1 file changed, 10 insertions(+), 26 deletions(-) diff --git a/reactos/ntoskrnl/ke/i386/kiinit.c b/reactos/ntoskrnl/ke/i386/kiinit.c index d569517e842..11d1762960a 100644 --- a/reactos/ntoskrnl/ke/i386/kiinit.c +++ b/reactos/ntoskrnl/ke/i386/kiinit.c @@ -712,34 +712,18 @@ KiSystemStartupReal(IN PLOADER_PARAMETER_BLOCK LoaderBlock) Ke386SetDs(KGDT_R3_DATA | RPL_MASK); Ke386SetEs(KGDT_R3_DATA | RPL_MASK); - /* HACK compensates for KiRosPrepareForSystemStartup hack */ - if ((ULONG)Idt == KiIdtDescriptor.Base) - { - USHORT FlippedSelector; + /* Save NMI and double fault traps */ + RtlCopyMemory(&NmiEntry, &Idt[2], sizeof(KIDTENTRY)); + RtlCopyMemory(&DoubleFaultEntry, &Idt[8], sizeof(KIDTENTRY)); - FlippedSelector = KiIdt[2].Selector; - KiIdt[2].Selector = KiIdt[2].ExtendedOffset; - KiIdt[2].ExtendedOffset = FlippedSelector; + /* Copy kernel's trap handlers */ + RtlCopyMemory(Idt, + (PVOID)KiIdtDescriptor.Base, + KiIdtDescriptor.Limit + 1); - FlippedSelector = KiIdt[8].Selector; - KiIdt[8].Selector = KiIdt[8].ExtendedOffset; - KiIdt[8].ExtendedOffset = FlippedSelector; - } - else - { - /* Save NMI and double fault traps */ - RtlCopyMemory(&NmiEntry, &Idt[2], sizeof(KIDTENTRY)); - RtlCopyMemory(&DoubleFaultEntry, &Idt[8], sizeof(KIDTENTRY)); - - /* Copy kernel's trap handlers */ - RtlCopyMemory(Idt, - (PVOID)KiIdtDescriptor.Base, - KiIdtDescriptor.Limit + 1); - - /* Restore NMI and double fault */ - RtlCopyMemory(&Idt[2], &NmiEntry, sizeof(KIDTENTRY)); - RtlCopyMemory(&Idt[8], &DoubleFaultEntry, sizeof(KIDTENTRY)); - } + /* Restore NMI and double fault */ + RtlCopyMemory(&Idt[2], &NmiEntry, sizeof(KIDTENTRY)); + RtlCopyMemory(&Idt[8], &DoubleFaultEntry, sizeof(KIDTENTRY)); AppCpuInit: /* Loop until we can release the freeze lock */