Commit 99e4e117 authored by Namhyung Kim's avatar Namhyung Kim

tools/include: Sync asm-generic/bitops/fls.h with the kernel sources

To pick up the changes from:

  cb4ede92 ("riscv: Avoid code duplication with generic bitops implementation")

This should address these tools/perf build warnings:

  Warning: Kernel ABI header differences:
    diff -u tools/include/asm-generic/bitops/__fls.h include/asm-generic/bitops/__fls.h
    diff -u tools/include/asm-generic/bitops/fls.h include/asm-generic/bitops/fls.h

Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Palmer Dabbelt <palmer@rivosinc.com>
Cc: linux-arch@vger.kernel.org
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20240408185520.1550865-9-namhyung@kernel.org
parent c781a72f
...@@ -5,12 +5,12 @@ ...@@ -5,12 +5,12 @@
#include <asm/types.h> #include <asm/types.h>
/** /**
* __fls - find last (most-significant) set bit in a long word * generic___fls - find last (most-significant) set bit in a long word
* @word: the word to search * @word: the word to search
* *
* Undefined if no set bit exists, so code should check against 0 first. * Undefined if no set bit exists, so code should check against 0 first.
*/ */
static __always_inline unsigned long __fls(unsigned long word) static __always_inline unsigned long generic___fls(unsigned long word)
{ {
int num = BITS_PER_LONG - 1; int num = BITS_PER_LONG - 1;
...@@ -41,4 +41,8 @@ static __always_inline unsigned long __fls(unsigned long word) ...@@ -41,4 +41,8 @@ static __always_inline unsigned long __fls(unsigned long word)
return num; return num;
} }
#ifndef __HAVE_ARCH___FLS
#define __fls(word) generic___fls(word)
#endif
#endif /* _ASM_GENERIC_BITOPS___FLS_H_ */ #endif /* _ASM_GENERIC_BITOPS___FLS_H_ */
...@@ -3,14 +3,14 @@ ...@@ -3,14 +3,14 @@
#define _ASM_GENERIC_BITOPS_FLS_H_ #define _ASM_GENERIC_BITOPS_FLS_H_
/** /**
* fls - find last (most-significant) bit set * generic_fls - find last (most-significant) bit set
* @x: the word to search * @x: the word to search
* *
* This is defined the same way as ffs. * This is defined the same way as ffs.
* Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32. * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
*/ */
static __always_inline int fls(unsigned int x) static __always_inline int generic_fls(unsigned int x)
{ {
int r = 32; int r = 32;
...@@ -39,4 +39,8 @@ static __always_inline int fls(unsigned int x) ...@@ -39,4 +39,8 @@ static __always_inline int fls(unsigned int x)
return r; return r;
} }
#ifndef __HAVE_ARCH_FLS
#define fls(x) generic_fls(x)
#endif
#endif /* _ASM_GENERIC_BITOPS_FLS_H_ */ #endif /* _ASM_GENERIC_BITOPS_FLS_H_ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment