linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / include / asm-h8300 / bitops.h
index 94b7a46..ff7c2b7 100644 (file)
@@ -6,7 +6,6 @@
  * Copyright 2002, Yoshinori Sato
  */
 
-#include <linux/kernel.h>
 #include <linux/config.h>
 #include <linux/compiler.h>
 #include <asm/byteorder.h>     /* swab32 */
@@ -181,6 +180,8 @@ H8300_GEN_TEST_BITOP(test_and_change_bit,"bnot")
 #define find_first_zero_bit(addr, size) \
        find_next_zero_bit((addr), (size), 0)
 
+#define ffs(x) generic_ffs(x)
+
 static __inline__ unsigned long __ffs(unsigned long word)
 {
        unsigned long result;
@@ -195,10 +196,7 @@ static __inline__ unsigned long __ffs(unsigned long word)
        return result;
 }
 
-#define ffs(x) generic_ffs(x)
-#define fls(x) generic_fls(x)
-
-static __inline__ int find_next_zero_bit (void * addr, int size, int offset)
+static __inline__ int find_next_zero_bit (const unsigned long * addr, int size, int offset)
 {
        unsigned long *p = (unsigned long *)(((unsigned long)addr + (offset >> 3)) & ~3);
        unsigned long result = offset & ~31UL;
@@ -229,7 +227,7 @@ static __inline__ int find_next_zero_bit (void * addr, int size, int offset)
        tmp = *p;
 
 found_first:
-       tmp |= ~0UL >> size;
+       tmp |= ~0UL << size;
 found_middle:
        return result + ffz(tmp);
 }
@@ -407,4 +405,7 @@ found_middle:
 
 #endif /* __KERNEL__ */
 
+#define fls(x) generic_fls(x)
+#define fls64(x)   generic_fls64(x)
+
 #endif /* _H8300_BITOPS_H */