1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- This makes memset follow the standard (instead of returning 0 on success). This
- is needed when certain versions of gcc optimizes around memset calls and assume
- that the address argument is preserved in %o0.
- Signed-off-by: Andreas Larsson <andreas@gaisler.com>
- diff -Nur linux-3.16.2.orig/arch/sparc/lib/memset.S linux-3.16.2/arch/sparc/lib/memset.S
- --- linux-3.16.2.orig/arch/sparc/lib/memset.S 2014-09-06 01:37:11.000000000 +0200
- +++ linux-3.16.2/arch/sparc/lib/memset.S 2014-09-18 09:53:49.563047773 +0200
- @@ -65,6 +65,8 @@
- .globl __memset_start, __memset_end
- __memset_start:
- memset:
- + mov %o0, %g1
- + mov 1, %g4
- and %o1, 0xff, %g3
- sll %g3, 8, %g2
- or %g3, %g2, %g3
- @@ -89,6 +91,7 @@
- sub %o0, %o2, %o0
-
- __bzero:
- + clr %g4
- mov %g0, %g3
- 1:
- cmp %o1, 7
- @@ -151,8 +154,8 @@
- bne,a 8f
- EX(stb %g3, [%o0], and %o1, 1)
- 8:
- - retl
- - clr %o0
- + b 0f
- + nop
- 7:
- be 13b
- orcc %o1, 0, %g0
- @@ -164,6 +167,12 @@
- bne 8b
- EX(stb %g3, [%o0 - 1], add %o1, 1)
- 0:
- + andcc %g4, 1, %g0
- + be 5f
- + nop
- + retl
- + mov %g1, %o0
- +5:
- retl
- clr %o0
- __memset_end:
|