[NTOS:MM] Make debug code in MmArmInitSystem portable
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Tue, 19 Dec 2017 14:16:54 +0000 (15:16 +0100)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Wed, 20 Dec 2017 05:56:09 +0000 (06:56 +0100)
ntoskrnl/include/internal/arm/mm.h
ntoskrnl/include/internal/i386/mm.h
ntoskrnl/mm/ARM3/mminit.c

index ade2bff..71468cc 100644 (file)
@@ -14,6 +14,7 @@
 #define MI_PAGED_POOL_START                     (PVOID)0xE1000000
 #define MI_NONPAGED_POOL_END                    (PVOID)0xFFBE0000
 #define MI_DEBUG_MAPPING                        (PVOID)0xFFBFF000
+#define MI_HIGHEST_SYSTEM_ADDRESS               (PVOID)0xFFFFFFFF
 
 #define PTE_PER_PAGE 256
 #define PDE_PER_PAGE 4096
index aae223c..19ce1c8 100644 (file)
@@ -23,6 +23,7 @@
 #define MI_PAGED_POOL_START                     (PVOID)0xE1000000
 #define MI_NONPAGED_POOL_END                    (PVOID)0xFFBE0000
 #define MI_DEBUG_MAPPING                        (PVOID)0xFFBFF000
+#define MI_HIGHEST_SYSTEM_ADDRESS               (PVOID)0xFFFFFFFF
 
 /* FIXME: These are different for PAE */
 #define PTE_BASE    0xC0000000
index 0ed42eb..44f50b0 100644 (file)
@@ -2118,9 +2118,8 @@ MmArmInitSystem(IN ULONG Phase,
         TestPte = MiProtoPteToPte(&TempPte);
         ASSERT(PointerPte == TestPte);
 
-#ifndef _M_AMD64 // Not working on x64 for obvoius reason
         /* Try a bunch of random addresses near the end of the address space */
-        PointerPte = (PMMPTE)0xFFFC8000;
+        PointerPte = (PMMPTE)((ULONG_PTR)MI_HIGHEST_SYSTEM_ADDRESS - 0x37FFF);
         for (j = 0; j < 20; j += 1)
         {
             MI_MAKE_PROTOTYPE_PTE(&TempPte, PointerPte);
@@ -2130,11 +2129,10 @@ MmArmInitSystem(IN ULONG Phase,
         }
 
         /* Subsection PTEs are always in nonpaged pool, pick a random address to try */
-        PointerPte = (PMMPTE)0xFFAACBB8;
+        PointerPte = (PMMPTE)((ULONG_PTR)MmNonPagedPoolStart + (MmSizeOfNonPagedPoolInBytes / 2));
         MI_MAKE_SUBSECTION_PTE(&TempPte, PointerPte);
         TestPte = MiSubsectionPteToSubsection(&TempPte);
         ASSERT(PointerPte == TestPte);
-#endif
 #endif
 
         /* Loop all 8 standby lists */