On smp machines, unmap all low memory pages (except page 2 and 3).
Modified: trunk/reactos/ntoskrnl/mm/mminit.c
_____
Modified: trunk/reactos/ntoskrnl/mm/mminit.c
--- trunk/reactos/ntoskrnl/mm/mminit.c 2005-03-15 17:35:27 UTC (rev
14099)
+++ trunk/reactos/ntoskrnl/mm/mminit.c 2005-03-15 17:38:54 UTC (rev
14100)
@@ -386,10 +386,22 @@
/*
* Unmap low memory
*/
-#ifndef CONFIG_SMP
- /* In SMP mode we unmap the low memory in MmInit3.
+#ifdef CONFIG_SMP
+ /* In SMP mode we unmap the low memory pagetable in MmInit3.
The APIC needs the mapping of the first pages
- while the processors are starting up. */
+ while the processors are starting up.
+ We unmap all pages except page 2 and 3. */
+ for (MappingAddress = 0;
+ MappingAddress < 1024 * PAGE_SIZE;
+ MappingAddress += PAGE_SIZE)
+ {
+ if (MappingAddress != 2 * PAGE_SIZE &&
+ MappingAddress != 3 * PAGE_SIZE)
+ {
+ MmRawDeleteVirtualMapping((PVOID)MappingAddress);
+ }
+ }
+#else
MmDeletePageTable(NULL, 0);
#endif