summary refs log tree commit diff
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-09-30 10:26:28 +0000
committerRoland McGrath <roland@gnu.org>2002-09-30 10:26:28 +0000
commit7de490c6863aa4bb81d3a1cb4a0a35028aeee260 (patch)
tree53f79d3eb5749bbd9e516ed42c2c55c29f6dcced
parent82685ecbd7ffcae45b078cc5e2faeb88205a1785 (diff)
downloadglibc-7de490c6863aa4bb81d3a1cb4a0a35028aeee260.tar.gz
glibc-7de490c6863aa4bb81d3a1cb4a0a35028aeee260.tar.xz
glibc-7de490c6863aa4bb81d3a1cb4a0a35028aeee260.zip
2002-09-30 Roland McGrath <roland@redhat.com>
	* sysdeps/unix/sysv/linux/i386/sysdep.h [USE_TLS && HAVE___THREAD]
	(SYSCALL_ERROR_HANDLER): Use direct-%gs form of TLS access for errno.
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep.h7
1 files changed, 3 insertions, 4 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
index 6dbeb3d297..ed0bdf6b7d 100644
--- a/sysdeps/unix/sysv/linux/i386/sysdep.h
+++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
@@ -99,11 +99,10 @@ __i686.get_pc_thunk.reg:						      \
 #   define SYSCALL_ERROR_HANDLER					      \
 0:SETUP_PIC_REG (cx);							      \
   addl $_GLOBAL_OFFSET_TABLE_, %ecx;					      \
+  movl errno@gotntpoff(%ecx), %ecx;					      \
   xorl %edx, %edx;							      \
   subl %eax, %edx;							      \
-  movl %gs:0, %eax;							      \
-  subl errno@gottpoff(%ecx), %eax;					      \
-  movl %edx, (%eax);							      \
+  movl %edx, %gs:0(%ecx);						      \
   orl $-1, %eax;							      \
   jmp L(pseudo_end);
 #  else
@@ -127,7 +126,7 @@ __i686.get_pc_thunk.reg:						      \
 #  endif
 # else
 #  define SYSCALL_ERROR_HANDLER						      \
-0:define SETUP_PIC_REG(cx);						      \
+0:SETUP_PIC_REG(cx);						      \
   addl $_GLOBAL_OFFSET_TABLE_, %ecx;					      \
   xorl %edx, %edx;							      \
   subl %eax, %edx;							      \