|
@@ -226,3 +226,19 @@ __constant_test_bit(unsigned long nr, const volatile void *addr)
|
|
|
return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr)[nr >> 5])) != 0;
|
|
|
}
|
|
|
|
|
|
+static inline int __test_bit(unsigned long nr, const volatile void *addr)
|
|
|
+{
|
|
|
+ int * a = (int *) addr;
|
|
|
+ int mask;
|
|
|
+
|
|
|
+ a += nr >> 5;
|
|
|
+ mask = 1 << (nr & 0x1f);
|
|
|
+ return ((mask & *a) != 0);
|
|
|
+}
|
|
|
+
|
|
|
+#define test_bit(nr,addr) \
|
|
|
+(__builtin_constant_p(nr) ? \
|
|
|
+ __constant_test_bit((nr),(addr)) : \
|
|
|
+ __test_bit((nr),(addr)))
|
|
|
+
|
|
|
+#include <asm-generic/bitops/find.h>
|