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 23261e8f2e5..6c3930397bd 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 | ||
