From: Rusty Russell <rusty@rustcorp.com.au>
Date: Sat, 3 Jan 2009 05:44:05 +0000 (+1030)
Subject: frv: define __fls
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=ee38e5140bafbf40e1bd25ab917ac8db54a27799;p=GitHub%2Fexynos8895%2Fandroid_kernel_samsung_universal8895.git

frv: define __fls

Like fls, but can't be handed 0 and returns the bit number.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
---

diff --git a/include/asm-frv/bitops.h b/include/asm-frv/bitops.h
index 39456ba0ec17..287f6f697ce2 100644
--- a/include/asm-frv/bitops.h
+++ b/include/asm-frv/bitops.h
@@ -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