- Remove a hack from KiGetMachineBootPointers and set the TSS selector properly in...
authorStefan Ginsberg <stefanginsberg@gmail.com>
Wed, 14 Oct 2009 18:07:29 +0000 (18:07 +0000)
committerStefan Ginsberg <stefanginsberg@gmail.com>
Wed, 14 Oct 2009 18:07:29 +0000 (18:07 +0000)
- Use KGDT_TSS in WinLdrSetProcessorContext instead of a hardcoded value.

svn path=/trunk/; revision=43462

reactos/boot/freeldr/freeldr/windows/wlmemory.c
reactos/ntoskrnl/ke/freeldr.c
reactos/ntoskrnl/ke/i386/kiinit.c

index be78612..313413e 100644 (file)
@@ -919,7 +919,7 @@ WinLdrSetProcessorContext(PVOID GdtIdt, IN ULONG Pcr, IN ULONG Tss)
        Ke386SetLocalDescriptorTable(Ldt);
 
        // Load TSR
-       Ke386SetTr(0x28);
+       Ke386SetTr(KGDT_TSS);
 
        // Clear GS
        Ke386SetGs(0);
index d1a4c17..6099c58 100644 (file)
@@ -1289,6 +1289,9 @@ KiRosPrepareForSystemStartup(IN ULONG Dummy,
     TssEntry->BaseLow = (USHORT)((ULONG_PTR)Tss & 0xFFFF);
     TssEntry->HighWord.Bytes.BaseMid = (UCHAR)((ULONG_PTR)Tss >> 16);
     TssEntry->HighWord.Bytes.BaseHi = (UCHAR)((ULONG_PTR)Tss >> 24);
+
+    /* Set the TSS selector */
+    Ke386SetTr(KGDT_TSS);
 #endif
 
 #if defined(_M_PPC)
@@ -1351,5 +1354,3 @@ KiRosPrepareForSystemStartup(IN ULONG Dummy,
     /* Do general System Startup */
     KiSystemStartupReal(NtLoaderBlock);
 }
-
-/* EOF */
index 70edc21..e8a5e5d 100644 (file)
@@ -621,7 +621,6 @@ KiGetMachineBootPointers(IN PKGDTENTRY *Gdt,
 
     /* Get TSS and FS Selectors */
     Tr = Ke386GetTr();
-    if (Tr != KGDT_TSS) Tr = KGDT_TSS; // FIXME: HACKHACK
     Fs = Ke386GetFs();
 
     /* Get PCR Selector, mask it and get its GDT Entry */