mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 21:33:00 +00:00
[FLS64]: generic version
Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c865e5d99e
commit
3821af2fe1
@ -321,6 +321,7 @@ static inline int fls(int word)
|
||||
#else
|
||||
#define fls generic_fls
|
||||
#endif
|
||||
#define fls64 generic_fls64
|
||||
|
||||
/* Compute powers of two for the given integer. */
|
||||
static inline long floor_log2(unsigned long word)
|
||||
|
@ -332,6 +332,7 @@ static inline unsigned long __ffs(unsigned long word)
|
||||
*/
|
||||
|
||||
#define fls(x) generic_fls(x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
/*
|
||||
* ffs: find first bit set. This is defined the same way as
|
||||
@ -351,6 +352,7 @@ static inline unsigned long __ffs(unsigned long word)
|
||||
#define fls(x) \
|
||||
( __builtin_constant_p(x) ? generic_fls(x) : \
|
||||
({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) )
|
||||
#define fls64(x) generic_fls64(x)
|
||||
#define ffs(x) ({ unsigned long __t = (x); fls(__t & -__t); })
|
||||
#define __ffs(x) (ffs(x) - 1)
|
||||
#define ffz(x) __ffs( ~(x) )
|
||||
|
@ -259,6 +259,7 @@ static inline unsigned long __ffs(unsigned long word)
|
||||
*/
|
||||
|
||||
#define fls(x) generic_fls(x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
/*
|
||||
* ffs: find first bit set. This is defined the same way as
|
||||
|
@ -240,6 +240,7 @@ static inline int test_bit(int nr, const volatile unsigned long *addr)
|
||||
*/
|
||||
|
||||
#define fls(x) generic_fls(x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
/*
|
||||
* hweightN - returns the hamming weight of a N-bit word
|
||||
|
@ -228,6 +228,7 @@ found_middle:
|
||||
\
|
||||
bit ? 33 - bit : bit; \
|
||||
})
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
/*
|
||||
* Every architecture must define this function. It's the fastest
|
||||
|
@ -56,6 +56,7 @@ extern __inline__ int test_bit(int nr, const unsigned long * addr)
|
||||
*/
|
||||
|
||||
#define fls(x) generic_fls(x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
|
@ -406,5 +406,6 @@ found_middle:
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#define fls(x) generic_fls(x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
#endif /* _H8300_BITOPS_H */
|
||||
|
@ -372,6 +372,7 @@ static inline unsigned long ffz(unsigned long word)
|
||||
*/
|
||||
|
||||
#define fls(x) generic_fls(x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
|
@ -345,6 +345,7 @@ fls (int t)
|
||||
x |= x >> 16;
|
||||
return ia64_popcnt(x);
|
||||
}
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
/*
|
||||
* ffs: find first bit set. This is defined the same way as the libc and compiler builtin
|
||||
|
@ -465,6 +465,7 @@ static __inline__ unsigned long __ffs(unsigned long word)
|
||||
* fls: find last bit set.
|
||||
*/
|
||||
#define fls(x) generic_fls(x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
|
@ -310,6 +310,7 @@ static inline int fls(int x)
|
||||
|
||||
return 32 - cnt;
|
||||
}
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
/*
|
||||
* Every architecture must define this function. It's the fastest
|
||||
|
@ -499,5 +499,6 @@ found_middle:
|
||||
* fls: find last bit set.
|
||||
*/
|
||||
#define fls(x) generic_fls(x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
#endif /* _M68KNOMMU_BITOPS_H */
|
||||
|
@ -695,7 +695,7 @@ static inline unsigned long fls(unsigned long word)
|
||||
|
||||
return flz(~word) + 1;
|
||||
}
|
||||
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
/*
|
||||
* find_next_zero_bit - find the first zero bit in a memory region
|
||||
|
@ -263,6 +263,7 @@ static __inline__ int fls(int x)
|
||||
|
||||
return ret;
|
||||
}
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
/*
|
||||
* hweightN: returns the hamming weight (i.e. the number
|
||||
|
@ -310,6 +310,7 @@ static __inline__ int fls(unsigned int x)
|
||||
asm ("cntlzw %0,%1" : "=r" (lz) : "r" (x));
|
||||
return 32 - lz;
|
||||
}
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
/*
|
||||
* hweightN: returns the hamming weight (i.e. the number
|
||||
|
@ -839,6 +839,7 @@ static inline int sched_find_first_bit(unsigned long *b)
|
||||
* fls: find last bit set.
|
||||
*/
|
||||
#define fls(x) generic_fls(x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
/*
|
||||
* hweightN: returns the hamming weight (i.e. the number
|
||||
|
@ -470,6 +470,7 @@ found_middle:
|
||||
*/
|
||||
|
||||
#define fls(x) generic_fls(x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
@ -510,6 +510,7 @@ found_middle:
|
||||
|
||||
#define ffs(x) generic_ffs(x)
|
||||
#define fls(x) generic_fls(x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
@ -298,6 +298,7 @@ static inline int ffs(int x)
|
||||
* Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
|
||||
*/
|
||||
#define fls(x) generic_fls(x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
/*
|
||||
* hweightN: returns the hamming weight (i.e. the number
|
||||
|
@ -119,6 +119,7 @@ static inline unsigned long __ffs(unsigned long word)
|
||||
*/
|
||||
|
||||
#define fls(x) generic_fls(x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
|
@ -276,6 +276,7 @@ found_middle:
|
||||
|
||||
#define ffs(x) generic_ffs (x)
|
||||
#define fls(x) generic_fls (x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
#define __ffs(x) ffs(x)
|
||||
|
||||
|
||||
|
@ -409,6 +409,7 @@ static __inline__ int ffs(int x)
|
||||
|
||||
/* find last set bit */
|
||||
#define fls(x) generic_fls(x)
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
|
@ -245,6 +245,7 @@ static __inline__ int fls (unsigned int x)
|
||||
{
|
||||
return __cntlz(x);
|
||||
}
|
||||
#define fls64(x) generic_fls64(x)
|
||||
|
||||
static __inline__ int
|
||||
find_next_bit(const unsigned long *addr, int size, int offset)
|
||||
|
@ -76,6 +76,15 @@ static __inline__ int generic_fls(int x)
|
||||
*/
|
||||
#include <asm/bitops.h>
|
||||
|
||||
|
||||
static inline int generic_fls64(__u64 x)
|
||||
{
|
||||
__u32 h = x >> 32;
|
||||
if (h)
|
||||
return fls(x) + 32;
|
||||
return fls(x);
|
||||
}
|
||||
|
||||
static __inline__ int get_bitmask_order(unsigned int count)
|
||||
{
|
||||
int order;
|
||||
|
Loading…
Reference in New Issue
Block a user