Skip to contentSkip to conversation

tools: Move __ffs implementation to tools/ include/asm-generic/bitops/__ffs.h

tip:perf/urgent tip-bot for Arnaldo Carvalho de Melo 1 participant 1 message Dec 18, 2014

Subsystems (3)
lore
Share & tools
lore
#0 lore raw
Commit-ID:  2dc0b9721956f4314364f68a99d8bef490870438
Gitweb:     http://git.kernel.org/tip/2dc0b9721956f4314364f68a99d8bef490870438
Author:     Arnaldo Carvalho de Melo <[email protected]>
AuthorDate: Mon, 15 Dec 2014 15:07:24 -0300
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Wed, 17 Dec 2014 11:09:34 -0300

tools: Move __ffs implementation to tools/include/asm-generic/bitops/__ffs.h

To match the Linux kernel source code structure from where this code came from.

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]>
---
 .../include}/asm-generic/bitops/__ffs.h            |  8 ++---
 tools/perf/MANIFEST                                |  1 +
 tools/perf/Makefile.perf                           |  1 +
 tools/perf/util/include/linux/bitops.h             | 37 +---------------------
 4 files changed, 7 insertions(+), 40 deletions(-)
tools/include/asm-generic/bitops/__ffs.h renamed from include/asm-generic/bitops/__ffs.h +4 -4
similarity index 77%
copy from include/asm-generic/bitops/__ffs.h
copy to tools/include/asm-generic/bitops/__ffs.h
index 937d7c4..c941750 100644
@@ -1,5 +1,5 @@
-#ifndef _ASM_GENERIC_BITOPS___FFS_H_
-#define _ASM_GENERIC_BITOPS___FFS_H_
+#ifndef _TOOLS_LINUX_ASM_GENERIC_BITOPS___FFS_H_
+#define _TOOLS_LINUX_ASM_GENERIC_BITOPS___FFS_H_
 
 #include <asm/types.h>
 
@@ -13,7 +13,7 @@ static __always_inline unsigned long __ffs(unsigned long word)
 {
 	int num = 0;
 
-#if BITS_PER_LONG == 64
+#if __BITS_PER_LONG == 64
 	if ((word & 0xffffffff) == 0) {
 		num += 32;
 		word >>= 32;
@@ -40,4 +40,4 @@ static __always_inline unsigned long __ffs(unsigned long word)
 	return num;
 }
 
-#endif /* _ASM_GENERIC_BITOPS___FFS_H_ */
+#endif /* _TOOLS_LINUX_ASM_GENERIC_BITOPS___FFS_H_ */
tools/perf/MANIFEST +1 -0
index 344c4d3..39c0863 100644
@@ -5,6 +5,7 @@ tools/lib/api
 tools/lib/symbol/kallsyms.c
 tools/lib/symbol/kallsyms.h
 tools/include/asm/bug.h
+tools/include/asm-generic/bitops/__ffs.h
 tools/include/linux/compiler.h
 tools/include/linux/hash.h
 tools/include/linux/export.h
tools/perf/Makefile.perf +1 -0
index 763e68f..dbf8ca6 100644
@@ -232,6 +232,7 @@ LIB_H += ../include/linux/hash.h
 LIB_H += ../../include/linux/stringify.h
 LIB_H += util/include/linux/bitmap.h
 LIB_H += util/include/linux/bitops.h
+LIB_H += ../include/asm-generic/bitops/__ffs.h
 LIB_H += ../include/linux/compiler.h
 LIB_H += util/include/linux/const.h
 LIB_H += util/include/linux/ctype.h
tools/perf/util/include/linux/bitops.h +1 -36
index c329416..762bb83 100644
@@ -52,42 +52,7 @@ static inline unsigned long hweight_long(unsigned long w)
 
 #define BITOP_WORD(nr)		((nr) / BITS_PER_LONG)
 
-/**
- * __ffs - find first bit in word.
- * @word: The word to search
- *
- * Undefined if no bit exists, so code should check against 0 first.
- */
-static __always_inline unsigned long __ffs(unsigned long word)
-{
-	int num = 0;
-
-#if BITS_PER_LONG == 64
-	if ((word & 0xffffffff) == 0) {
-		num += 32;
-		word >>= 32;
-	}
-#endif
-	if ((word & 0xffff) == 0) {
-		num += 16;
-		word >>= 16;
-	}
-	if ((word & 0xff) == 0) {
-		num += 8;
-		word >>= 8;
-	}
-	if ((word & 0xf) == 0) {
-		num += 4;
-		word >>= 4;
-	}
-	if ((word & 0x3) == 0) {
-		num += 2;
-		word >>= 2;
-	}
-	if ((word & 0x1) == 0)
-		num += 1;
-	return num;
-}
+#include <asm-generic/bitops/__ffs.h>
 
 typedef const unsigned long __attribute__((__may_alias__)) long_alias_t;