drm: fix the ALIGN macro to avoid value clamp
authorJammy Zhou <Jammy.Zhou@amd.com>
Mon, 13 Jul 2015 08:49:42 +0000 (16:49 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 5 Aug 2015 17:47:52 +0000 (13:47 -0400)
If the value is 64bit, but the alignment is 32bit type, the high 32bit
will be clamped with previous definition

Signed-off-by: Jammy Zhou <Jammy.Zhou@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
util_math.h

index b8de0f8..3bc5f64 100644 (file)
@@ -27,6 +27,7 @@
 #define MIN2( A, B )   ( (A)<(B) ? (A) : (B) )
 #define MAX2( A, B )   ( (A)>(B) ? (A) : (B) )
 
-#define ALIGN( value, alignment )   ( ((value) + (alignment) - 1) & ~((alignment) - 1) )
+#define __align_mask(value, mask)  (((value) + (mask)) & ~(mask))
+#define ALIGN(value, alignment)    __align_mask(value, (typeof(value))((alignment) - 1))
 
 #endif /*_UTIL_MATH_H_*/