S/390: Don't use r11 in INTERNAL_VSYSCALL_NCS macro
authorAndreas Krebbel <Andreas.Krebbel@de.ibm.com>
Wed, 20 Jul 2011 00:29:27 +0000 (20:29 -0400)
committerUlrich Drepper <drepper@gmail.com>
Wed, 20 Jul 2011 00:29:27 +0000 (20:29 -0400)
ChangeLog
sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h
sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h

index 7ec4bb0..69f134d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2011-07-13  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+       * 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  <mpolacek@redhat.com>
 
        * elf/dl-fini.c (_dl_sort_fini): Remove unused link_map *l argument,
index 5bfdc44..13ce9ab 100644 (file)
@@ -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
     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.  */
index 6491a3b..4d45417 100644 (file)
@@ -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
     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.  */