From 25941abce10a4ff171f04af709bcbcdb85f6a78d Mon Sep 17 00:00:00 2001 From: ReactOS Portable Systems Group Date: Tue, 23 Jun 2009 09:11:01 +0000 Subject: [PATCH] - So it turns out bad things can happen if you play behind Mm's back. - The lovely poetry is brought to you by 7AM coding marathons... svn path=/trunk/; revision=41576 --- reactos/ntoskrnl/mm/ARM3/init.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/reactos/ntoskrnl/mm/ARM3/init.c b/reactos/ntoskrnl/mm/ARM3/init.c index f739b3fee72..07812264ad1 100644 --- a/reactos/ntoskrnl/mm/ARM3/init.c +++ b/reactos/ntoskrnl/mm/ARM3/init.c @@ -104,6 +104,29 @@ ULONG MmNumberOfSystemPtes; /* PRIVATE FUNCTIONS **********************************************************/ +// +// In Bavaria, this is probably a hate crime +// +VOID +FASTCALL +MiSyncARM3WithROS(IN PVOID AddressStart, + IN PVOID AddressEnd) +{ + // + // Puerile piece of junk-grade carbonized horseshit puss sold to the lowest bidder + // + ULONG Pde = ADDR_TO_PDE_OFFSET(AddressStart); + while (Pde < ADDR_TO_PDE_OFFSET(AddressEnd)) + { + // + // This both odious and heinous + // + extern PULONG MmGlobalKernelPageDirectory; + MmGlobalKernelPageDirectory[Pde] = ((PULONG)PAGEDIRECTORY_MAP)[Pde]; + Pde++; + } +} + NTSTATUS NTAPI MmArmInitSystem(IN ULONG Phase, @@ -490,6 +513,13 @@ MmArmInitSystem(IN ULONG Phase, // Set the counter to maximum to boot with // MiFirstReservedZeroingPte->u.Hard.PageFrameNumber = MI_ZERO_PTES - 1; + + // + // Sync us up with ReactOS Mm + // + MiSyncARM3WithROS(MmNonPagedSystemStart, (PVOID)((ULONG_PTR)MmNonPagedPoolEnd - 1)); + MiSyncARM3WithROS(MmNonPagedPoolStart, (PVOID)((ULONG_PTR)MmNonPagedPoolStart + MmSizeOfNonPagedPoolInBytes - 1)); + MiSyncARM3WithROS((PVOID)HYPER_SPACE, (PVOID)(HYPER_SPACE + PAGE_SIZE - 1)); } //