Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
fls64.h
Go to the documentation of this file.
1 #ifndef _ASM_GENERIC_BITOPS_FLS64_H_
2 #define _ASM_GENERIC_BITOPS_FLS64_H_
3 
4 #include <asm/types.h>
5 
17 #if BITS_PER_LONG == 32
18 static __always_inline int fls64(__u64 x)
19 {
20  __u32 h = x >> 32;
21  if (h)
22  return fls(h) + 32;
23  return fls(x);
24 }
25 #elif BITS_PER_LONG == 64
26 static __always_inline int fls64(__u64 x)
27 {
28  if (x == 0)
29  return 0;
30  return __fls(x) + 1;
31 }
32 #else
33 #error BITS_PER_LONG not 32 or 64
34 #endif
35 
36 #endif /* _ASM_GENERIC_BITOPS_FLS64_H_ */