diff options
Diffstat (limited to 'arch/arm/lib/io-writesb.S')
-rw-r--r-- | arch/arm/lib/io-writesb.S | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/arch/arm/lib/io-writesb.S b/arch/arm/lib/io-writesb.S index 70b2561bdb09..08209fc640ea 100644 --- a/arch/arm/lib/io-writesb.S +++ b/arch/arm/lib/io-writesb.S | |||
@@ -30,7 +30,7 @@ | |||
30 | #endif | 30 | #endif |
31 | .endm | 31 | .endm |
32 | 32 | ||
33 | .outsb_align: rsb ip, ip, #4 | 33 | .Loutsb_align: rsb ip, ip, #4 |
34 | cmp ip, r2 | 34 | cmp ip, r2 |
35 | movgt ip, r2 | 35 | movgt ip, r2 |
36 | cmp ip, #2 | 36 | cmp ip, #2 |
@@ -41,44 +41,45 @@ | |||
41 | ldrgtb r3, [r1], #1 | 41 | ldrgtb r3, [r1], #1 |
42 | strgtb r3, [r0] | 42 | strgtb r3, [r0] |
43 | subs r2, r2, ip | 43 | subs r2, r2, ip |
44 | bne .outsb_aligned | 44 | bne .Loutsb_aligned |
45 | 45 | ||
46 | ENTRY(__raw_writesb) | 46 | ENTRY(__raw_writesb) |
47 | teq r2, #0 @ do we have to check for the zero len? | 47 | teq r2, #0 @ do we have to check for the zero len? |
48 | moveq pc, lr | 48 | moveq pc, lr |
49 | ands ip, r1, #3 | 49 | ands ip, r1, #3 |
50 | bne .outsb_align | 50 | bne .Loutsb_align |
51 | 51 | ||
52 | .outsb_aligned: stmfd sp!, {r4, r5, lr} | 52 | .Loutsb_aligned: |
53 | stmfd sp!, {r4, r5, lr} | ||
53 | 54 | ||
54 | subs r2, r2, #16 | 55 | subs r2, r2, #16 |
55 | bmi .outsb_no_16 | 56 | bmi .Loutsb_no_16 |
56 | 57 | ||
57 | .outsb_16_lp: ldmia r1!, {r3, r4, r5, ip} | 58 | .Loutsb_16_lp: ldmia r1!, {r3, r4, r5, ip} |
58 | outword r3 | 59 | outword r3 |
59 | outword r4 | 60 | outword r4 |
60 | outword r5 | 61 | outword r5 |
61 | outword ip | 62 | outword ip |
62 | subs r2, r2, #16 | 63 | subs r2, r2, #16 |
63 | bpl .outsb_16_lp | 64 | bpl .Loutsb_16_lp |
64 | 65 | ||
65 | tst r2, #15 | 66 | tst r2, #15 |
66 | LOADREGS(eqfd, sp!, {r4, r5, pc}) | 67 | LOADREGS(eqfd, sp!, {r4, r5, pc}) |
67 | 68 | ||
68 | .outsb_no_16: tst r2, #8 | 69 | .Loutsb_no_16: tst r2, #8 |
69 | beq .outsb_no_8 | 70 | beq .Loutsb_no_8 |
70 | 71 | ||
71 | ldmia r1!, {r3, r4} | 72 | ldmia r1!, {r3, r4} |
72 | outword r3 | 73 | outword r3 |
73 | outword r4 | 74 | outword r4 |
74 | 75 | ||
75 | .outsb_no_8: tst r2, #4 | 76 | .Loutsb_no_8: tst r2, #4 |
76 | beq .outsb_no_4 | 77 | beq .Loutsb_no_4 |
77 | 78 | ||
78 | ldr r3, [r1], #4 | 79 | ldr r3, [r1], #4 |
79 | outword r3 | 80 | outword r3 |
80 | 81 | ||
81 | .outsb_no_4: ands r2, r2, #3 | 82 | .Loutsb_no_4: ands r2, r2, #3 |
82 | LOADREGS(eqfd, sp!, {r4, r5, pc}) | 83 | LOADREGS(eqfd, sp!, {r4, r5, pc}) |
83 | 84 | ||
84 | cmp r2, #2 | 85 | cmp r2, #2 |