[NTOSKRNL] Define the Mm global variables related to Cc on Mm init.
authorPierre Schweitzer <pierre@reactos.org>
Tue, 6 Feb 2018 12:38:55 +0000 (13:38 +0100)
committerPierre Schweitzer <pierre@reactos.org>
Tue, 6 Feb 2018 12:41:23 +0000 (13:41 +0100)
This means that MmSystemCacheStart, MmSystemCacheEnd, MmSizeOfSystemCacheInPages
have now a valid value.
System cache is not used atm the moment though. MmMapViewInSystemCache() is to
be implemented, and Cc is to be made aware of this.

CORE-14259

ntoskrnl/include/internal/i386/mm.h
ntoskrnl/mm/ARM3/mminit.c
ntoskrnl/mm/mminit.c

index 7d5c5ed..a77b92b 100644 (file)
@@ -20,6 +20,7 @@
 #define HYPER_SPACE_END                                0xC0BFFFFF
 #endif
 #define MI_SYSTEM_CACHE_WS_START                (PVOID)0xC0C00000
+#define MI_SYSTEM_CACHE_START                   (PVOID)0xC1000000
 #define MI_PAGED_POOL_START                     (PVOID)0xE1000000
 #define MI_NONPAGED_POOL_END                    (PVOID)0xFFBE0000
 #define MI_DEBUG_MAPPING                        (PVOID)0xFFBFF000
index 76d4a4b..eb625fc 100644 (file)
@@ -240,8 +240,9 @@ PMMPTE MiHighestUserPxe;
 #endif
 
 /* These variables define the system cache address space */
-PVOID MmSystemCacheStart;
+PVOID MmSystemCacheStart = MI_SYSTEM_CACHE_START;
 PVOID MmSystemCacheEnd;
+ULONG MmSizeOfSystemCacheInPages;
 MMSUPPORT MmSystemCacheWs;
 
 //
@@ -2494,6 +2495,14 @@ MmArmInitSystem(IN ULONG Phase,
             return FALSE;
         }
 
+        /* Define limits for system cache */
+#ifdef _M_AMD64
+        MmSizeOfSystemCacheInPages = (MI_SYSTEM_CACHE_END - MI_SYSTEM_CACHE_START) / PAGE_SIZE;
+#else
+        MmSizeOfSystemCacheInPages = ((ULONG_PTR)MI_PAGED_POOL_START - (ULONG_PTR)MI_SYSTEM_CACHE_START) / PAGE_SIZE;
+#endif
+        MmSystemCacheEnd = (PVOID)((ULONG_PTR)MmSystemCacheStart + (MmSizeOfSystemCacheInPages * PAGE_SIZE) - 1);
+
         /* Initialize the system cache */
         //MiInitializeSystemCache(MmSystemCacheWsMinimum, MmAvailablePages);
 
index 7f756cb..e0166ee 100644 (file)
@@ -154,6 +154,9 @@ MiDbgDumpAddressSpace(VOID)
     DPRINT1("          0x%p - 0x%p\t%s\n",
             HYPER_SPACE, HYPER_SPACE_END,
             "Hyperspace");
+    DPRINT1("          0x%p - 0x%p\t%s\n",
+            MmSystemCacheStart, MmSystemCacheEnd,
+            "System Cache");
     DPRINT1("          0x%p - 0x%p\t%s\n",
             MmPagedPoolStart,
             (ULONG_PTR)MmPagedPoolStart + MmSizeOfPagedPoolInBytes,