diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2009-01-03 16:14:05 +1030 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2009-01-03 16:14:05 +1030 |
commit | ee38e5140bafbf40e1bd25ab917ac8db54a27799 (patch) | |
tree | e05484a09e8b73692fd16663dd6b3deafc5116dc /include/asm-frv/bitops.h | |
parent | 0999769e6cad9b0e5abb7c513c0c3f16821f0884 (diff) | |
download | linux-ee38e5140bafbf40e1bd25ab917ac8db54a27799.tar.gz linux-ee38e5140bafbf40e1bd25ab917ac8db54a27799.tar.bz2 linux-ee38e5140bafbf40e1bd25ab917ac8db54a27799.zip |
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>
Diffstat (limited to 'include/asm-frv/bitops.h')
-rw-r--r-- | include/asm-frv/bitops.h | 13 |
1 files changed, 13 insertions, 0 deletions
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 |