aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/lib/memset.S12
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S
index 671455c854fa..a4ee97b5a2bf 100644
--- a/arch/arm/lib/memset.S
+++ b/arch/arm/lib/memset.S
@@ -11,11 +11,13 @@
11 */ 11 */
12#include <linux/linkage.h> 12#include <linux/linkage.h>
13#include <asm/assembler.h> 13#include <asm/assembler.h>
14#include <asm/unwind.h>
14 15
15 .text 16 .text
16 .align 5 17 .align 5
17 18
18ENTRY(memset) 19ENTRY(memset)
20UNWIND( .fnstart )
19 ands r3, r0, #3 @ 1 unaligned? 21 ands r3, r0, #3 @ 1 unaligned?
20 mov ip, r0 @ preserve r0 as return value 22 mov ip, r0 @ preserve r0 as return value
21 bne 6f @ 1 23 bne 6f @ 1
@@ -34,6 +36,9 @@ ENTRY(memset)
34 * We need 2 extra registers for this loop - use r8 and the LR 36 * We need 2 extra registers for this loop - use r8 and the LR
35 */ 37 */
36 stmfd sp!, {r8, lr} 38 stmfd sp!, {r8, lr}
39UNWIND( .fnend )
40UNWIND( .fnstart )
41UNWIND( .save {r8, lr} )
37 mov r8, r1 42 mov r8, r1
38 mov lr, r1 43 mov lr, r1
39 44
@@ -53,6 +58,7 @@ ENTRY(memset)
53 tst r2, #16 58 tst r2, #16
54 stmneia ip!, {r1, r3, r8, lr} 59 stmneia ip!, {r1, r3, r8, lr}
55 ldmfd sp!, {r8, lr} 60 ldmfd sp!, {r8, lr}
61UNWIND( .fnend )
56 62
57#else 63#else
58 64
@@ -62,6 +68,9 @@ ENTRY(memset)
62 */ 68 */
63 69
64 stmfd sp!, {r4-r8, lr} 70 stmfd sp!, {r4-r8, lr}
71UNWIND( .fnend )
72UNWIND( .fnstart )
73UNWIND( .save {r4-r8, lr} )
65 mov r4, r1 74 mov r4, r1
66 mov r5, r1 75 mov r5, r1
67 mov r6, r1 76 mov r6, r1
@@ -94,9 +103,11 @@ ENTRY(memset)
94 tst r2, #16 103 tst r2, #16
95 stmneia ip!, {r4-r7} 104 stmneia ip!, {r4-r7}
96 ldmfd sp!, {r4-r8, lr} 105 ldmfd sp!, {r4-r8, lr}
106UNWIND( .fnend )
97 107
98#endif 108#endif
99 109
110UNWIND( .fnstart )
1004: tst r2, #8 1114: tst r2, #8
101 stmneia ip!, {r1, r3} 112 stmneia ip!, {r1, r3}
102 tst r2, #4 113 tst r2, #4
@@ -120,4 +131,5 @@ ENTRY(memset)
120 strb r1, [ip], #1 @ 1 131 strb r1, [ip], #1 @ 1
121 add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3)) 132 add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3))
122 b 1b 133 b 1b
134UNWIND( .fnend )
123ENDPROC(memset) 135ENDPROC(memset)