frv: define __fls
authorRusty Russell <rusty@rustcorp.com.au>
Sat, 3 Jan 2009 05:44:05 +0000 (16:14 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Sat, 3 Jan 2009 05:44:05 +0000 (16:14 +1030)
Like fls, but can't be handed 0 and returns the bit number.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
include/asm-frv/bitops.h

index 39456ba..287f6f6 100644 (file)
@@ -339,6 +339,19 @@ int __ffs(unsigned long x)
        return 31 - bit;
 }
 
+/**
+ * __fls - find last (most-significant) set bit in a long word
+ * @word: the word to search
+ *
+ * Undefined if no set bit exists, so code should check against 0 first.
+ */
+static inline unsigned long __fls(unsigned long word)
+{
+       unsigned long bit;
+       asm("scan %1,gr0,%0" : "=r"(bit) : "r"(word));
+       return bit;
+}
+
 /*
  * special slimline version of fls() for calculating ilog2_u32()
  * - note: no protection against n == 0