Author: sir_richard Date: Sun Jun 6 16:13:35 2010 New Revision: 47622
URL: http://svn.reactos.org/svn/reactos?rev=47622&view=rev Log: [NTOS]: Don't use MmAllocPage for the first paged pool PDE, instead, use MiRemoveZeroPage. [NTOS]: Use MiInitializePfnForOtherProcess to setup the first paged pool PDE.
Modified: trunk/reactos/ntoskrnl/mm/ARM3/miarm.h trunk/reactos/ntoskrnl/mm/ARM3/mminit.c
Modified: trunk/reactos/ntoskrnl/mm/ARM3/miarm.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/miarm.h?re... ============================================================================== --- trunk/reactos/ntoskrnl/mm/ARM3/miarm.h [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/ARM3/miarm.h [iso-8859-1] Sun Jun 6 16:13:35 2010 @@ -743,6 +743,12 @@ IN ULONG Color );
+PFN_NUMBER +NTAPI +MiRemoveZeroPage( + IN ULONG Color +); + VOID NTAPI MiInsertPageInFreeList(
Modified: trunk/reactos/ntoskrnl/mm/ARM3/mminit.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/mminit.c?r... ============================================================================== --- trunk/reactos/ntoskrnl/mm/ARM3/mminit.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/ARM3/mminit.c [iso-8859-1] Sun Jun 6 16:13:35 2010 @@ -1586,14 +1586,17 @@ // OldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock);
- // - // Allocate a page and map the first paged pool PDE - // - PageFrameIndex = MmAllocPage(MC_NPPOOL); + /* Allocate a page and map the first paged pool PDE */ + PageFrameIndex = MiRemoveZeroPage(0); TempPte.u.Hard.PageFrameNumber = PageFrameIndex; ASSERT(PointerPde->u.Hard.Valid == 0); ASSERT(TempPte.u.Hard.Valid == 1); *PointerPde = TempPte; + + /* Initialize the PFN entry for it */ + MiInitializePfnForOtherProcess(PageFrameIndex, + PointerPde, + MmSystemPageDirectory[(PointerPde - (PMMPTE)PDE_BASE) / PDE_COUNT]);
// // Release the PFN database lock