[ros-diffs] [tkreuzer] 44205: - add BAUDRATE=115000 to boot command line - Improve the code in wlmemory.c, no real functional change

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Mon Nov 16 22:56:30 CET 2009


Author: tkreuzer
Date: Mon Nov 16 22:56:29 2009
New Revision: 44205

URL: http://svn.reactos.org/svn/reactos?rev=44205&view=rev
Log:
- add BAUDRATE=115000 to boot command line
- Improve the code in wlmemory.c, no real functional change


Modified:
    branches/ros-amd64-bringup/reactos/boot/bootdata/txtsetup.sif
    branches/ros-amd64-bringup/reactos/boot/freeldr/freeldr/windows/amd64/wlmemory.c

Modified: branches/ros-amd64-bringup/reactos/boot/bootdata/txtsetup.sif
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/boot/bootdata/txtsetup.sif?rev=44205&r1=44204&r2=44205&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/boot/bootdata/txtsetup.sif [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/boot/bootdata/txtsetup.sif [iso-8859-1] Mon Nov 16 22:56:29 2009
@@ -50,7 +50,7 @@
 [SetupData]
 DefaultPath = \ReactOS
 OsLoadOptions = "/NOGUIBOOT /NODEBUG"
-DbgOsLoadOptions = "/NOGUIBOOT /DEBUGPORT=COM2"
+DbgOsLoadOptions = "/NOGUIBOOT /DEBUGPORT=COM2 /BAUDRATE=115200"
 ;OsLoadOptions = "/NOGUIBOOT /DEBUGPORT=SCREEN"
 ;OsLoadOptions = "/NOGUIBOOT /DEBUGPORT=BOCHS"
 

Modified: branches/ros-amd64-bringup/reactos/boot/freeldr/freeldr/windows/amd64/wlmemory.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/boot/freeldr/freeldr/windows/amd64/wlmemory.c?rev=44205&r1=44204&r2=44205&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/boot/freeldr/freeldr/windows/amd64/wlmemory.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/boot/freeldr/freeldr/windows/amd64/wlmemory.c [iso-8859-1] Mon Nov 16 22:56:29 2009
@@ -15,23 +15,13 @@
 
 //extern ULONG LoaderPagesSpanned;
 
-#define HYPER_SPACE_ENTRY       0x300
-
-// This is needed only for SetProcessorContext routine
-#pragma pack(2)
-	typedef struct
-	{
-		USHORT Limit;
-		ULONG Base;
-	} GDTIDT;
-#pragma pack(4)
+#define HYPER_SPACE_ENTRY       0x1EE
 
 /* GLOBALS ***************************************************************/
 
-//PHARDWARE_PTE PDE;
+PHARDWARE_PTE PxeBase;
 //PHARDWARE_PTE HalPageTable;
 
-PPAGE_DIRECTORY_AMD64 pPML4;
 
 /* FUNCTIONS **************************************************************/
 
@@ -44,8 +34,8 @@
     DPRINTM(DPRINT_WINDOWS,">>> MempAllocatePageTables\n");
 
 	/* Allocate a page for the PML4 */
-	pPML4 = MmAllocateMemoryWithType(PAGE_SIZE, LoaderMemoryData);
-    if (!pPML4)
+	PxeBase = MmAllocateMemoryWithType(PAGE_SIZE, LoaderMemoryData);
+    if (!PxeBase)
     {
         DPRINTM(DPRINT_WINDOWS,"failed to allocate PML4\n");
         return FALSE;
@@ -54,14 +44,14 @@
 	// FIXME: Physical PTEs = FirmwareTemporary ?
 
 	/* Zero the PML4 */
-	RtlZeroMemory(pPML4, PAGE_SIZE);
+	RtlZeroMemory(PxeBase, PAGE_SIZE);
 
 	/* The page tables are located at 0xfffff68000000000 
 	 * We create a recursive self mapping through all 4 levels at 
 	 * virtual address 0xfffff6fb7dbedf68 */
-	pPML4->Pde[VAtoPXI(PXE_BASE)].Valid = 1;
-	pPML4->Pde[VAtoPXI(PXE_BASE)].Write = 1;
-	pPML4->Pde[VAtoPXI(PXE_BASE)].PageFrameNumber = PtrToPfn(pPML4);
+	PxeBase[VAtoPXI(PXE_BASE)].Valid = 1;
+	PxeBase[VAtoPXI(PXE_BASE)].Write = 1;
+	PxeBase[VAtoPXI(PXE_BASE)].PageFrameNumber = PtrToPfn(PxeBase);
 
     // FIXME: map PDE's for hals memory mapping
 
@@ -70,57 +60,57 @@
 	return TRUE;
 }
 
-PPAGE_DIRECTORY_AMD64
-MempGetOrCreatePageDir(PPAGE_DIRECTORY_AMD64 pDir, ULONG Index)
-{
-	PPAGE_DIRECTORY_AMD64 pSubDir;
-
-	if (!pDir)
+PHARDWARE_PTE
+MempGetOrCreatePageDir(PHARDWARE_PTE PdeBase, ULONG Index)
+{
+	PHARDWARE_PTE SubDir;
+
+	if (!PdeBase)
 		return NULL;
 
-	if (!pDir->Pde[Index].Valid)
-	{
-		pSubDir = MmAllocateMemoryWithType(PAGE_SIZE, LoaderMemoryData);
-		if (!pSubDir)
+	if (!PdeBase[Index].Valid)
+	{
+		SubDir = MmAllocateMemoryWithType(PAGE_SIZE, LoaderMemoryData);
+		if (!SubDir)
 			return NULL;
-		RtlZeroMemory(pSubDir, PAGE_SIZE);
-		pDir->Pde[Index].PageFrameNumber = PtrToPfn(pSubDir);
-		pDir->Pde[Index].Valid = 1;
-		pDir->Pde[Index].Write = 1;
+		RtlZeroMemory(SubDir, PAGE_SIZE);
+		PdeBase[Index].PageFrameNumber = PtrToPfn(SubDir);
+		PdeBase[Index].Valid = 1;
+		PdeBase[Index].Write = 1;
 	}
 	else
 	{
-		pSubDir = (PPAGE_DIRECTORY_AMD64)((ULONGLONG)(pDir->Pde[Index].PageFrameNumber) * PAGE_SIZE);
-	}
-	return pSubDir;
+		SubDir = (PVOID)((ULONG64)(PdeBase[Index].PageFrameNumber) * PAGE_SIZE);
+	}
+	return SubDir;
 }
 
 BOOLEAN
 MempMapSinglePage(ULONG64 VirtualAddress, ULONG64 PhysicalAddress)
 {
-	PPAGE_DIRECTORY_AMD64 pDir3, pDir2, pDir1;
+	PHARDWARE_PTE PpeBase, PdeBase, PteBase;
 	ULONG Index;
 
-	pDir3 = MempGetOrCreatePageDir(pPML4, VAtoPXI(VirtualAddress));
-	pDir2 = MempGetOrCreatePageDir(pDir3, VAtoPPI(VirtualAddress));
-	pDir1 = MempGetOrCreatePageDir(pDir2, VAtoPDI(VirtualAddress));
-
-	if (!pDir1)
-	{
-        DPRINTM(DPRINT_WINDOWS,"!!!No Dir %p, %p, %p, %p\n", pPML4, pDir3, pDir2, pDir1);
+	PpeBase = MempGetOrCreatePageDir(PxeBase, VAtoPXI(VirtualAddress));
+	PdeBase = MempGetOrCreatePageDir(PpeBase, VAtoPPI(VirtualAddress));
+	PteBase = MempGetOrCreatePageDir(PdeBase, VAtoPDI(VirtualAddress));
+
+	if (!PteBase)
+	{
+        DPRINTM(DPRINT_WINDOWS,"!!!No Dir %p, %p, %p, %p\n", PxeBase, PpeBase, PdeBase, PteBase);
 		return FALSE;
 	}
 
 	Index = VAtoPTI(VirtualAddress);
-	if (pDir1->Pde[Index].Valid)
+	if (PteBase[Index].Valid)
 	{
         DPRINTM(DPRINT_WINDOWS,"!!!Already mapped %ld\n", Index);
 		return FALSE;
 	}
 
-	pDir1->Pde[Index].Valid = 1;
-	pDir1->Pde[Index].Write = 1;
-	pDir1->Pde[Index].PageFrameNumber = PhysicalAddress / PAGE_SIZE;
+	PteBase[Index].Valid = 1;
+	PteBase[Index].Write = 1;
+	PteBase[Index].PageFrameNumber = PhysicalAddress / PAGE_SIZE;
 
 	return TRUE;
 }
@@ -128,34 +118,33 @@
 BOOLEAN
 MempIsPageMapped(PVOID VirtualAddress)
 {
-    PPAGE_DIRECTORY_AMD64 pDir;
+	PHARDWARE_PTE PpeBase, PdeBase, PteBase;
     ULONG Index;
     
-    pDir = pPML4;
     Index = VAtoPXI(VirtualAddress);
-    if (!pDir->Pde[Index].Valid)
-        return FALSE;
-
-    pDir = (PPAGE_DIRECTORY_AMD64)((ULONG64)(pDir->Pde[Index].PageFrameNumber) * PAGE_SIZE);
+    if (!PxeBase[Index].Valid)
+        return FALSE;
+
+    PpeBase = (PVOID)((ULONG64)(PxeBase[Index].PageFrameNumber) * PAGE_SIZE);
     Index = VAtoPPI(VirtualAddress);
-    if (!pDir->Pde[Index].Valid)
-        return FALSE;
-
-    pDir = (PPAGE_DIRECTORY_AMD64)((ULONG64)(pDir->Pde[Index].PageFrameNumber) * PAGE_SIZE);
+    if (!PpeBase[Index].Valid)
+        return FALSE;
+
+    PdeBase = (PVOID)((ULONG64)(PpeBase[Index].PageFrameNumber) * PAGE_SIZE);
     Index = VAtoPDI(VirtualAddress);
-    if (!pDir->Pde[Index].Valid)
-        return FALSE;
-
-    pDir = (PPAGE_DIRECTORY_AMD64)((ULONG64)(pDir->Pde[Index].PageFrameNumber) * PAGE_SIZE);
+    if (!PdeBase[Index].Valid)
+        return FALSE;
+
+    PteBase = (PVOID)((ULONG64)(PdeBase[Index].PageFrameNumber) * PAGE_SIZE);
     Index = VAtoPTI(VirtualAddress);
-    if (!pDir->Pde[Index].Valid)
+    if (!PteBase[Index].Valid)
         return FALSE;
 
     return TRUE;
 }
 
 ULONG
-MempMapRangeOfPages(ULONGLONG VirtualAddress, ULONGLONG PhysicalAddress, ULONG cPages)
+MempMapRangeOfPages(ULONG64 VirtualAddress, ULONG64 PhysicalAddress, ULONG cPages)
 {
 	ULONG i;
 
@@ -333,10 +322,10 @@
 	__writeeflags(0);
 
 	/* Set the new PML4 */
-	__writecr3((ULONGLONG)pPML4);
+	__writecr3((ULONG64)PxeBase);
 
     /* Get kernel mode address of gdt / idt */
-	GdtIdt = (PVOID)((LONG64)GdtIdt + KSEG0_BASE);
+	GdtIdt = (PVOID)((ULONG64)GdtIdt + KSEG0_BASE);
 
     /* Create gdt entries and load gdtr */
     WinLdrSetupGdt(GdtIdt, Tss);




More information about the Ros-diffs mailing list