diff options
Diffstat (limited to 'arch/m68k/include/asm/bitops_no.h')
-rw-r--r-- | arch/m68k/include/asm/bitops_no.h | 46 |
1 files changed, 2 insertions, 44 deletions
diff --git a/arch/m68k/include/asm/bitops_no.h b/arch/m68k/include/asm/bitops_no.h index 52793ebc447..72e85acdd7b 100644 --- a/arch/m68k/include/asm/bitops_no.h +++ b/arch/m68k/include/asm/bitops_no.h @@ -321,50 +321,8 @@ found_middle: } #define find_next_zero_bit_le find_next_zero_bit_le -static inline unsigned long find_next_bit_le(const void *addr, unsigned - long size, unsigned long offset) -{ - const unsigned long *p = addr; - unsigned long result = offset & ~(BITS_PER_LONG - 1); - unsigned long tmp; - - if (offset >= size) - return size; - p += offset / BITS_PER_LONG; - size -= result; - offset &= (BITS_PER_LONG - 1UL); - if (offset) { - tmp = __swab32(*(p++)); - tmp &= (~0UL << offset); - if (size < BITS_PER_LONG) - goto found_first; - if (tmp) - goto found_middle; - size -= BITS_PER_LONG; - result += BITS_PER_LONG; - } - - while (size & ~(BITS_PER_LONG - 1)) { - tmp = *(p++); - if (tmp) - goto found_middle_swap; - result += BITS_PER_LONG; - size -= BITS_PER_LONG; - } - if (!size) - return result; - tmp = __swab32(*p); -found_first: - tmp &= (~0UL >> (BITS_PER_LONG - size)); - if (tmp == 0UL) /* Are any bits set? */ - return result + size; /* Nope. */ -found_middle: - return result + __ffs(tmp); - -found_middle_swap: - return result + __ffs(__swab32(tmp)); -} -#define find_next_bit_le find_next_bit_le +extern unsigned long find_next_bit_le(const void *addr, + unsigned long size, unsigned long offset); #endif /* __KERNEL__ */ |