summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/s390/s390-32/memcpy.S13
2 files changed, 10 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index a2939995d4..c5456d8c63 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 6be5104b68..1a8bdbf3cc 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)