1667382c7Skettenis /* Public domain. */ 2667382c7Skettenis 3667382c7Skettenis #ifndef _LINUX_ALIGN_H 4667382c7Skettenis #define _LINUX_ALIGN_H 5667382c7Skettenis 6667382c7Skettenis #include <sys/param.h> 7667382c7Skettenis 8*c96eac12Sjsg #define roundup2(x, y) (((x) + ((y) - 1)) & (~((__typeof(x))(y) - 1))) 9*c96eac12Sjsg #define rounddown2(x, y) ((x) & ~((__typeof(x))(y) - 1)) 10*c96eac12Sjsg 11667382c7Skettenis #undef ALIGN 12667382c7Skettenis #define ALIGN(x, y) roundup2((x), (y)) 13667382c7Skettenis 14*c96eac12Sjsg #define IS_ALIGNED(x, y) (((x) & ((y) - 1)) == 0) 15*c96eac12Sjsg #define PTR_ALIGN(x, y) ((__typeof(x))roundup2((unsigned long)(x), (y))) 16*c96eac12Sjsg #define ALIGN_DOWN(x, y) ((__typeof(x))rounddown2((unsigned long)(x), (y))) 17*c96eac12Sjsg 18667382c7Skettenis #endif 19