Skip to content

Commit

Permalink
m68knommu: fix build error due to the lack of find_next_bit_le()
Browse files Browse the repository at this point in the history
m68knommu can't build ext4, udf, and ocfs2 due to the lack of
find_next_bit_le().

This implements find_next_bit_le() on m68knommu by duplicating the generic
find_next_bit_le() in lib/find_next_bit.c.

Signed-off-by: Akinobu Mita <[email protected]>
Acked-by: Greg Ungerer <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
mita authored and torvalds committed May 27, 2011
1 parent 275ac74 commit e081941
Showing 1 changed file with 44 additions and 0 deletions.
44 changes: 44 additions & 0 deletions arch/m68k/include/asm/bitops_no.h
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,50 @@ static inline unsigned long find_next_zero_bit_le(void *addr, unsigned long size
return result + ffz(__swab32(tmp));
}

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));
}

#endif /* __KERNEL__ */

#include <asm-generic/bitops/fls.h>
Expand Down

0 comments on commit e081941

Please sign in to comment.