From 19df733e643ea2a0ea95385957163d0e3d5b2d1c Mon Sep 17 00:00:00 2001 From: Andreas Krebbel Date: Tue, 19 Jul 2011 20:29:27 -0400 Subject: [PATCH] S/390: Don't use r11 in INTERNAL_VSYSCALL_NCS macro --- ChangeLog | 9 +++++++++ sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h | 8 ++++---- sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h | 8 ++++---- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7ec4bb0ef4..69f134d0fa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2011-07-13 Andreas Krebbel + + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h + (INTERNAL_VSYSCALL_NCS): Use r10 for backing up the return address + register in order to avoid conflicts with the soft frame pointer + being held in r11 when necessary. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h + (INTERNAL_VSYSCALL_NCS): Likewise. + 2011-07-14 Marek Polacek * elf/dl-fini.c (_dl_sort_fini): Remove unused link_map *l argument, diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h index 5bfdc44f48..13ce9ab748 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h @@ -50,7 +50,7 @@ even if the call succeeded. E.g., the `lseek' system call might return a large offset. Therefore we must not anymore test for < 0, but test for a real error by making sure the value in gpr2 is a real error - number. Linus said he will make sure the no syscall returns a value + number. Linus said he will make sure that no syscall returns a value in -1 .. -4095 as a valid result so we can savely test with -4095. */ #undef PSEUDO @@ -368,12 +368,12 @@ DECLARGS_##nr(args) \ register long _ret asm("2"); \ asm volatile ( \ - "lr 11,14\n\t" \ + "lr 10,14\n\t" \ "basr 14,%1\n\t" \ - "lr 14,11\n\t" \ + "lr 14,10\n\t" \ : "=d" (_ret) \ : "d" (fn) ASMFMT_##nr \ - : "cc", "memory", "0", "1", "11" CLOBBER_##nr); \ + : "cc", "memory", "0", "1", "10" CLOBBER_##nr); \ _ret; }) /* Pointer mangling support. */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h index 6491a3b7b6..4d45417639 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h @@ -62,7 +62,7 @@ even if the call succeeded. E.g., the `lseek' system call might return a large offset. Therefore we must not anymore test for < 0, but test for a real error by making sure the value in gpr2 is a real error - number. Linus said he will make sure the no syscall returns a value + number. Linus said he will make sure that no syscall returns a value in -1 .. -4095 as a valid result so we can savely test with -4095. */ #undef PSEUDO @@ -370,12 +370,12 @@ DECLARGS_##nr(args) \ register long _ret asm("2"); \ asm volatile ( \ - "lgr 11,14\n\t" \ + "lgr 10,14\n\t" \ "basr 14,%1\n\t" \ - "lgr 14,11\n\t" \ + "lgr 14,10\n\t" \ : "=d" (_ret) \ : "a" (fn) ASMFMT_##nr \ - : "cc", "memory", "0", "1", "11" CLOBBER_##nr); \ + : "cc", "memory", "0", "1", "10" CLOBBER_##nr); \ _ret; }) /* Pointer mangling support. */