Linux 2.6.18.4
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / include / asm-generic / bitops / ffs.h
blobfbbb43af7dc08201e78fb51b56746e6f28b1d3de
1 #ifndef _ASM_GENERIC_BITOPS_FFS_H_
2 #define _ASM_GENERIC_BITOPS_FFS_H_
4 /**
5 * ffs - find first bit set
6 * @x: the word to search
8 * This is defined the same way as
9 * the libc and compiler builtin ffs routines, therefore
10 * differs in spirit from the above ffz (man ffs).
12 static inline int ffs(int x)
14 int r = 1;
16 if (!x)
17 return 0;
18 if (!(x & 0xffff)) {
19 x >>= 16;
20 r += 16;
22 if (!(x & 0xff)) {
23 x >>= 8;
24 r += 8;
26 if (!(x & 0xf)) {
27 x >>= 4;
28 r += 4;
30 if (!(x & 3)) {
31 x >>= 2;
32 r += 2;
34 if (!(x & 1)) {
35 x >>= 1;
36 r += 1;
38 return r;
41 #endif /* _ASM_GENERIC_BITOPS_FFS_H_ */