From: H. Peter Anvin <hpa@xxxxxxxxx> round_up with __type_of__ round_up use mask and | tricks from HPA and linus also move round_up/down to kernel.h Signed-off-by: Yinghai Lu <yinghai@xxxxxxxxxx> --- arch/um/sys-x86_64/signal.c | 2 -- arch/x86/include/asm/proto.h | 3 --- drivers/md/dm-exception-store.c | 10 ---------- include/linux/kernel.h | 6 ++++++ 4 files changed, 6 insertions(+), 15 deletions(-) Index: linux-2.6/arch/x86/include/asm/proto.h =================================================================== --- linux-2.6.orig/arch/x86/include/asm/proto.h +++ linux-2.6/arch/x86/include/asm/proto.h @@ -22,7 +22,4 @@ extern int reboot_force; long do_arch_prctl(struct task_struct *task, int code, unsigned long addr); -#define round_up(x, y) (((x) + (y) - 1) & ~((y) - 1)) -#define round_down(x, y) ((x) & ~((y) - 1)) - #endif /* _ASM_X86_PROTO_H */ Index: linux-2.6/include/linux/kernel.h =================================================================== --- linux-2.6.orig/include/linux/kernel.h +++ linux-2.6/include/linux/kernel.h @@ -140,6 +140,7 @@ extern const char linux_proc_banner[]; #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f)) #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) #define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) +#define rounddown(x, y) (((x) / (y)) * (y)) #define DIV_ROUND_CLOSEST(x, divisor)( \ { \ typeof(divisor) __divisor = divisor; \ @@ -147,6 +148,11 @@ extern const char linux_proc_banner[]; } \ ) +/* need y is 2^n */ +#define __round_mask(x,y) ((__typeof__(x))((y)-1)) +#define round_up(x,y) ((((x)-1) | __round_mask(x,y))+1) +#define round_down(x,y) ((x) & ~__round_mask(x,y)) + #define _RET_IP_ (unsigned long)__builtin_return_address(0) #define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; }) Index: linux-2.6/arch/um/sys-x86_64/signal.c =================================================================== --- linux-2.6.orig/arch/um/sys-x86_64/signal.c +++ linux-2.6/arch/um/sys-x86_64/signal.c @@ -165,8 +165,6 @@ struct rt_sigframe struct _fpstate fpstate; }; -#define round_down(m, n) (((m) / (n)) * (n)) - int setup_signal_stack_si(unsigned long stack_top, int sig, struct k_sigaction *ka, struct pt_regs * regs, siginfo_t *info, sigset_t *set) Index: linux-2.6/drivers/md/dm-exception-store.c =================================================================== --- linux-2.6.orig/drivers/md/dm-exception-store.c +++ linux-2.6/drivers/md/dm-exception-store.c @@ -138,16 +138,6 @@ int dm_exception_store_type_unregister(s } EXPORT_SYMBOL(dm_exception_store_type_unregister); -/* - * Round a number up to the nearest 'size' boundary. size must - * be a power of 2. - */ -static ulong round_up(ulong n, ulong size) -{ - size--; - return (n + size) & ~size; -} - static int set_chunk_size(struct dm_exception_store *store, const char *chunk_size_arg, char **error) { -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html