This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 06/12] S390: Do not clobber R0 in 32-bit _dl_runtime_profile
- From: Ilya Leoshkevich <iii at linux dot ibm dot com>
- To: libc-alpha at sourceware dot org
- Cc: stli at linux dot ibm dot com, Ilya Leoshkevich <iii at linux dot ibm dot com>
- Date: Thu, 2 Aug 2018 09:57:29 +0200
- Subject: [PATCH 06/12] S390: Do not clobber R0 in 32-bit _dl_runtime_profile
- References: <20180802075735.3457-1-iii@linux.ibm.com>
Preparation for the usage of R0 by __fentry__.
* sysdeps/s390/s390-32/dl-trampoline.h (_dl_runtime_profile):
Do not clobber R0.
---
sysdeps/s390/s390-32/dl-trampoline.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/sysdeps/s390/s390-32/dl-trampoline.h b/sysdeps/s390/s390-32/dl-trampoline.h
index da50d9e9dc..f67a47c5d0 100644
--- a/sysdeps/s390/s390-32/dl-trampoline.h
+++ b/sysdeps/s390/s390-32/dl-trampoline.h
@@ -166,6 +166,7 @@ _dl_runtime_resolve:
# define V29_OFF -144
# define V30_OFF -128
# define V31_OFF -112
+# define R0_OFF -88
# define R12_OFF -84
# define R14_OFF -80
# define FRAMESIZE_OFF -76
@@ -182,6 +183,8 @@ _dl_runtime_resolve:
cfi_startproc
.align 16
_dl_runtime_profile:
+ st %r0,CFA_OFF+R0_OFF(%r15)
+ cfi_offset (r0, R0_OFF)
st %r12,CFA_OFF+R12_OFF(%r15) # r12 is used as backup of r15
cfi_offset (r12, R12_OFF)
st %r14,CFA_OFF+R14_OFF(%r15)
@@ -245,6 +248,7 @@ _dl_runtime_profile:
cfi_def_cfa_register (15)
l %r14,CFA_OFF+R14_OFF(%r15) # restore registers
l %r12,CFA_OFF+R12_OFF(%r15)
+ l %r0,CFA_OFF+R0_OFF(%r15)
br %r1 # tail call
cfi_def_cfa_register (12)
@@ -285,6 +289,7 @@ _dl_runtime_profile:
cfi_def_cfa_register (15)
l %r14,CFA_OFF+R14_OFF(%r15) # restore registers
l %r12,CFA_OFF+R12_OFF(%r15)
+ l %r0,CFA_OFF+R0_OFF(%r15)
lm %r2,%r3,CFA_OFF+RET_R2_OFF(%r15) # restore return values
ld %f0,CFA_OFF+RET_F0_OFF(%r15)
# ifdef RESTORE_VRS
@@ -316,6 +321,7 @@ _dl_runtime_profile:
# undef V29_OFF
# undef V30_OFF
# undef V31_OFF
+# undef R0_OFF
# undef R12_OFF
# undef R14_OFF
# undef FRAMESIZE_OFF
--
2.18.0