17f4dd379Sjsg /* Public domain. */ 27f4dd379Sjsg 37f4dd379Sjsg #ifndef _LINUX_LOG2_H 47f4dd379Sjsg #define _LINUX_LOG2_H 57f4dd379Sjsg 67f4dd379Sjsg #include <sys/types.h> 77f4dd379Sjsg #include <sys/systm.h> 87f4dd379Sjsg 97f4dd379Sjsg #define ilog2(x) ((sizeof(x) <= 4) ? (fls(x) - 1) : (flsl(x) - 1)) 107f4dd379Sjsg 11*c349dbc7Sjsg int drm_order(unsigned long); 12*c349dbc7Sjsg 137f4dd379Sjsg #define is_power_of_2(x) (((x) != 0) && (((x) - 1) & (x)) == 0) 147f4dd379Sjsg #define order_base_2(x) drm_order(x) 157f4dd379Sjsg 167f4dd379Sjsg static inline unsigned long roundup_pow_of_two(unsigned long x)177f4dd379Sjsgroundup_pow_of_two(unsigned long x) 187f4dd379Sjsg { 197f4dd379Sjsg return (1UL << flsl(x - 1)); 207f4dd379Sjsg } 217f4dd379Sjsg 227f4dd379Sjsg static inline unsigned long rounddown_pow_of_two(unsigned long x)237f4dd379Sjsgrounddown_pow_of_two(unsigned long x) 247f4dd379Sjsg { 257f4dd379Sjsg return (1UL << (flsl(x) - 1)); 267f4dd379Sjsg } 277f4dd379Sjsg 287f4dd379Sjsg #endif 29