aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-frv/bitops.h
diff options
context:
space:
mode:
authorRusty Russell <rusty@rustcorp.com.au>2009-01-03 00:44:05 -0500
committerRusty Russell <rusty@rustcorp.com.au>2009-01-03 00:44:05 -0500
commitee38e5140bafbf40e1bd25ab917ac8db54a27799 (patch)
treee05484a09e8b73692fd16663dd6b3deafc5116dc /include/asm-frv/bitops.h
parent0999769e6cad9b0e5abb7c513c0c3f16821f0884 (diff)
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.h13
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)
339 return 31 - bit; 339 return 31 - bit;
340} 340}
341 341
342/**
343 * __fls - find last (most-significant) set bit in a long word
344 * @word: the word to search
345 *
346 * Undefined if no set bit exists, so code should check against 0 first.
347 */
348static inline unsigned long __fls(unsigned long word)
349{
350 unsigned long bit;
351 asm("scan %1,gr0,%0" : "=r"(bit) : "r"(word));
352 return bit;
353}
354
342/* 355/*
343 * special slimline version of fls() for calculating ilog2_u32() 356 * special slimline version of fls() for calculating ilog2_u32()
344 * - note: no protection against n == 0 357 * - note: no protection against n == 0