[ros-diffs] [tkreuzer] 35458: Move some architecture specific code from KiRosPrepareForSystemStartup into KiArchInitSystem, defined for each architecture. Enable KiRosBuildReservedMemoryMap for _M_AMD64

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Tue Aug 19 21:07:13 CEST 2008


Author: tkreuzer
Date: Tue Aug 19 14:07:13 2008
New Revision: 35458

URL: http://svn.reactos.org/svn/reactos?rev=35458&view=rev
Log:
Move some architecture specific code from KiRosPrepareForSystemStartup into KiArchInitSystem, defined for each architecture. Enable KiRosBuildReservedMemoryMap for _M_AMD64

Modified:
    branches/ros-amd64-bringup/reactos/ntoskrnl/ke/freeldr.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/ke/i386/cpu.c
    branches/ros-amd64-bringup/reactos/ntoskrnl/ke/powerpc/cpu.c

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/freeldr.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ke/freeldr.c?rev=35458&r1=35457&r2=35458&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ke/freeldr.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ke/freeldr.c [iso-8859-1] Tue Aug 19 14:07:13 2008
@@ -949,7 +949,7 @@
     /* Build entries for ReactOS memory ranges, which uses ARC Descriptors */
     KiRosBuildOsMemoryMap();
 
-#ifdef _M_IX86
+#if defined(_M_IX86) || defined(_M_AMD64)
     /* Build entries for the reserved map, which uses ARC Descriptors */
     KiRosBuildReservedMemoryMap();
 #endif
@@ -1266,42 +1266,15 @@
 {
     PLOADER_PARAMETER_BLOCK NtLoaderBlock;
     ULONG size, i = 0, *ent;
-#if defined(_M_IX86)
-    PKTSS Tss;
-    PKGDTENTRY TssEntry;
-
-    /* Load the GDT and IDT */
-    Ke386SetGlobalDescriptorTable(*(PKDESCRIPTOR)&KiGdtDescriptor.Limit);
-    Ke386SetInterruptDescriptorTable(*(PKDESCRIPTOR)&KiIdtDescriptor.Limit);
-
-    /* Initialize the boot TSS */
-    Tss = &KiBootTss;
-    TssEntry = &KiBootGdt[KGDT_TSS / sizeof(KGDTENTRY)];
-    TssEntry->HighWord.Bits.Type = I386_TSS;
-    TssEntry->HighWord.Bits.Pres = 1;
-    TssEntry->HighWord.Bits.Dpl = 0;
-    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);
-#endif
-
-#if defined(_M_PPC)
-    // Zero bats.  We might have residual bats set that will interfere with
-    // our mapping of ofwldr.
-    for (i = 0; i < 4; i++)
-    {
-        SetBat(i, 0, 0, 0); SetBat(i, 1, 0, 0);
-    }
-    KiSetupSyscallHandler();
-    DbgPrint("Kernel Power (%08x)\n", LoaderBlock);
-    DbgPrint("ArchExtra (%08x)!\n", LoaderBlock->ArchExtra);
-#endif
 
     /* Save pointer to ROS Block */
     KeRosLoaderBlock = LoaderBlock;
 
     /* Get debugging function */
     FrLdrDbgPrint = LoaderBlock->FrLdrDbgPrint;
+
+    /* Per architecture initialisazion code */
+    KiArchInitSystem();
 
     /* Save memory manager data */
     KeMemoryMapRangeCount = 0;

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/i386/cpu.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ke/i386/cpu.c?rev=35458&r1=35457&r2=35458&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ke/i386/cpu.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ke/i386/cpu.c [iso-8859-1] Tue Aug 19 14:07:13 2008
@@ -1036,3 +1036,24 @@
     /* Capture the control state */
     KiSaveProcessorControlState(State);
 }
+
+VOID
+KiArchInitSystem()
+{
+    PKTSS Tss;
+    PKGDTENTRY TssEntry;
+
+    /* Load the GDT and IDT */
+    Ke386SetGlobalDescriptorTable(*(PKDESCRIPTOR)&KiGdtDescriptor.Limit);
+    Ke386SetInterruptDescriptorTable(*(PKDESCRIPTOR)&KiIdtDescriptor.Limit);
+
+    /* Initialize the boot TSS */
+    Tss = &KiBootTss;
+    TssEntry = &KiBootGdt[KGDT_TSS / sizeof(KGDTENTRY)];
+    TssEntry->HighWord.Bits.Type = I386_TSS;
+    TssEntry->HighWord.Bits.Pres = 1;
+    TssEntry->HighWord.Bits.Dpl = 0;
+    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);
+}

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/powerpc/cpu.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ke/powerpc/cpu.c?rev=35458&r1=35457&r2=35458&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ke/powerpc/cpu.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ke/powerpc/cpu.c [iso-8859-1] Tue Aug 19 14:07:13 2008
@@ -275,3 +275,19 @@
     /* Capture the control state */
     KiSaveProcessorControlState(State);
 }
+
+VOID
+KiArchInitSystem()
+{
+    ULONG i;
+
+    // Zero bats.  We might have residual bats set that will interfere with
+    // our mapping of ofwldr.
+    for (i = 0; i < 4; i++)
+    {
+        SetBat(i, 0, 0, 0); SetBat(i, 1, 0, 0);
+    }
+    KiSetupSyscallHandler();
+    DbgPrint("Kernel Power (%08x)\n", KeRosLoaderBlock);
+    DbgPrint("ArchExtra (%08x)!\n", KeRosLoaderBlock->ArchExtra);
+}



More information about the Ros-diffs mailing list