aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/s390/utf8-utf32-z9.c
diff options
context:
space:
mode:
authorStefan Liebler <stli@linux.ibm.com>2024-09-27 10:26:29 +0200
committerStefan Liebler <stli@linux.ibm.com>2024-10-08 10:13:02 +0200
commit7949f552cb6a5f5e2a20c45d178b43910682caac (patch)
tree3d1405aad9a04dd54426cf37d0d3a4e2feeed548 /sysdeps/s390/utf8-utf32-z9.c
parentced745bcd3e0d58cfc38ebbbc36540b9dcdd29eb (diff)
downloadglibc-7949f552cb6a5f5e2a20c45d178b43910682caac.zip
glibc-7949f552cb6a5f5e2a20c45d178b43910682caac.tar.gz
glibc-7949f552cb6a5f5e2a20c45d178b43910682caac.tar.bz2
S390: Don't use r11 for cu-instructions as used as frame-pointer. [BZ# 32192]
Building the s390 specific iconv modules - utf16-utf32-z9.c, utf8-utf32-z9.c and utf8-utf16-z9.c - with -fno-omit-frame-pointer leads to a build error "error: %r11 cannot be used in 'asm' here" as r11 is needed as frame-pointer. The cuXY-instructions need two even-odd register pairs. Therefore the register pinning is used. This patch just uses a different register pair. Reviewed-by: Florian Weimer <fweimer@redhat.com>
Diffstat (limited to 'sysdeps/s390/utf8-utf32-z9.c')
-rw-r--r--sysdeps/s390/utf8-utf32-z9.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sysdeps/s390/utf8-utf32-z9.c b/sysdeps/s390/utf8-utf32-z9.c
index 9c4189a..e4323d6 100644
--- a/sysdeps/s390/utf8-utf32-z9.c
+++ b/sysdeps/s390/utf8-utf32-z9.c
@@ -170,8 +170,8 @@ gconv_end (struct __gconv_step *data)
{ \
register const unsigned char* pInput __asm__ ("8") = inptr; \
register size_t inlen __asm__ ("9") = inend - inptr; \
- register unsigned char* pOutput __asm__ ("10") = outptr; \
- register size_t outlen __asm__("11") = outend - outptr; \
+ register unsigned char* pOutput __asm__ ("6") = outptr; \
+ register size_t outlen __asm__("7") = outend - outptr; \
unsigned long cc = 0; \
\
__asm__ __volatile__ (".machine push \n\t" \
@@ -475,8 +475,8 @@ gconv_end (struct __gconv_step *data)
{ \
register const unsigned char* pInput asm ("8") = inptr; \
register size_t inlen asm ("9") = inend - inptr; \
- register unsigned char* pOutput asm ("10") = outptr; \
- register size_t outlen asm("11") = outend - outptr; \
+ register unsigned char* pOutput asm ("6") = outptr; \
+ register size_t outlen asm("7") = outend - outptr; \
unsigned long tmp, tmp2, tmp3; \
asm volatile (".machine push\n\t" \
".machine \"z13\"\n\t" \
@@ -864,8 +864,8 @@ gconv_end (struct __gconv_step *data)
{ \
register const unsigned char* pInput asm ("8") = inptr; \
register size_t inlen asm ("9") = inend - inptr; \
- register unsigned char* pOutput asm ("10") = outptr; \
- register size_t outlen asm ("11") = outend - outptr; \
+ register unsigned char* pOutput asm ("6") = outptr; \
+ register size_t outlen asm ("7") = outend - outptr; \
unsigned long tmp, tmp2; \
asm volatile (".machine push\n\t" \
".machine \"z13\"\n\t" \