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