This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi! USE___THREAD is always defined, to 0 or 1, so even --without-__thread it would try to use TLS sequence. Also, I thought the minimum required compiler is gcc 3.2, not 3.3, and 3.2 doesn't have 'v' constraint (I can backport it to gcc-3_2-rhl8-branch, but we'd have to claim that minimal required compiler on alpha is gcc-3_2-rhl8-branch or 3.3). BTW: There was a stale _sc_0 in inline_syscall5 macro even if 'v' constraint works 2002-11-28 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/alpha/sysdep.S: Change defined(USE___THREAD) to USE___THREAD. * sysdeps/unix/sysv/linux/alpha/sysdep.h (inline_syscall*): Avoid "=v" constraints. --- libc/sysdeps/unix/alpha/sysdep.S.jj 2002-11-08 11:39:38.000000000 +0100 +++ libc/sysdeps/unix/alpha/sysdep.S 2002-11-28 18:51:17.000000000 +0100 @@ -45,7 +45,7 @@ .ent __syscall_error __syscall_error: -#if defined(_LIBC_REENTRANT) && defined(USE___THREAD) +#if defined(_LIBC_REENTRANT) && USE___THREAD LOADGP PROLOGUE --- libc/sysdeps/unix/sysv/linux/alpha/sysdep.h.jj 2002-11-08 11:39:46.000000000 +0100 +++ libc/sysdeps/unix/sysv/linux/alpha/sysdep.h 2002-11-28 18:19:55.000000000 +0100 @@ -93,105 +93,117 @@ #define inline_syscall0(name) \ { \ + register long _sc_0 __asm__("$0"); \ register long _sc_19 __asm__("$19"); \ \ + _sc_0 = __NR_##name; \ __asm__("callsys # %0 %1 <= %2" \ - : "=v"(_sc_ret), "=r"(_sc_19) \ - : "0"(__NR_##name) \ + : "=r"(_sc_0), "=r"(_sc_19) \ + : "0"(_sc_0) \ : inline_syscall_clobbers, \ "$16", "$17", "$18", "$20", "$21"); \ - _sc_err = _sc_19; \ + _sc_ret = _sc_0, _sc_err = _sc_19; \ } #define inline_syscall1(name,arg1) \ { \ + register long _sc_0 __asm__("$0"); \ register long _sc_16 __asm__("$16"); \ register long _sc_19 __asm__("$19"); \ \ + _sc_0 = __NR_##name; \ _sc_16 = (long) (arg1); \ __asm__("callsys # %0 %1 <= %2 %3" \ - : "=v"(_sc_ret), "=r"(_sc_19), \ + : "=r"(_sc_0), "=r"(_sc_19), \ "=r"(_sc_16) \ - : "0"(__NR_##name), "2"(_sc_16) \ + : "0"(_sc_0), "2"(_sc_16) \ : inline_syscall_clobbers, \ "$17", "$18", "$20", "$21"); \ - _sc_err = _sc_19; \ + _sc_ret = _sc_0, _sc_err = _sc_19; \ } #define inline_syscall2(name,arg1,arg2) \ { \ + register long _sc_0 __asm__("$0"); \ register long _sc_16 __asm__("$16"); \ register long _sc_17 __asm__("$17"); \ register long _sc_19 __asm__("$19"); \ \ + _sc_0 = __NR_##name; \ _sc_16 = (long) (arg1); \ _sc_17 = (long) (arg2); \ __asm__("callsys # %0 %1 <= %2 %3 %4" \ - : "=v"(_sc_ret), "=r"(_sc_19), \ + : "=r"(_sc_0), "=r"(_sc_19), \ "=r"(_sc_16), "=r"(_sc_17) \ - : "0"(__NR_##name), "2"(_sc_16), "3"(_sc_17) \ + : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17) \ : inline_syscall_clobbers, \ "$18", "$20", "$21"); \ - _sc_err = _sc_19; \ + _sc_ret = _sc_0, _sc_err = _sc_19; \ } #define inline_syscall3(name,arg1,arg2,arg3) \ { \ + register long _sc_0 __asm__("$0"); \ register long _sc_16 __asm__("$16"); \ register long _sc_17 __asm__("$17"); \ register long _sc_18 __asm__("$18"); \ register long _sc_19 __asm__("$19"); \ \ + _sc_0 = __NR_##name; \ _sc_16 = (long) (arg1); \ _sc_17 = (long) (arg2); \ _sc_18 = (long) (arg3); \ __asm__("callsys # %0 %1 <= %2 %3 %4 %5" \ - : "=v"(_sc_ret), "=r"(_sc_19), \ + : "=r"(_sc_0), "=r"(_sc_19), \ "=r"(_sc_16), "=r"(_sc_17), "=r"(_sc_18) \ - : "0"(__NR_##name), "2"(_sc_16), "3"(_sc_17), \ + : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \ "4"(_sc_18) \ : inline_syscall_clobbers, "$20", "$21"); \ - _sc_err = _sc_19; \ + _sc_ret = _sc_0, _sc_err = _sc_19; \ } #define inline_syscall4(name,arg1,arg2,arg3,arg4) \ { \ + register long _sc_0 __asm__("$0"); \ register long _sc_16 __asm__("$16"); \ register long _sc_17 __asm__("$17"); \ register long _sc_18 __asm__("$18"); \ register long _sc_19 __asm__("$19"); \ \ + _sc_0 = __NR_##name; \ _sc_16 = (long) (arg1); \ _sc_17 = (long) (arg2); \ _sc_18 = (long) (arg3); \ _sc_19 = (long) (arg4); \ __asm__("callsys # %0 %1 <= %2 %3 %4 %5 %6" \ - : "=v"(_sc_ret), "=r"(_sc_19), \ + : "=r"(_sc_0), "=r"(_sc_19), \ "=r"(_sc_16), "=r"(_sc_17), "=r"(_sc_18) \ - : "0"(__NR_##name), "2"(_sc_16), "3"(_sc_17), \ + : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \ "4"(_sc_18), "1"(_sc_19) \ : inline_syscall_clobbers, "$20", "$21"); \ - _sc_err = _sc_19; \ + _sc_ret = _sc_0, _sc_err = _sc_19; \ } #define inline_syscall5(name,arg1,arg2,arg3,arg4,arg5) \ { \ + register long _sc_0 __asm__("$0"); \ register long _sc_16 __asm__("$16"); \ register long _sc_17 __asm__("$17"); \ register long _sc_18 __asm__("$18"); \ register long _sc_19 __asm__("$19"); \ register long _sc_20 __asm__("$20"); \ \ + _sc_0 = __NR_##name; \ _sc_16 = (long) (arg1); \ _sc_17 = (long) (arg2); \ _sc_18 = (long) (arg3); \ _sc_19 = (long) (arg4); \ _sc_20 = (long) (arg5); \ __asm__("callsys # %0 %1 <= %2 %3 %4 %5 %6 %7" \ - : "=v"(_sc_ret), "=r"(_sc_19), \ + : "=r"(_sc_0), "=r"(_sc_19), \ "=r"(_sc_16), "=r"(_sc_17), "=r"(_sc_18), \ "=r"(_sc_20) \ - : "0"(__NR_##name), "2"(_sc_16), "3"(_sc_17), \ + : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \ "4"(_sc_18), "1"(_sc_19), "5"(_sc_20) \ : inline_syscall_clobbers, "$21"); \ _sc_ret = _sc_0, _sc_err = _sc_19; \ @@ -199,6 +211,7 @@ #define inline_syscall6(name,arg1,arg2,arg3,arg4,arg5,arg6) \ { \ + register long _sc_0 __asm__("$0"); \ register long _sc_16 __asm__("$16"); \ register long _sc_17 __asm__("$17"); \ register long _sc_18 __asm__("$18"); \ @@ -206,6 +219,7 @@ register long _sc_20 __asm__("$20"); \ register long _sc_21 __asm__("$21"); \ \ + _sc_0 = __NR_##name; \ _sc_16 = (long) (arg1); \ _sc_17 = (long) (arg2); \ _sc_18 = (long) (arg3); \ @@ -213,14 +227,14 @@ _sc_20 = (long) (arg5); \ _sc_21 = (long) (arg6); \ __asm__("callsys # %0 %1 <= %2 %3 %4 %5 %6 %7 %8" \ - : "=v"(_sc_ret), "=r"(_sc_19) \ + : "=r"(_sc_0), "=r"(_sc_19) \ "=r"(_sc_16), "=r"(_sc_17), "=r"(_sc_18), \ "=r"(_sc_20), "=r"(_sc_21) \ - : "0"(__NR_##name), "2"(_sc_16), "3"(_sc_17), \ + : "0"(_sc_0), "2"(_sc_16), "3"(_sc_17), \ "4"(_sc_18), "1"(_sc_19), "5"(_sc_20), \ "6"(_sc_21) \ : inline_syscall_clobbers); \ - _sc_err = _sc_19; \ + _sc_ret = _sc_0, _sc_err = _sc_19; \ } #endif /* _LINUX_ALPHA_SYSDEP_H */ Jakub
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |