|
@@ -112,6 +112,25 @@ static inline unsigned fls_long(unsigned long l)
|
|
|
return fls64(l);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * __ffs64 - find first set bit in a 64 bit word
|
|
|
+ * @word: The 64 bit word
|
|
|
+ *
|
|
|
+ * On 64 bit arches this is a synomyn for __ffs
|
|
|
+ * The result is not defined if no bits are set, so check that @word
|
|
|
+ * is non-zero before calling this.
|
|
|
+ */
|
|
|
+static inline unsigned long __ffs64(u64 word)
|
|
|
+{
|
|
|
+#if BITS_PER_LONG == 32
|
|
|
+ if (((u32)word) == 0UL)
|
|
|
+ return __ffs((u32)(word >> 32)) + 32;
|
|
|
+#elif BITS_PER_LONG != 64
|
|
|
+#error BITS_PER_LONG not 32 or 64
|
|
|
+#endif
|
|
|
+ return __ffs((unsigned long)word);
|
|
|
+}
|
|
|
+
|
|
|
#ifdef __KERNEL__
|
|
|
#ifdef CONFIG_GENERIC_FIND_FIRST_BIT
|
|
|
|