| From 8f5e9ea4ea676344ee84908bbead31776dd86cde Mon Sep 17 00:00:00 2001 |
| From: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Date: Tue, 25 Sep 2018 10:55:59 -0300 |
| Subject: tools include: Adopt linux/bits.h |
| |
| From: Arnaldo Carvalho de Melo <acme@redhat.com> |
| |
| commit ba4aa02b417f08a0bee5e7b8ed70cac788a7c854 upstream. |
| |
| So that we reduce the difference of tools/include/linux/bitops.h to the |
| original kernel file, include/linux/bitops.h, trying to remove the need |
| to define BITS_PER_LONG, to avoid clashes with asm/bitsperlong.h. |
| |
| And the things removed from tools/include/linux/bitops.h are really in |
| linux/bits.h, so that we can have a copy and then |
| tools/perf/check_headers.sh will tell us when new stuff gets added to |
| linux/bits.h so that we can check if it is useful and if any adjustment |
| needs to be done to the tools/{include,arch}/ copies. |
| |
| Cc: Adrian Hunter <adrian.hunter@intel.com> |
| Cc: Alexander Sverdlin <alexander.sverdlin@nokia.com> |
| Cc: David Ahern <dsahern@gmail.com> |
| Cc: Jiri Olsa <jolsa@kernel.org> |
| Cc: Namhyung Kim <namhyung@kernel.org> |
| Cc: Wang Nan <wangnan0@huawei.com> |
| Link: https://lkml.kernel.org/n/tip-y1sqyydvfzo0bjjoj4zsl562@git.kernel.org |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| [bwh: Backported to 4.4 as dependency of "x86/msr-index: Cleanup bit defines": |
| - Drop change in check-headers.sh |
| - Adjust context] |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| tools/include/linux/bitops.h | 7 ++----- |
| tools/include/linux/bits.h | 26 ++++++++++++++++++++++++++ |
| 2 files changed, 28 insertions(+), 5 deletions(-) |
| create mode 100644 tools/include/linux/bits.h |
| |
| --- a/tools/include/linux/bitops.h |
| +++ b/tools/include/linux/bitops.h |
| @@ -3,17 +3,14 @@ |
| |
| #include <asm/types.h> |
| #include <linux/kernel.h> |
| -#include <linux/compiler.h> |
| - |
| #ifndef __WORDSIZE |
| #define __WORDSIZE (__SIZEOF_LONG__ * 8) |
| #endif |
| |
| #define BITS_PER_LONG __WORDSIZE |
| +#include <linux/bits.h> |
| +#include <linux/compiler.h> |
| |
| -#define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG)) |
| -#define BIT_WORD(nr) ((nr) / BITS_PER_LONG) |
| -#define BITS_PER_BYTE 8 |
| #define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long)) |
| #define BITS_TO_U64(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u64)) |
| #define BITS_TO_U32(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u32)) |
| --- /dev/null |
| +++ b/tools/include/linux/bits.h |
| @@ -0,0 +1,26 @@ |
| +/* SPDX-License-Identifier: GPL-2.0 */ |
| +#ifndef __LINUX_BITS_H |
| +#define __LINUX_BITS_H |
| +#include <asm/bitsperlong.h> |
| + |
| +#define BIT(nr) (1UL << (nr)) |
| +#define BIT_ULL(nr) (1ULL << (nr)) |
| +#define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG)) |
| +#define BIT_WORD(nr) ((nr) / BITS_PER_LONG) |
| +#define BIT_ULL_MASK(nr) (1ULL << ((nr) % BITS_PER_LONG_LONG)) |
| +#define BIT_ULL_WORD(nr) ((nr) / BITS_PER_LONG_LONG) |
| +#define BITS_PER_BYTE 8 |
| + |
| +/* |
| + * Create a contiguous bitmask starting at bit position @l and ending at |
| + * position @h. For example |
| + * GENMASK_ULL(39, 21) gives us the 64bit vector 0x000000ffffe00000. |
| + */ |
| +#define GENMASK(h, l) \ |
| + (((~0UL) - (1UL << (l)) + 1) & (~0UL >> (BITS_PER_LONG - 1 - (h)))) |
| + |
| +#define GENMASK_ULL(h, l) \ |
| + (((~0ULL) - (1ULL << (l)) + 1) & \ |
| + (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h)))) |
| + |
| +#endif /* __LINUX_BITS_H */ |