diff options
Diffstat (limited to 'firmware/asm/arm/memset.S')
-rw-r--r-- | firmware/asm/arm/memset.S | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/firmware/asm/arm/memset.S b/firmware/asm/arm/memset.S index 64cd95cc9e..d727f2a5ec 100644 --- a/firmware/asm/arm/memset.S +++ b/firmware/asm/arm/memset.S | |||
@@ -34,8 +34,8 @@ | |||
34 | 1: cmp r2, #4 @ 1 do we have enough | 34 | 1: cmp r2, #4 @ 1 do we have enough |
35 | blt 5f @ 1 bytes to align with? | 35 | blt 5f @ 1 bytes to align with? |
36 | cmp r3, #2 @ 1 | 36 | cmp r3, #2 @ 1 |
37 | strgtb r1, [r0, #-1]! @ 1 | 37 | strbgt r1, [r0, #-1]! @ 1 |
38 | strgeb r1, [r0, #-1]! @ 1 | 38 | strbge r1, [r0, #-1]! @ 1 |
39 | strb r1, [r0, #-1]! @ 1 | 39 | strb r1, [r0, #-1]! @ 1 |
40 | sub r2, r2, r3 @ 1 r2 = r2 - r3 | 40 | sub r2, r2, r3 @ 1 r2 = r2 - r3 |
41 | b 2f | 41 | b 2f |
@@ -65,24 +65,24 @@ memset: | |||
65 | mov lr, r1 | 65 | mov lr, r1 |
66 | 66 | ||
67 | 3: subs r2, r2, #64 | 67 | 3: subs r2, r2, #64 |
68 | stmgedb r0!, {r1, r3, ip, lr} @ 64 bytes at a time. | 68 | stmdbge r0!, {r1, r3, ip, lr} @ 64 bytes at a time. |
69 | stmgedb r0!, {r1, r3, ip, lr} | 69 | stmdbge r0!, {r1, r3, ip, lr} |
70 | stmgedb r0!, {r1, r3, ip, lr} | 70 | stmdbge r0!, {r1, r3, ip, lr} |
71 | stmgedb r0!, {r1, r3, ip, lr} | 71 | stmdbge r0!, {r1, r3, ip, lr} |
72 | bgt 3b | 72 | bgt 3b |
73 | ldrpc cond=eq @ Now <64 bytes to go. | 73 | ldrpc cond=eq @ Now <64 bytes to go. |
74 | /* | 74 | /* |
75 | * No need to correct the count; we're only testing bits from now on | 75 | * No need to correct the count; we're only testing bits from now on |
76 | */ | 76 | */ |
77 | tst r2, #32 | 77 | tst r2, #32 |
78 | stmnedb r0!, {r1, r3, ip, lr} | 78 | stmdbne r0!, {r1, r3, ip, lr} |
79 | stmnedb r0!, {r1, r3, ip, lr} | 79 | stmdbne r0!, {r1, r3, ip, lr} |
80 | tst r2, #16 | 80 | tst r2, #16 |
81 | stmnedb r0!, {r1, r3, ip, lr} | 81 | stmdbne r0!, {r1, r3, ip, lr} |
82 | ldr lr, [sp], #4 | 82 | ldr lr, [sp], #4 |
83 | 83 | ||
84 | 5: tst r2, #8 | 84 | 5: tst r2, #8 |
85 | stmnedb r0!, {r1, r3} | 85 | stmdbne r0!, {r1, r3} |
86 | tst r2, #4 | 86 | tst r2, #4 |
87 | strne r1, [r0, #-4]! | 87 | strne r1, [r0, #-4]! |
88 | /* | 88 | /* |
@@ -90,10 +90,10 @@ memset: | |||
90 | * may have an unaligned pointer as well. | 90 | * may have an unaligned pointer as well. |
91 | */ | 91 | */ |
92 | 6: tst r2, #2 | 92 | 6: tst r2, #2 |
93 | strneb r1, [r0, #-1]! | 93 | strbne r1, [r0, #-1]! |
94 | strneb r1, [r0, #-1]! | 94 | strbne r1, [r0, #-1]! |
95 | tst r2, #1 | 95 | tst r2, #1 |
96 | strneb r1, [r0, #-1]! | 96 | strbne r1, [r0, #-1]! |
97 | bx lr | 97 | bx lr |
98 | .end: | 98 | .end: |
99 | .size memset,.end-memset | 99 | .size memset,.end-memset |