#include <debug.h>
#define MODULE_INVOLVED_IN_ARM3
-#include "../ARM3/miarm.h"
+#include <mm/ARM3/miarm.h>
/* GLOBALS ********************************************************************/
/* PRIVATE FUNCTIONS **********************************************************/
-FORCEINLINE
-KIRQL
-MiAcquireExpansionLock()
-{
- KIRQL OldIrql;
-
- ASSERT(KeGetCurrentIrql() <= APC_LEVEL);
- KeAcquireSpinLock(&MmExpansionLock, &OldIrql);
- ASSERT(MiExpansionLockOwner == NULL);
- MiExpansionLockOwner = PsGetCurrentThread();
- return OldIrql;
-}
-
-FORCEINLINE
-VOID
-MiReleaseExpansionLock(KIRQL OldIrql)
-{
- ASSERT(MiExpansionLockOwner == PsGetCurrentThread());
- MiExpansionLockOwner = NULL;
- KeReleaseSpinLock(&MmExpansionLock, OldIrql);
- ASSERT(KeGetCurrentIrql() <= APC_LEVEL);
-}
-
VOID
NTAPI
MiInitializeSessionWsSupport(VOID)
MiSessionInitializeWorkingSetList(VOID)
{
KIRQL OldIrql;
- PMMPTE PointerPte, PointerPde;
+ PMMPTE PointerPte;
+ PMMPDE PointerPde;
MMPTE TempPte;
+ MMPDE TempPde;
ULONG Color, Index;
PFN_NUMBER PageFrameIndex;
PMM_SESSION_SPACE SessionGlobal;
if (PointerPde->u.Hard.Valid == 1)
{
/* Nope, we'll have to do it */
+#ifndef _M_ARM
ASSERT(PointerPde->u.Hard.Global == 0);
+#endif
AllocatedPageTable = FALSE;
}
else
OldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock);
/* Check if we need a page table */
- if (AllocatedPageTable == TRUE)
+ if (AllocatedPageTable != FALSE)
{
/* Get a zeroed colored zero page */
Color = MI_GET_NEXT_COLOR();
}
/* Write a valid PDE for it */
- TempPte.u.Long = ValidKernelPdeLocal.u.Long;
- TempPte.u.Hard.PageFrameNumber = PageFrameIndex;
- MI_WRITE_VALID_PTE(PointerPde, TempPte);
+ TempPde.u.Long = ValidKernelPdeLocal.u.Long;
+ TempPde.u.Hard.PageFrameNumber = PageFrameIndex;
+ MI_WRITE_VALID_PDE(PointerPde, TempPde);
/* Add this into the list */
Index = ((ULONG_PTR)WorkingSetList - (ULONG_PTR)MmSessionBase) >> 22;
#ifndef _M_AMD64
- MmSessionSpace->PageTables[Index] = TempPte;
+ MmSessionSpace->PageTables[Index] = TempPde;
#endif
/* Initialize the page directory page, and now zero the working set list itself */
MiInitializePfnForOtherProcess(PageFrameIndex,
/* Write a valid PTE for it */
TempPte.u.Long = ValidKernelPteLocal.u.Long;
- TempPte.u.Hard.Dirty = TRUE;
+ MI_MAKE_DIRTY_PAGE(&TempPte);
TempPte.u.Hard.PageFrameNumber = PageFrameIndex;
/* Initialize the working set list page */
PEPROCESS Process = PsGetCurrentProcess();
ULONG NewFlags, Flags, Size, i, Color;
KIRQL OldIrql;
- PMMPTE PointerPte, PageTables, SessionPte;
- PMMPDE PointerPde;
+ PMMPTE PointerPte, SessionPte;
+ PMMPDE PointerPde, PageTables;
PMM_SESSION_SPACE SessionGlobal;
MMPTE TempPte;
+ MMPDE TempPde;
NTSTATUS Status;
BOOLEAN Result;
PFN_NUMBER SessionPageDirIndex;
}
/* Fill the PTE out */
- TempPte.u.Long = ValidKernelPdeLocal.u.Long;
- TempPte.u.Hard.PageFrameNumber = SessionPageDirIndex;
+ TempPde.u.Long = ValidKernelPdeLocal.u.Long;
+ TempPde.u.Hard.PageFrameNumber = SessionPageDirIndex;
/* Setup, allocate, fill out the MmSessionSpace PTE */
PointerPde = MiAddressToPde(MmSessionSpace);
ASSERT(PointerPde->u.Long == 0);
- MI_WRITE_VALID_PTE(PointerPde, TempPte);
+ MI_WRITE_VALID_PDE(PointerPde, TempPde);
MiInitializePfnForOtherProcess(SessionPageDirIndex,
PointerPde,
SessionPageDirIndex);
/* The parameter is the actual process! */
EntryProcess = SessionEntry;
- NT_ASSERT(EntryProcess != NULL);
+ ASSERT(EntryProcess != NULL);
/* Sanity checks */
ASSERT(KeGetCurrentIrql() <= APC_LEVEL);
/* The parameter is the actual process! */
EntryProcess = SessionEntry;
- NT_ASSERT(EntryProcess != NULL);
+ ASSERT(EntryProcess != NULL);
/* Sanity checks */
ASSERT(KeGetCurrentIrql() <= APC_LEVEL);
/* The parameter is the actual process! */
EntryProcess = SessionEntry;
- NT_ASSERT(EntryProcess != NULL);
+ ASSERT(EntryProcess != NULL);
/* Sanity checks */
ASSERT(KeGetCurrentIrql () <= APC_LEVEL);