]> sourceware.org Git - glibc.git/commitdiff
S390: Don't use r11 for cu-instructions as used as frame-pointer. [BZ# 32192]
authorStefan Liebler <stli@linux.ibm.com>
Fri, 27 Sep 2024 08:26:29 +0000 (10:26 +0200)
committerStefan Liebler <stli@linux.ibm.com>
Tue, 8 Oct 2024 08:13:02 +0000 (10:13 +0200)
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>
sysdeps/s390/utf16-utf32-z9.c
sysdeps/s390/utf8-utf16-z9.c
sysdeps/s390/utf8-utf32-z9.c

index 51dd979607df8710652d9d2bf5c4b3b30f10af39..9ac8a82df82a1c31368f7ac908d6e64460f744fa 100644 (file)
@@ -397,8 +397,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"                                \
@@ -707,8 +707,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"                                \
index 421747f05828192633b15bef8a0e254729ffc8e4..d19fc3c97b4957a339c6719d4c4626cc4c1760b5 100644 (file)
@@ -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"                   \
@@ -242,8 +242,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"                                \
@@ -818,8 +818,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"                                \
index 9c4189a5f08fb878f13d2193b0ccd288d8d6a539..e4323d634cd6000a8d9c52f5c16fb7d288300e08 100644 (file)
@@ -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"                                \
This page took 0.046886 seconds and 5 git commands to generate.