Merge branch 'ec' into release
[sfrench/cifs-2.6.git] / arch / arm / lib / findbit.S
index 8c4defc4f3c482bf598f7dad0c519798b80f66ef..1e4cbd4e7be930f2515bece2a19c23f2f2a07845 100644 (file)
@@ -25,7 +25,10 @@ ENTRY(_find_first_zero_bit_le)
                teq     r1, #0  
                beq     3f
                mov     r2, #0
-1:             ldrb    r3, [r0, r2, lsr #3]
+1:
+ ARM(          ldrb    r3, [r0, r2, lsr #3]    )
+ THUMB(                lsr     r3, r2, #3              )
+ THUMB(                ldrb    r3, [r0, r3]            )
                eors    r3, r3, #0xff           @ invert bits
                bne     .L_found                @ any now set - found zero bit
                add     r2, r2, #8              @ next bit pointer
@@ -44,7 +47,9 @@ ENTRY(_find_next_zero_bit_le)
                beq     3b
                ands    ip, r2, #7
                beq     1b                      @ If new byte, goto old routine
-               ldrb    r3, [r0, r2, lsr #3]
+ ARM(          ldrb    r3, [r0, r2, lsr #3]    )
+ THUMB(                lsr     r3, r2, #3              )
+ THUMB(                ldrb    r3, [r0, r3]            )
                eor     r3, r3, #0xff           @ now looking for a 1 bit
                movs    r3, r3, lsr ip          @ shift off unused bits
                bne     .L_found
@@ -61,7 +66,10 @@ ENTRY(_find_first_bit_le)
                teq     r1, #0  
                beq     3f
                mov     r2, #0
-1:             ldrb    r3, [r0, r2, lsr #3]
+1:
+ ARM(          ldrb    r3, [r0, r2, lsr #3]    )
+ THUMB(                lsr     r3, r2, #3              )
+ THUMB(                ldrb    r3, [r0, r3]            )
                movs    r3, r3
                bne     .L_found                @ any now set - found zero bit
                add     r2, r2, #8              @ next bit pointer
@@ -80,7 +88,9 @@ ENTRY(_find_next_bit_le)
                beq     3b
                ands    ip, r2, #7
                beq     1b                      @ If new byte, goto old routine
-               ldrb    r3, [r0, r2, lsr #3]
+ ARM(          ldrb    r3, [r0, r2, lsr #3]    )
+ THUMB(                lsr     r3, r2, #3              )
+ THUMB(                ldrb    r3, [r0, r3]            )
                movs    r3, r3, lsr ip          @ shift off unused bits
                bne     .L_found
                orr     r2, r2, #7              @ if zero, then no bits here
@@ -95,7 +105,9 @@ ENTRY(_find_first_zero_bit_be)
                beq     3f
                mov     r2, #0
 1:             eor     r3, r2, #0x18           @ big endian byte ordering
-               ldrb    r3, [r0, r3, lsr #3]
+ ARM(          ldrb    r3, [r0, r3, lsr #3]    )
+ THUMB(                lsr     r3, #3                  )
+ THUMB(                ldrb    r3, [r0, r3]            )
                eors    r3, r3, #0xff           @ invert bits
                bne     .L_found                @ any now set - found zero bit
                add     r2, r2, #8              @ next bit pointer
@@ -111,7 +123,9 @@ ENTRY(_find_next_zero_bit_be)
                ands    ip, r2, #7
                beq     1b                      @ If new byte, goto old routine
                eor     r3, r2, #0x18           @ big endian byte ordering
-               ldrb    r3, [r0, r3, lsr #3]
+ ARM(          ldrb    r3, [r0, r3, lsr #3]    )
+ THUMB(                lsr     r3, #3                  )
+ THUMB(                ldrb    r3, [r0, r3]            )
                eor     r3, r3, #0xff           @ now looking for a 1 bit
                movs    r3, r3, lsr ip          @ shift off unused bits
                bne     .L_found
@@ -125,7 +139,9 @@ ENTRY(_find_first_bit_be)
                beq     3f
                mov     r2, #0
 1:             eor     r3, r2, #0x18           @ big endian byte ordering
-               ldrb    r3, [r0, r3, lsr #3]
+ ARM(          ldrb    r3, [r0, r3, lsr #3]    )
+ THUMB(                lsr     r3, #3                  )
+ THUMB(                ldrb    r3, [r0, r3]            )
                movs    r3, r3
                bne     .L_found                @ any now set - found zero bit
                add     r2, r2, #8              @ next bit pointer
@@ -141,7 +157,9 @@ ENTRY(_find_next_bit_be)
                ands    ip, r2, #7
                beq     1b                      @ If new byte, goto old routine
                eor     r3, r2, #0x18           @ big endian byte ordering
-               ldrb    r3, [r0, r3, lsr #3]
+ ARM(          ldrb    r3, [r0, r3, lsr #3]    )
+ THUMB(                lsr     r3, #3                  )
+ THUMB(                ldrb    r3, [r0, r3]            )
                movs    r3, r3, lsr ip          @ shift off unused bits
                bne     .L_found
                orr     r2, r2, #7              @ if zero, then no bits here