diff --git a/reactos/ntoskrnl/include/internal/i386/mm.h b/reactos/ntoskrnl/include/internal/i386/mm.h index 0ff6b5667c0..c9b41cada00 100644 --- a/reactos/ntoskrnl/include/internal/i386/mm.h +++ b/reactos/ntoskrnl/include/internal/i386/mm.h @@ -39,11 +39,13 @@ PULONG MmGetPageDirectory(VOID); // Convert a PTE into a corresponding address // #define MiPteToAddress(PTE) ((PVOID)((ULONG)(PTE) << 10)) -#define MiPdeToAddress(PDE) ((PVOID)((ULONG)(PDE) << 10)) +#define MiPdeToAddress(PDE) ((PVOID)((ULONG)(PDE) << 20)) +#define MiPdeToPte(PDE) ((PMMPTE)MiPteToAddress(PDE)) +#define MiPteToPde(PTE) ((PMMPDE)MiAddressToPte(PTE)) -#define ADDR_TO_PAGE_TABLE(v) (((ULONG)(v)) / (1024 * PAGE_SIZE)) -#define ADDR_TO_PDE_OFFSET(v) ((((ULONG)(v)) / (1024 * PAGE_SIZE))) -#define ADDR_TO_PTE_OFFSET(v) ((((ULONG)(v)) % (1024 * PAGE_SIZE)) / PAGE_SIZE) +#define ADDR_TO_PAGE_TABLE(v) (((ULONG)(v)) / (1024 * PAGE_SIZE)) +#define ADDR_TO_PDE_OFFSET(v) (((ULONG)(v)) / (1024 * PAGE_SIZE)) +#define ADDR_TO_PTE_OFFSET(v) ((((ULONG)(v)) % (1024 * PAGE_SIZE)) / PAGE_SIZE) #define MiGetPdeOffset ADDR_TO_PDE_OFFSET diff --git a/reactos/ntoskrnl/mm/ARM3/pool.c b/reactos/ntoskrnl/mm/ARM3/pool.c index 76b84db1e40..116c6cb0a82 100644 --- a/reactos/ntoskrnl/mm/ARM3/pool.c +++ b/reactos/ntoskrnl/mm/ARM3/pool.c @@ -463,7 +463,7 @@ MiAllocatePoolPages(IN POOL_TYPE PoolType, // Get the first PTE in expansion space // PointerPde = MmPagedPoolInfo.NextPdeForPagedPoolExpansion; - BaseVa = MiPdeToAddress(PointerPde); + BaseVa = MiPdeToPte(PointerPde); BaseVaStart = BaseVa; // diff --git a/reactos/ntoskrnl/mm/ARM3/virtual.c b/reactos/ntoskrnl/mm/ARM3/virtual.c index 8222af3fe8c..485ee21a5b0 100644 --- a/reactos/ntoskrnl/mm/ARM3/virtual.c +++ b/reactos/ntoskrnl/mm/ARM3/virtual.c @@ -1127,7 +1127,7 @@ MiQueryAddressState(IN PVOID Va, if (!PointerPde->u.Long) { /* No address in this range used yet, move to the next PDE range */ - *NextVa = MiPteToAddress(MiPdeToAddress(PointerPde + 1)); + *NextVa = MiPdeToAddress(PointerPde + 1); break; } @@ -1135,7 +1135,7 @@ MiQueryAddressState(IN PVOID Va, if (!PointerPde->u.Hard.Valid) { /* It isn't, go ahead and do the fault */ - LockChange = MiMakeSystemAddressValid(MiPdeToAddress(PointerPde), + LockChange = MiMakeSystemAddressValid(MiPdeToPte(PointerPde), TargetProcess); }