Fix PAGE_ROUND_DOWN, PAGE_ROUND_UP, and a user of them (correctness and speedup)
authorMike Nordell <tamlin@algonet.se>
Wed, 17 Oct 2007 08:31:02 +0000 (08:31 +0000)
committerMike Nordell <tamlin@algonet.se>
Wed, 17 Oct 2007 08:31:02 +0000 (08:31 +0000)
svn path=/trunk/; revision=29633

reactos/include/ndk/mmtypes.h
reactos/include/reactos/helper.h
reactos/ntoskrnl/mm/virtual.c

index fca120f..6229aaf 100644 (file)
@@ -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))
index 07610e8..07a18e7 100644 (file)
 #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))
index 0356e1c..a83f5e6 100644 (file)
@@ -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);