S390: Don't use r11 for cu-instructions as used as frame-pointer. [BZ# 32192]
Checks
Context |
Check |
Description |
redhat-pt-bot/TryBot-apply_patch |
success
|
Patch applied to master at the time it was sent
|
redhat-pt-bot/TryBot-32bit |
success
|
Build for i686
|
linaro-tcwg-bot/tcwg_glibc_build--master-aarch64 |
success
|
Build passed
|
linaro-tcwg-bot/tcwg_glibc_check--master-aarch64 |
success
|
Test passed
|
linaro-tcwg-bot/tcwg_glibc_build--master-arm |
success
|
Build passed
|
linaro-tcwg-bot/tcwg_glibc_check--master-arm |
success
|
Test passed
|
Commit Message
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.
---
sysdeps/s390/utf16-utf32-z9.c | 8 ++++----
sysdeps/s390/utf8-utf16-z9.c | 12 ++++++------
sysdeps/s390/utf8-utf32-z9.c | 12 ++++++------
3 files changed, 16 insertions(+), 16 deletions(-)
Comments
* Stefan Liebler:
> 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.
> ---
> sysdeps/s390/utf16-utf32-z9.c | 8 ++++----
> sysdeps/s390/utf8-utf16-z9.c | 12 ++++++------
> sysdeps/s390/utf8-utf32-z9.c | 12 ++++++------
> 3 files changed, 16 insertions(+), 16 deletions(-)
Looks reasonable to me.
Reviewed-by: Florian Weimer <fweimer@redhat.com>
Thanks,
Florian
@@ -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" \
@@ -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" \
@@ -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" \