diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/s390/s390-32/memcpy.S | 13 |
2 files changed, 10 insertions, 8 deletions
@@ -1,3 +1,8 @@ +2016-07-20 Stefan Liebler <stli@linux.vnet.ibm.com> + + * sysdeps/s390/s390-32/memcpy.S (memcpy): Eliminate the usage + of r13 as it is not restored in mvcle case. + 2016-07-19 Mike Frysinger <vapier@gentoo.org> * sysdeps/unix/sysv/linux/microblaze/sysdep.h (inline_syscall0): diff --git a/sysdeps/s390/s390-32/memcpy.S b/sysdeps/s390/s390-32/memcpy.S index 6be5104..1a8bdbf 100644 --- a/sysdeps/s390/s390-32/memcpy.S +++ b/sysdeps/s390/s390-32/memcpy.S @@ -42,20 +42,18 @@ ENTRY(memcpy) .machine "g5" lr %r1,%r2 # r1: Use as dest ; r2: Return dest .L_G5_start: - st %r13,52(%r15) - .cfi_offset 13, -44 - basr %r13,0 -.L_G5_16: ltr %r4,%r4 - je .L_G5_4 + je .L_G5_99 ahi %r4,-1 lr %r5,%r4 srl %r5,8 ltr %r5,%r5 jne .L_G5_13 - ex %r4,.L_G5_17-.L_G5_16(%r13) .L_G5_4: - l %r13,52(%r15) + basr %r5,0 +.L_G5_16: + ex %r4,.L_G5_17-.L_G5_16(%r5) +.L_G5_99: br %r14 .L_G5_13: chi %r5,4096 # Switch to mvcle for copies >1MB @@ -65,7 +63,6 @@ ENTRY(memcpy) la %r1,256(%r1) la %r3,256(%r3) brct %r5,.L_G5_12 - ex %r4,.L_G5_17-.L_G5_16(%r13) j .L_G5_4 .L_G5_17: mvc 0(1,%r1),0(%r3) |