From 0a36bb76e54f8e1c31cf42834e676dcd8a426515 Mon Sep 17 00:00:00 2001 From: Mike Nordell Date: Wed, 17 Oct 2007 08:31:02 +0000 Subject: [PATCH] Fix PAGE_ROUND_DOWN, PAGE_ROUND_UP, and a user of them (correctness and speedup) svn path=/trunk/; revision=29633 --- reactos/include/ndk/mmtypes.h | 6 ++---- reactos/include/reactos/helper.h | 4 ++-- reactos/ntoskrnl/mm/virtual.c | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/reactos/include/ndk/mmtypes.h b/reactos/include/ndk/mmtypes.h index fca120f4065..6229aafce94 100644 --- a/reactos/include/ndk/mmtypes.h +++ b/reactos/include/ndk/mmtypes.h @@ -30,11 +30,9 @@ Author: // Page-Rounding Macros // #define PAGE_ROUND_DOWN(x) \ - (((ULONG_PTR)x)&(~(PAGE_SIZE-1))) + (((ULONG_PTR)(x))&(~(PAGE_SIZE-1))) #define PAGE_ROUND_UP(x) \ - ( (((ULONG_PTR)x)%PAGE_SIZE) ? \ - ((((ULONG_PTR)x)&(~(PAGE_SIZE-1)))+PAGE_SIZE) : \ - ((ULONG_PTR)x) ) + ( (((ULONG_PTR)(x)) + PAGE_SIZE-1) & (~(PAGE_SIZE-1)) ) #ifdef NTOS_MODE_USER #define ROUND_TO_PAGES(Size) \ (((ULONG_PTR)(Size) + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1)) diff --git a/reactos/include/reactos/helper.h b/reactos/include/reactos/helper.h index 07610e8eac7..07a18e75139 100644 --- a/reactos/include/reactos/helper.h +++ b/reactos/include/reactos/helper.h @@ -20,11 +20,11 @@ #endif #ifndef PAGE_ROUND_DOWN -#define PAGE_ROUND_DOWN(x) (((ULONG_PTR)x)&(~(PAGE_SIZE-1))) +#define PAGE_ROUND_DOWN(x) (((ULONG_PTR)(x))&(~(PAGE_SIZE-1))) #endif #ifndef PAGE_ROUND_UP -#define PAGE_ROUND_UP(x) ( (((ULONG_PTR)x)%PAGE_SIZE) ? ((((ULONG_PTR)x)&(~(PAGE_SIZE-1)))+PAGE_SIZE) : ((ULONG_PTR)x) ) +#define PAGE_ROUND_UP(x) ( (((ULONG_PTR)(x)) + PAGE_SIZE-1) & (~(PAGE_SIZE-1)) ) #endif #define ABS_VALUE(V) (((V) < 0) ? -(V) : (V)) diff --git a/reactos/ntoskrnl/mm/virtual.c b/reactos/ntoskrnl/mm/virtual.c index 0356e1cedbb..a83f5e678cc 100644 --- a/reactos/ntoskrnl/mm/virtual.c +++ b/reactos/ntoskrnl/mm/virtual.c @@ -390,7 +390,7 @@ MiProtectVirtualMemory(IN PEPROCESS Process, NTSTATUS Status; *NumberOfBytesToProtect = - PAGE_ROUND_UP((*BaseAddress) + (*NumberOfBytesToProtect)) - + PAGE_ROUND_UP((ULONG_PTR)(*BaseAddress) + (*NumberOfBytesToProtect)) - PAGE_ROUND_DOWN(*BaseAddress); *BaseAddress = (PVOID)PAGE_ROUND_DOWN(*BaseAddress);