[FLS64]: generic version
authorStephen Hemminger <shemminger@osdl.org>
Thu, 22 Dec 2005 03:30:53 +0000 (19:30 -0800)
committerDavid S. Miller <davem@sunset.davemloft.net>
Tue, 3 Jan 2006 21:11:06 +0000 (13:11 -0800)
Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
24 files changed:
include/asm-alpha/bitops.h
include/asm-arm/bitops.h
include/asm-arm26/bitops.h
include/asm-cris/bitops.h
include/asm-frv/bitops.h
include/asm-generic/bitops.h
include/asm-h8300/bitops.h
include/asm-i386/bitops.h
include/asm-ia64/bitops.h
include/asm-m32r/bitops.h
include/asm-m68k/bitops.h
include/asm-m68knommu/bitops.h
include/asm-mips/bitops.h
include/asm-parisc/bitops.h
include/asm-powerpc/bitops.h
include/asm-s390/bitops.h
include/asm-sh/bitops.h
include/asm-sh64/bitops.h
include/asm-sparc/bitops.h
include/asm-sparc64/bitops.h
include/asm-v850/bitops.h
include/asm-x86_64/bitops.h
include/asm-xtensa/bitops.h
include/linux/bitops.h

index 578ed3f1a6071d831248a6164694ac4d1492c712..302201f1a0978b0a0c7db477edb498a7fc57fd9e 100644 (file)
@@ -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)
index 7399d431edfeeb1a4771833ef3c2e20a85e3a1c0..d02de721ecc185cdcfcbe6f5e707083c477e5413 100644 (file)
@@ -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) )
index 7d062fb2e34380eabfa60394345e7d27df694a34..15cc6f2da792dc7dec67d6698b863bb47750b667 100644 (file)
@@ -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
index 1bddb3f3a289eddfa320a4519689c3081d9d1c0e..d3eb0f1e42085c7911aaa6f5d4303d38a78cd022 100644 (file)
@@ -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
index b664bd5b66635a473abb21691502da08c122e4f6..02be7b3a8a83fd3fcd652472a4b3848c45cbd255 100644 (file)
@@ -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
index ce31b739fd80ff211e5583cf4b2c6cc762f6a037..0e6d9852008ca36c4826a27f46b9cc26b303ab62 100644 (file)
@@ -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__
 
index 5036f595f8c927d1ebbb167d7e9e8cf93ae84603..c0411ec9d651785200e64d45734983db17d2fcbc 100644 (file)
@@ -406,5 +406,6 @@ found_middle:
 #endif /* __KERNEL__ */
 
 #define fls(x) generic_fls(x)
+#define fls64(x)   generic_fls64(x)
 
 #endif /* _H8300_BITOPS_H */
index ddf1739dc7fd1968954ff0eed7d9053346f1360f..4807aa1d2e3d865fe41c70045da8d4ccd0a4bbfc 100644 (file)
@@ -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__
 
index 7232528e2d0c13771f6f62af20de13455aedb30b..36d0fb95ea89dc5113919f03cc0dde9896a6efeb 100644 (file)
@@ -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
index e78443981349df080c2812d82927429f10aa2d85..abea2fdd868971bd1ae499a56e2aa4f58441fbed 100644 (file)
@@ -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__
 
index b1bcf7c66516f78bb4bbc553f0244f7b7535bb63..13f4c00484632b0a396c4b3ecf14e5b40251ca84 100644 (file)
@@ -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
index c42f88a9b9f986d25b3f859d38b9f3794ff17378..4058dd086a029d8a16515f6933fb65eb69ceab90 100644 (file)
@@ -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 */
index 5496f9064a6aa6cab1c4d586606b9b867f3e6326..3b0c8aaf6e8bfaf62ec78fd854fe790a7af3f907 100644 (file)
@@ -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
index 55b98c67fd82d60ef49fe64e7892f335082fc4c1..15d8c2b5158408b13588229a0581b0577eae4f7a 100644 (file)
@@ -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
index 5727229b0444aee452dd73f79a850d8f18ac89a0..1996eaa8aeae9abe0644277c87e384809d378957 100644 (file)
@@ -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
index b07c578b22ea677d55f9bf147d8791a18c75a20e..61232760cc3bd50e5d5b72248f23d03dd3fdf87a 100644 (file)
@@ -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
index 5163d1ff2f1bd365826c4b391859af045dfe96a0..1c526086004543db2afff93f9bed227a1366aecc 100644 (file)
@@ -470,6 +470,7 @@ found_middle:
  */
 
 #define fls(x) generic_fls(x)
+#define fls64(x)   generic_fls64(x)
 
 #endif /* __KERNEL__ */
 
index e1ff63e092276b1daeef1d5e9062a47dd4e96dc9..ce9c3ad45fe027ba8756ba6ab037981313ed347c 100644 (file)
@@ -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__ */
 
index bfbd795a0a80579e1168dff755de89f837c4a687..41722b5e45ef02da75ec02d35eed5c90ac7f8a91 100644 (file)
@@ -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
index 6388b8376c50227bc8609d87a40e52451f74a435..6efc0162fb09b8e2fa6beb9de1eb5ebfc4ffdf15 100644 (file)
@@ -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__
 
index b91e799763fdf4f3896b20abb17563323f717b76..8955d2376ac824e5e3a7bd3e97459b442f206cf7 100644 (file)
@@ -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)
 
 
index 05a0d374404b0fb5ae24cfff181f6cf77aec6a75..94b52c8ce97f22d21bfd4a26ae7b34766c9f74be 100644 (file)
@@ -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__ */
 
index e76ee889e21dadf98702fdc1756b540752b1b355..0a2065f1a372dc8619bfa3cbc6924b7b0c8fb2b2 100644 (file)
@@ -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)
index 38c2fb7ebe091bc7c252193a614abca2c5c244bb..6a2a19f14bb26bb3f4f49815b566c2a4e8353cab 100644 (file)
@@ -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;