diff options
author | Masahiro Yamada <yamada.m@jp.panasonic.com> | 2014-11-07 03:03:30 +0900 |
---|---|---|
committer | Tom Rini <trini@ti.com> | 2014-11-20 11:28:25 -0500 |
commit | 111396ccb9a8d3e1f0e9d9921d3dbd6c7a70423f (patch) | |
tree | a1acad32c2f2c1c0fcef6f0504ef7d4c339a5c66 /include | |
parent | 48c7ea39663a7c151a2a0b1af5d45ae3cf676299 (diff) |
linux/kernel.h: add typechecking to roundup macro
This commit replaces roundup macro with the one from Linux Kernel.
DEFINE_ALIGN_BUFFER must be fixed because typechecking can not
be used in this context.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/common.h | 2 | ||||
-rw-r--r-- | include/linux/kernel.h | 9 |
2 files changed, 8 insertions, 3 deletions
diff --git a/include/common.h b/include/common.h index c1bdaeccaa4..ce0a7343f4e 100644 --- a/include/common.h +++ b/include/common.h @@ -967,7 +967,7 @@ static inline phys_addr_t map_to_sysmem(const void *ptr) * Usage of this macro shall be avoided or used with extreme care! */ #define DEFINE_ALIGN_BUFFER(type, name, size, align) \ - static char __##name[roundup(size * sizeof(type), align)] \ + static char __##name[ALIGN(size * sizeof(type), align)] \ __aligned(align); \ \ static type *name = (type *)__##name diff --git a/include/linux/kernel.h b/include/linux/kernel.h index f84a764bc90..0e838de0945 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -61,8 +61,13 @@ # define DIV_ROUND_UP_SECTOR_T(ll,d) DIV_ROUND_UP(ll,d) #endif -#define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) - +/* The `const' in roundup() prevents gcc-3.3 from calling __divdi3 */ +#define roundup(x, y) ( \ +{ \ + const typeof(y) __y = y; \ + (((x) + (__y - 1)) / __y) * __y; \ +} \ +) #define rounddown(x, y) ( \ { \ typeof(x) __x = (x); \ |