tools: Introduce asm-generic/bitops.h
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 88bcea43fdad515074f03aee75616f6562cb8b95 Gitweb: http://git.kernel.org/tip/88bcea43fdad515074f03aee75616f6562cb8b95 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Tue, 16 Dec 2014 10:53:27 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Wed, 17 Dec 2014 11:16:25 -0300
tools: Introduce asm-generic/bitops.h
In preparation for moving linux/bitops.h from tools/perf/util/ to tools/include/.
Cc Adrian Hunter <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc David Ahern <[email protected]>
Cc Don Zickus <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Mike Galbraith <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Stephane Eranian <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/include/asm-generic/bitops.h | 24 ++++++++++++++++++++++++ tools/perf/MANIFEST | 3 ++- tools/perf/Makefile.perf | 1 + tools/perf/util/include/linux/bitops.h | 17 ++++++++++------- 4 files changed, 37 insertions(+), 8 deletions(-)
tools/include/asm-generic/bitops.h new file +24 -0
@@ -0,0 +1,24 @@ +#ifndef __TOOLS_ASM_GENERIC_BITOPS_H +#define __TOOLS_ASM_GENERIC_BITOPS_H + +/* +* tools/ copied this from include/asm-generic/bitops.h, bit by bit as it needed +* some functions. +* +* For the benefit of those who are trying to port Linux to another +* architecture, here are some C-language equivalents. You should +* recode these in the native assembly language, if at all possible. +* +* C language equivalents written by Theodore Ts'o, 9/26/92 +*/ + +#include <asm-generic/bitops/__ffs.h> +#include <asm-generic/bitops/find.h> + +#ifndef _TOOLS_LINUX_BITOPS_H_ +#error only <linux/bitops.h> can be included directly +#endif + +#include <asm-generic/bitops/atomic.h> + +#endif /* __TOOLS_ASM_GENERIC_BITOPS_H */
tools/perf/MANIFEST +2 -1
@@ -7,8 +7,9 @@ tools/lib/symbol/kallsyms.h tools/lib/util/find_next_bit.c tools/include/asm/bug.h tools/include/asm-generic/bitops/atomic.h -tools/include/asm-generic/bitops/find.h tools/include/asm-generic/bitops/__ffs.h +tools/include/asm-generic/bitops/find.h +tools/include/asm-generic/bitops.h tools/include/linux/compiler.h tools/include/linux/export.h tools/include/linux/hash.h
tools/perf/Makefile.perf +1 -0
@@ -235,6 +235,7 @@ LIB_H += util/include/linux/bitops.h LIB_H += ../include/asm-generic/bitops/atomic.h LIB_H += ../include/asm-generic/bitops/find.h LIB_H += ../include/asm-generic/bitops/__ffs.h +LIB_H += ../include/asm-generic/bitops.h LIB_H += ../include/linux/compiler.h LIB_H += ../include/linux/log2.h LIB_H += util/include/linux/const.h
tools/perf/util/include/linux/bitops.h +10 -7
@@ -1,5 +1,5 @@ -#ifndef _PERF_LINUX_BITOPS_H_ -#define _PERF_LINUX_BITOPS_H_ +#ifndef _TOOLS_LINUX_BITOPS_H_ +#define _TOOLS_LINUX_BITOPS_H_#include <linux/kernel.h> #include <linux/compiler.h>
@@ -19,6 +19,14 @@#define BITS_TO_U32 (nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u32))#define BITS_TO_BYTES (nr) DIV_ROUND_UP(nr, BITS_PER_BYTE) +/* +* Include this here because some architectures need generic_ffs/fls in +* scope +* +* XXX: this needs to be asm/bitops.h, when we get to per arch optimizations +*/ +#include <asm-generic/bitops.h> +#define for_each_set_bit (bit, addr, size) \ for ((bit) = find_first_bit((addr), (size)); \ (bit) < (size); \
@@ -30,14 +38,9 @@ (bit) < (size); \ (bit) = find_next_bit((addr), (size), (bit) + 1)) -#include <asm-generic/bitops/atomic.h> -static inline unsigned long hweight_long (unsigned long w) {return sizeof (w) ==4 ?hweight32 (w) :hweight64 (w); } -#include <asm-generic/bitops/__ffs.h> -#include <asm-generic/bitops/find.h> -#endif