diff options
author | 2006-10-31 20:01:11 +0100 | |
---|---|---|
committer | 2006-11-06 10:43:24 +0100 | |
commit | 168c8fa32ff40d6caf7226a5abf2a0096f3393bf (patch) | |
tree | b58f6a66a4325e83482cbc43d88fae7c9ee1054a /arch/avr32 | |
parent | AVR32: Get rid of board_early_init (diff) | |
download | linux-168c8fa32ff40d6caf7226a5abf2a0096f3393bf.tar.gz linux-168c8fa32ff40d6caf7226a5abf2a0096f3393bf.tar.bz2 linux-168c8fa32ff40d6caf7226a5abf2a0096f3393bf.zip |
AVR32: Fix thinko in generic_find_next_zero_le_bit()
The existing implementation of this function seems to be looking for
a one although it should be looking for a zero. This causes trouble
for the ext2 filesystem, which tends to report -ENOSPC without this
patch.
Fix this by complementing each word before scanning.
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Diffstat (limited to 'arch/avr32')
-rw-r--r-- | arch/avr32/lib/findbit.S | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/avr32/lib/findbit.S b/arch/avr32/lib/findbit.S index 2b4856f4bf7c..c6b91dee857c 100644 --- a/arch/avr32/lib/findbit.S +++ b/arch/avr32/lib/findbit.S @@ -136,6 +136,7 @@ ENTRY(generic_find_next_zero_le_bit) /* offset is not word-aligned. Handle the first (32 - r10) bits */ ldswp.w r8, r12[0] sub r12, -4 + com r8 lsr r8, r8, r10 brne .L_found @@ -146,7 +147,7 @@ ENTRY(generic_find_next_zero_le_bit) /* Main loop. offset must be word-aligned */ 1: ldswp.w r8, r12[0] - cp.w r8, 0 + com r8 brne .L_found sub r12, -4 sub r9, 32 |