| .. | .. |
|---|
| 3 | 3 | #define _TOOLS_LINUX_BITOPS_H_ |
|---|
| 4 | 4 | |
|---|
| 5 | 5 | #include <asm/types.h> |
|---|
| 6 | +#include <limits.h> |
|---|
| 6 | 7 | #ifndef __WORDSIZE |
|---|
| 7 | 8 | #define __WORDSIZE (__SIZEOF_LONG__ * 8) |
|---|
| 8 | 9 | #endif |
|---|
| .. | .. |
|---|
| 13 | 14 | #include <linux/bits.h> |
|---|
| 14 | 15 | #include <linux/compiler.h> |
|---|
| 15 | 16 | |
|---|
| 16 | | -#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long)) |
|---|
| 17 | | -#define BITS_TO_U64(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u64)) |
|---|
| 18 | | -#define BITS_TO_U32(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u32)) |
|---|
| 19 | | -#define BITS_TO_BYTES(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE) |
|---|
| 17 | +#define BITS_PER_TYPE(type) (sizeof(type) * BITS_PER_BYTE) |
|---|
| 18 | +#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(long)) |
|---|
| 19 | +#define BITS_TO_U64(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(u64)) |
|---|
| 20 | +#define BITS_TO_U32(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(u32)) |
|---|
| 21 | +#define BITS_TO_BYTES(nr) DIV_ROUND_UP(nr, BITS_PER_TYPE(char)) |
|---|
| 20 | 22 | |
|---|
| 21 | 23 | extern unsigned int __sw_hweight8(unsigned int w); |
|---|
| 22 | 24 | extern unsigned int __sw_hweight16(unsigned int w); |
|---|