diff options
| -rw-r--r-- | include/asm-powerpc/bitops.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/asm-powerpc/bitops.h b/include/asm-powerpc/bitops.h index 36c8f3a43792..a99a74929475 100644 --- a/include/asm-powerpc/bitops.h +++ b/include/asm-powerpc/bitops.h | |||
| @@ -312,7 +312,24 @@ static __inline__ int fls(unsigned int x) | |||
| 312 | asm ("cntlzw %0,%1" : "=r" (lz) : "r" (x)); | 312 | asm ("cntlzw %0,%1" : "=r" (lz) : "r" (x)); |
| 313 | return 32 - lz; | 313 | return 32 - lz; |
| 314 | } | 314 | } |
| 315 | |||
| 316 | /* | ||
| 317 | * 64-bit can do this using one cntlzd (count leading zeroes doubleword) | ||
| 318 | * instruction; for 32-bit we use the generic version, which does two | ||
| 319 | * 32-bit fls calls. | ||
| 320 | */ | ||
| 321 | #ifdef __powerpc64__ | ||
| 322 | static __inline__ int fls64(__u64 x) | ||
| 323 | { | ||
| 324 | int lz; | ||
| 325 | |||
| 326 | asm ("cntlzd %0,%1" : "=r" (lz) : "r" (x)); | ||
| 327 | return 64 - lz; | ||
| 328 | } | ||
| 329 | #else | ||
| 315 | #include <asm-generic/bitops/fls64.h> | 330 | #include <asm-generic/bitops/fls64.h> |
| 331 | #endif /* __powerpc64__ */ | ||
| 332 | |||
| 316 | #include <asm-generic/bitops/hweight.h> | 333 | #include <asm-generic/bitops/hweight.h> |
| 317 | #include <asm-generic/bitops/find.h> | 334 | #include <asm-generic/bitops/find.h> |
| 318 | 335 | ||
