diff options
author | Roland McGrath <roland@gnu.org> | 2005-02-16 11:07:26 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2005-02-16 11:07:26 +0000 |
commit | 0cbef6c273e0f8b71d1ae8d1d0d56f9cf1a37403 (patch) | |
tree | 7741e1a487769d950a457811901e87aa5d60a590 | |
parent | 67d3cf0ee4e8cbfa9877b8ab3bc06d904be19541 (diff) |
2005-01-26 Jakub Jelinek <jakub@redhat.com>
[BZ #737]
* sysdeps/unix/sysv/linux/i386/sysdep.h
(SYSCALL_ERROR_HANDLER_TLS_STORE): Remove unnecessary 0 imm.
2005-01-23 Roland McGrath <roland@redhat.com>
[BZ #737]
* sysdeps/i386/Makefile (defines): If -mno-tls-direct-seg-refs appears
in $(CFLAGS), add -DNO_TLS_DIRECT_SEG_REFS.
* sysdeps/unix/sysv/linux/i386/sysdep.h [USE___THREAD]
(SYSCALL_ERROR_HANDLER) [NO_TLS_DIRECT_SEG_REFS]: Load thread pointer
from %gs:0 and add to that value, rather that direct %gs:OFFSET access.
* sysdeps/unix/i386/sysdep.S [NO_TLS_DIRECT_SEG_REFS]: Likewise.
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/sysdep.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h index af75d4c51a..a15109f800 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -154,9 +154,17 @@ __i686.get_pc_thunk.reg: \ movl SYSCALL_ERROR_ERRNO@GOTNTPOFF(%ecx), %ecx; \ xorl %edx, %edx; \ subl %eax, %edx; \ - movl %edx, %gs:0(%ecx); \ + SYSCALL_ERROR_HANDLER_TLS_STORE (%edx, %ecx); \ orl $-1, %eax; \ jmp L(pseudo_end); +# ifndef NO_TLS_DIRECT_SEG_REFS +# define SYSCALL_ERROR_HANDLER_TLS_STORE(src, destoff) \ + movl src, %gs:(destoff) +# else +# define SYSCALL_ERROR_HANDLER_TLS_STORE(src, destoff) \ + addl %gs:0, destoff; \ + movl src, (destoff) +# endif # else # define SYSCALL_ERROR_HANDLER \ 0:pushl %ebx; \ |