]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
powerpc: Fix _ALIGN_* errors due to type difference.
authorAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Thu, 8 Oct 2015 07:59:28 +0000 (13:29 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 8 Oct 2015 21:02:25 +0000 (08:02 +1100)
This avoid errors like

        unsigned int usize = 1 << 30;
        int size = 1 << 30;
        unsigned long addr = 64UL << 30 ;

        value = _ALIGN_DOWN(addr, usize); -> 0
        value = _ALIGN_DOWN(addr, size);  -> 0x1000000000

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/boot/page.h
arch/powerpc/include/asm/page.h

index 14eca30fef649574dbfd76feafe20508d72b321d..87c42d7d283d058fff886071a3899ac910f869f4 100644 (file)
@@ -22,8 +22,8 @@
 #define PAGE_MASK      (~(PAGE_SIZE-1))
 
 /* align addr on a size boundary - adjust address up/down if needed */
-#define _ALIGN_UP(addr,size)   (((addr)+((size)-1))&(~((size)-1)))
-#define _ALIGN_DOWN(addr,size) ((addr)&(~((size)-1)))
+#define _ALIGN_UP(addr, size)  (((addr)+((size)-1))&(~((typeof(addr))(size)-1)))
+#define _ALIGN_DOWN(addr, size)        ((addr)&(~((typeof(addr))(size)-1)))
 
 /* align addr on a size boundary - adjust address up if needed */
 #define _ALIGN(addr,size)     _ALIGN_UP(addr,size)
index 168ca67e39b3b07eb760a014dba0ca5ce7515e8a..73b58ff6c4510c3f0a6580f9654ff1a30e595e3e 100644 (file)
@@ -12,6 +12,7 @@
 
 #ifndef __ASSEMBLY__
 #include <linux/types.h>
+#include <linux/kernel.h>
 #else
 #include <asm/types.h>
 #endif
@@ -241,8 +242,8 @@ extern long long virt_phys_offset;
 #endif
 
 /* align addr on a size boundary - adjust address up/down if needed */
-#define _ALIGN_UP(addr,size)   (((addr)+((size)-1))&(~((size)-1)))
-#define _ALIGN_DOWN(addr,size) ((addr)&(~((size)-1)))
+#define _ALIGN_UP(addr, size)   __ALIGN_KERNEL(addr, size)
+#define _ALIGN_DOWN(addr, size)        ((addr)&(~((typeof(addr))(size)-1)))
 
 /* align addr on a size boundary - adjust address up if needed */
 #define _ALIGN(addr,size)     _ALIGN_UP(addr,size)