From 26d84c43e20804b91f23dec469ce5353723a3122 Mon Sep 17 00:00:00 2001 From: Sir Richard Date: Tue, 23 Nov 2010 16:34:30 +0000 Subject: [PATCH] [NTOS]: Define portable MI_MAKE_ACCESSED_PAGE macro. [NTOS]: Fix MiDetermineUserGlobalPteMask to account ARM, where the PDE and PTE formats are different. [NTOS]: Fix MiDetermineUserGlobalPteMask to use portable PTE macros instead of hard-coding x86-only fields. svn path=/trunk/; revision=49728 --- reactos/ntoskrnl/include/internal/arm/mm.h | 2 ++ reactos/ntoskrnl/include/internal/i386/mm.h | 1 + reactos/ntoskrnl/mm/ARM3/miarm.h | 11 ++++++----- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/reactos/ntoskrnl/include/internal/arm/mm.h b/reactos/ntoskrnl/include/internal/arm/mm.h index 03bb7bf1372..83b0d480382 100644 --- a/reactos/ntoskrnl/include/internal/arm/mm.h +++ b/reactos/ntoskrnl/include/internal/arm/mm.h @@ -20,6 +20,7 @@ #define PTE_BASE 0xC0000000 #define PTE_TOP 0xC03FFFFF #define PDE_BASE 0xC0400000 +#define PDE_TOP 0xC04FFFFF #define HYPER_SPACE 0xC0500000 #if 0 @@ -106,6 +107,7 @@ PULONG MmGetPageDirectory(VOID); #define MI_MAKE_LOCAL_PAGE(x) ((x)->u.Hard.NonGlobal = 1) #define MI_MAKE_DIRTY_PAGE(x) +#define MI_MAKE_ACCESSED_PAGE(x) #define MI_MAKE_OWNER_PAGE(x) ((x)->u.Hard.Owner = 1) #define MI_MAKE_WRITE_PAGE(x) ((x)->u.Hard.ReadOnly = 0) #define MI_PAGE_DISABLE_CACHE(x) ((x)->u.Hard.Cached = 0) diff --git a/reactos/ntoskrnl/include/internal/i386/mm.h b/reactos/ntoskrnl/include/internal/i386/mm.h index f02cc787a71..f201e454ce5 100644 --- a/reactos/ntoskrnl/include/internal/i386/mm.h +++ b/reactos/ntoskrnl/include/internal/i386/mm.h @@ -51,6 +51,7 @@ PULONG MmGetPageDirectory(VOID); #define MI_MAKE_LOCAL_PAGE(x) ((x)->u.Hard.Global = 0) #define MI_MAKE_DIRTY_PAGE(x) ((x)->u.Hard.Dirty = 1) +#define MI_MAKE_ACCESSED_PAGE(x) ((x)->u.Hard.Accessed = 1) #define MI_PAGE_DISABLE_CACHE(x) ((x)->u.Hard.CacheDisable = 1) #define MI_PAGE_WRITE_THROUGH(x) ((x)->u.Hard.WriteThrough = 1) #define MI_PAGE_WRITE_COMBINED(x) ((x)->u.Hard.WriteThrough = 0) diff --git a/reactos/ntoskrnl/mm/ARM3/miarm.h b/reactos/ntoskrnl/mm/ARM3/miarm.h index 119ae547475..df5f178c37b 100644 --- a/reactos/ntoskrnl/mm/ARM3/miarm.h +++ b/reactos/ntoskrnl/mm/ARM3/miarm.h @@ -520,7 +520,7 @@ extern PMMWSL MmWorkingSetList; // ULONG FORCEINLINE -MiDetermineUserGlobalPteMask(IN PMMPTE PointerPte) +MiDetermineUserGlobalPteMask(IN PVOID PointerPte) { MMPTE TempPte; @@ -529,14 +529,15 @@ MiDetermineUserGlobalPteMask(IN PMMPTE PointerPte) /* Make it valid and accessed */ TempPte.u.Hard.Valid = TRUE; - TempPte.u.Hard.Accessed = TRUE; + MI_MAKE_ACCESSED_PAGE(&TempPte); /* Is this for user-mode? */ - if ((PointerPte <= MiHighestUserPte) || - ((PointerPte >= MiAddressToPde(NULL)) && (PointerPte <= MiHighestUserPde))) + if ((PointerPte <= (PVOID)MiHighestUserPte) || + ((PointerPte >= (PVOID)MiAddressToPde(NULL)) && + (PointerPte <= (PVOID)MiHighestUserPde))) { /* Set the owner bit */ - TempPte.u.Hard.Owner = TRUE; + MI_MAKE_OWNER_PAGE(&TempPte); } /* FIXME: We should also set the global bit */ -- 2.17.1