diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2009-01-03 00:51:08 -0500 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2009-01-03 00:51:08 -0500 |
commit | 5ece5c5192d065c229da01e7b347c1d3877b59fa (patch) | |
tree | 755642823b24f869c4c67c7712f6fa45c4f87e9d /include | |
parent | 5c134dad43443aa9c9606eaf47c378a6b9c5c597 (diff) |
xtensa: 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')
-rw-r--r-- | include/asm-xtensa/bitops.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/asm-xtensa/bitops.h b/include/asm-xtensa/bitops.h index 23261e8f2e5a..6c3930397bd3 100644 --- a/include/asm-xtensa/bitops.h +++ b/include/asm-xtensa/bitops.h | |||
@@ -82,6 +82,16 @@ static inline int fls (unsigned int x) | |||
82 | return 32 - __cntlz(x); | 82 | return 32 - __cntlz(x); |
83 | } | 83 | } |
84 | 84 | ||
85 | /** | ||
86 | * __fls - find last (most-significant) set bit in a long word | ||
87 | * @word: the word to search | ||
88 | * | ||
89 | * Undefined if no set bit exists, so code should check against 0 first. | ||
90 | */ | ||
91 | static inline unsigned long __fls(unsigned long word) | ||
92 | { | ||
93 | return 31 - __cntlz(word); | ||
94 | } | ||
85 | #else | 95 | #else |
86 | 96 | ||
87 | /* Use the generic implementation if we don't have the nsa/nsau instructions. */ | 97 | /* Use the generic implementation if we don't have the nsa/nsau instructions. */ |
@@ -90,6 +100,7 @@ static inline int fls (unsigned int x) | |||
90 | # include <asm-generic/bitops/__ffs.h> | 100 | # include <asm-generic/bitops/__ffs.h> |
91 | # include <asm-generic/bitops/ffz.h> | 101 | # include <asm-generic/bitops/ffz.h> |
92 | # include <asm-generic/bitops/fls.h> | 102 | # include <asm-generic/bitops/fls.h> |
103 | # include <asm-generic/bitops/__fls.h> | ||
93 | 104 | ||
94 | #endif | 105 | #endif |
95 | 106 | ||