This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / arch / arm / lib / io-writesl.S
index f8f14dd..20b3ee2 100644 (file)
@@ -9,58 +9,53 @@
  */
 #include <linux/linkage.h>
 #include <asm/assembler.h>
+#include <asm/hardware.h>
 
 ENTRY(__raw_writesl)
                teq     r2, #0          @ do we have to check for the zero len?
                moveq   pc, lr
                ands    ip, r1, #3
-               bne     3f
+               bne     2f
 
-               subs    r2, r2, #4
-               bmi     2f
-               stmfd   sp!, {r4, lr}
-1:             ldmia   r1!, {r3, r4, ip, lr}
-               subs    r2, r2, #4
-               str     r3, [r0, #0]
-               str     r4, [r0, #0]
-               str     ip, [r0, #0]
-               str     lr, [r0, #0]
-               bpl     1b
-               ldmfd   sp!, {r4, lr}
-2:             movs    r2, r2, lsl #31
-               ldmcsia r1!, {r3, ip}
+               tst     r2, #1
+               ldrne   r3, [r1], #4
+               strne   r3, [r0, #0]
+1:             subs    r2, r2, #2
+               ldrcs   r3, [r1], #4
+               ldrcs   ip, [r1], #4
                strcs   r3, [r0, #0]
-               ldrne   r3, [r1, #0]
                strcs   ip, [r0, #0]
-               strne   r3, [r0, #0]
+               bcs     1b
                mov     pc, lr
 
-3:             bic     r1, r1, #3
-               ldr     r3, [r1], #4
+2:             bic     r1, r1, #3
                cmp     ip, #2
+               ldr     r3, [r1], #4
+               bgt     4f
                blt     5f
-               bgt     6f
 
-4:             mov     ip, r3, pull #16
+3:             mov     ip, r3, lsr #16
                ldr     r3, [r1], #4
                subs    r2, r2, #1
-               orr     ip, ip, r3, push #16
-               str     ip, [r0]
-               bne     4b
+               orr     ip, ip, r3, lsl #16
+               str     ip, [r0, #0]
+               bne     3b
                mov     pc, lr
 
-5:             mov     ip, r3, pull #8
+4:             mov     ip, r3, lsr #24
                ldr     r3, [r1], #4
                subs    r2, r2, #1
-               orr     ip, ip, r3, push #24
-               str     ip, [r0]
-               bne     5b
+               orr     ip, ip, r3, lsl #8
+               str     ip, [r0, #0]
+               bne     4b
                mov     pc, lr
 
-6:             mov     ip, r3, pull #24
+5:             mov     ip, r3, lsr #8
                ldr     r3, [r1], #4
                subs    r2, r2, #1
-               orr     ip, ip, r3, push #8
-               str     ip, [r0]
-               bne     6b
+               orr     ip, ip, r3, lsl #24
+               str     ip, [r0, #0]
+               bne     5b
                mov     pc, lr
+
+