avr32: add generic_find_next_le_bit bit function
This patch implements the generic_find_next_le_bit bit function for AVR32 architecture. This is used by EXT4 file system. Signed-off-by: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com> Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
This commit is contained in:
parent
1b771c12b5
commit
e37925ebdb
2 changed files with 31 additions and 0 deletions
|
@ -58,6 +58,7 @@ EXPORT_SYMBOL(find_first_zero_bit);
|
|||
EXPORT_SYMBOL(find_next_zero_bit);
|
||||
EXPORT_SYMBOL(find_first_bit);
|
||||
EXPORT_SYMBOL(find_next_bit);
|
||||
EXPORT_SYMBOL(generic_find_next_le_bit);
|
||||
EXPORT_SYMBOL(generic_find_next_zero_le_bit);
|
||||
|
||||
/* I/O primitives (lib/io-*.S) */
|
||||
|
|
|
@ -123,6 +123,36 @@ ENTRY(find_next_bit)
|
|||
brgt 1b
|
||||
retal r11
|
||||
|
||||
ENTRY(generic_find_next_le_bit)
|
||||
lsr r8, r10, 5
|
||||
sub r9, r11, r10
|
||||
retle r11
|
||||
|
||||
lsl r8, 2
|
||||
add r12, r8
|
||||
andl r10, 31, COH
|
||||
breq 1f
|
||||
|
||||
/* offset is not word-aligned. Handle the first (32 - r10) bits */
|
||||
ldswp.w r8, r12[0]
|
||||
sub r12, -4
|
||||
lsr r8, r8, r10
|
||||
brne .L_found
|
||||
|
||||
/* r9 = r9 - (32 - r10) = r9 + r10 - 32 */
|
||||
add r9, r10
|
||||
sub r9, 32
|
||||
retle r11
|
||||
|
||||
/* Main loop. offset must be word-aligned */
|
||||
1: ldswp.w r8, r12[0]
|
||||
cp.w r8, 0
|
||||
brne .L_found
|
||||
sub r12, -4
|
||||
sub r9, 32
|
||||
brgt 1b
|
||||
retal r11
|
||||
|
||||
ENTRY(generic_find_next_zero_le_bit)
|
||||
lsr r8, r10, 5
|
||||
sub r9, r11, r10
|
||||
|
|
Loading…
Reference in a new issue