diff options
author | Waldemar Brodkorb <wbx@openadk.org> | 2014-09-18 20:43:28 +0200 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2014-09-18 20:43:44 +0200 |
commit | fb478b6a0a6e7a7e0265cf74316729c97a46bd7a (patch) | |
tree | 4f89e1363e95d036a23268f7be46978800a26e5d /target/linux/patches | |
parent | bb8b353b2b60f1484993fa37867764c0ea0002c6 (diff) |
remove gcc workaround, issue is fixed in the kernel
Diffstat (limited to 'target/linux/patches')
-rw-r--r-- | target/linux/patches/3.16.2/sparc-memset.patch | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/target/linux/patches/3.16.2/sparc-memset.patch b/target/linux/patches/3.16.2/sparc-memset.patch new file mode 100644 index 000000000..022c87b3a --- /dev/null +++ b/target/linux/patches/3.16.2/sparc-memset.patch @@ -0,0 +1,50 @@ +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: |