LCOV - code coverage report
Current view: top level - lkbce/include/asm-generic/bitops - fls64.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 3 0.0 %
Date: 2017-01-25 Functions: 0 1 0.0 %

          Line data    Source code
       1             : #ifndef _ASM_GENERIC_BITOPS_FLS64_H_
       2             : #define _ASM_GENERIC_BITOPS_FLS64_H_
       3             : 
       4             : #include <asm/types.h>
       5             : 
       6             : /**
       7             :  * fls64 - find last set bit in a 64-bit word
       8             :  * @x: the word to search
       9             :  *
      10             :  * This is defined in a similar way as the libc and compiler builtin
      11             :  * ffsll, but returns the position of the most significant set bit.
      12             :  *
      13             :  * fls64(value) returns 0 if value is 0 or the position of the last
      14             :  * set bit if value is nonzero. The last (most significant) bit is
      15             :  * at position 64.
      16             :  */
      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           0 :         if (x == 0)
      29           0 :                 return 0;
      30           0 :         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_ */

Generated by: LCOV version 1.10