/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _ASM_GENERIC_BITOPS_FLS64_H_ #define _ASM_GENERIC_BITOPS_FLS64_H_ #include <asm/types.h> /** * fls64 - find last set bit in a 64-bit word * @x: the word to search * * This is defined in a similar way as the libc and compiler builtin * ffsll, but returns the position of the most significant set bit. * * fls64(value) returns 0 if value is 0 or the position of the last * set bit if value is nonzero. The last (most significant) bit is * at position 64. */ #if BITS_PER_LONG == 32 static __always_inline int fls64(__u64 x) { __u32 h = x >> 32; if (h) return fls(h) + 32; return fls(x); } #elif BITS_PER_LONG == 64 static __always_inline int fls64(__u64 x) { if (x == 0) return 0; return __fls(x) + 1; } #else #error BITS_PER_LONG not 32 or 64 #endif #endif /* _ASM_GENERIC_BITOPS_FLS64_H_ */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__ffs.h | File | 777 B | 0644 |
|
__fls.h | File | 920 B | 0644 |
|
arch_hweight.h | File | 555 B | 0644 |
|
atomic.h | File | 5.5 KB | 0644 |
|
builtin-__ffs.h | File | 379 B | 0644 |
|
builtin-__fls.h | File | 436 B | 0644 |
|
builtin-ffs.h | File | 410 B | 0644 |
|
builtin-fls.h | File | 403 B | 0644 |
|
const_hweight.h | File | 1.67 KB | 0644 |
|
ext2-atomic-setbit.h | File | 403 B | 0644 |
|
ext2-atomic.h | File | 600 B | 0644 |
|
ffs.h | File | 654 B | 0644 |
|
ffz.h | File | 325 B | 0644 |
|
find.h | File | 1.94 KB | 0644 |
|
fls.h | File | 674 B | 0644 |
|
fls64.h | File | 860 B | 0644 |
|
hweight.h | File | 254 B | 0644 |
|
le.h | File | 2.19 KB | 0644 |
|
lock.h | File | 1.23 KB | 0644 |
|
non-atomic.h | File | 3 KB | 0644 |
|
sched.h | File | 760 B | 0644 |
|