- add some definitions to winddk.h
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Wed, 30 Jul 2008 23:59:02 +0000 (23:59 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Wed, 30 Jul 2008 23:59:02 +0000 (23:59 +0000)
- amd64/ketypes.h: KSEG0_BASE is where the kernel is loaded, on amd64 this is not equal to MM_LOWEST_SYSTEM_ADDRESS (FFFF080000000000, which is not even a valid canocical address), but it's 0xfffff80000000000)
- add a field for a DbgPrint function pointer to the ROS_LOADER_PARAMETER_BLOCK for early debug prints in ntoskrnl
- hack PCR

svn path=/branches/ros-amd64-bringup/; revision=34967

reactos/include/ddk/winddk.h
reactos/include/ndk/amd64/ketypes.h
reactos/include/reactos/rosldr.h

index 598094d..7814feb 100644 (file)
@@ -5485,7 +5485,34 @@ KeGetCurrentThread(
 #define PROFILE_LEVEL                     15
 #define HIGH_LEVEL                        15
 
-#define KI_USER_SHARED_DATA     0xFFFFF78000000000ULL
+#define PAGE_SIZE   0x1000
+#define PAGE_SHIFT 12L
+#define PTI_SHIFT  12L
+#define PDI_SHIFT  21L
+#define PPI_SHIFT  30L
+#define PXI_SHIFT  39L
+#define PTE_PER_PAGE 512
+#define PDE_PER_PAGE 512
+#define PPE_PER_PAGE 512
+#define PXE_PER_PAGE 512
+#define PTI_MASK_AMD64 (PTE_PER_PAGE - 1)
+#define PDI_MASK_AMD64 (PDE_PER_PAGE - 1)
+#define PPI_MASK (PPE_PER_PAGE - 1)
+#define PXI_MASK (PXE_PER_PAGE - 1)
+
+#define PXE_BASE    0xFFFFF6FB7DBED000ULL
+#define PXE_SELFMAP 0xFFFFF6FB7DBEDF68ULL
+#define PPE_BASE    0xFFFFF6FB7DA00000ULL
+#define PDE_BASE    0xFFFFF6FB40000000ULL
+#define PTE_BASE    0xFFFFF68000000000ULL
+#define PXE_TOP     0xFFFFF6FB7DBEDFFFULL
+#define PPE_TOP     0xFFFFF6FB7DBFFFFFULL
+#define PDE_TOP     0xFFFFF6FB7FFFFFFFULL
+#define PTE_TOP     0xFFFFF6FFFFFFFFFFULL
+
+#define MM_LOWEST_USER_ADDRESS   (PVOID)0x10000
+#define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xFFFF080000000000ULL
+#define KI_USER_SHARED_DATA       0xFFFFF78000000000ULL
 
 typedef struct _KPCR
 {
index b48f157..9cb0684 100644 (file)
@@ -1,10 +1,11 @@
 /*++ NDK Version: 0098
 
 Copyright (c) Alex Ionescu.  All rights reserved.
+Copyright (c) Timo Kreuzer.  All rights reserved.
 
 Header Name:
 
-    ketypes.h (X86)
+    ketypes.h (AMD64)
 
 Abstract:
 
@@ -13,6 +14,7 @@ Abstract:
 Author:
 
     Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
+    Timo Kreuzer (timo.kreuzer@reactos.org) - Updated - 30-Jul-2008
 
 --*/
 
@@ -28,6 +30,7 @@ Author:
 //
 //#define K0IPCR                  ((ULONG_PTR)(KIP0PCRADDRESS))
 //#define PCR                     ((volatile KPCR * const)K0IPCR)
+#define PCR 0 // HACK
 //#if defined(CONFIG_SMP) || defined(NT_BUILD)
 //#undef  KeGetPcr
 //#define KeGetPcr()              ((volatile KPCR * const)__readfsdword(0x1C))
@@ -131,7 +134,7 @@ Author:
 //
 // Static Kernel-Mode Address start (use MM_KSEG0_BASE for actual)
 //
-#define KSEG0_BASE              0xffff080000000000ULL
+#define KSEG0_BASE 0xfffff80000000000ULL
 
 //
 // Synchronization-level IRQL
index 0663a26..7360c31 100644 (file)
@@ -45,6 +45,7 @@ typedef struct _ROS_LOADER_PARAMETER_BLOCK
     ULONG_PTR PageDirectoryEnd;
     ULONG_PTR KernelBase;
     ULONG_PTR ArchExtra;
+    ULONG (*FrLdrDbgPrint)(const char *Format, ...);
 } ROS_LOADER_PARAMETER_BLOCK, *PROS_LOADER_PARAMETER_BLOCK;
 
 extern BOOLEAN AcpiTableDetected;