Use "neg %eax" in i386 SYSCALL_ERROR_HANDLER
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 22 May 2012 16:24:24 +0000 (09:24 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 22 May 2012 16:24:24 +0000 (09:24 -0700)
ChangeLog
sysdeps/unix/sysv/linux/i386/sysdep.h

index ee29e04..1918d8b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2012-05-22  H.J. Lu  <hongjiu.lu@intel.com>
 
+       * sysdeps/unix/sysv/linux/i386/sysdep.h (SYSCALL_ERROR_HANDLER):
+       Use "neg %eax".
+
        * time/mktime.c: Update copyright years.
 
 2012-05-22  Paul Eggert  <eggert@cs.ucla.edu>
index e7d7103..6c4f778 100644 (file)
 #  define SYSCALL_ERROR_HANDLER                                                      \
 0:SETUP_PIC_REG(cx);                                                         \
   addl $_GLOBAL_OFFSET_TABLE_, %ecx;                                         \
-  xorl %edx, %edx;                                                           \
-  subl %eax, %edx;                                                           \
-  movl %edx, rtld_errno@GOTOFF(%ecx);                                        \
+  negl %eax;                                                                 \
+  movl %eax, rtld_errno@GOTOFF(%ecx);                                        \
   orl $-1, %eax;                                                             \
   jmp L(pseudo_end);
 
 0:SETUP_PIC_REG (cx);                                                        \
   addl $_GLOBAL_OFFSET_TABLE_, %ecx;                                         \
   movl SYSCALL_ERROR_ERRNO@GOTNTPOFF(%ecx), %ecx;                            \
-  xorl %edx, %edx;                                                           \
-  subl %eax, %edx;                                                           \
-  SYSCALL_ERROR_HANDLER_TLS_STORE (%edx, %ecx);                                      \
+  negl %eax;                                                                 \
+  SYSCALL_ERROR_HANDLER_TLS_STORE (%eax, %ecx);                                      \
   orl $-1, %eax;                                                             \
   jmp L(pseudo_end);
 #  ifndef NO_TLS_DIRECT_SEG_REFS
 #  define SYSCALL_ERROR_HANDLER                                                      \
 0:SETUP_PIC_REG(cx);                                                         \
   addl $_GLOBAL_OFFSET_TABLE_, %ecx;                                         \
-  xorl %edx, %edx;                                                           \
-  subl %eax, %edx;                                                           \
+  negl %eax;                                                                 \
   movl errno@GOT(%ecx), %ecx;                                                \
-  movl %edx, (%ecx);                                                         \
+  movl %eax, (%ecx);                                                         \
   orl $-1, %eax;                                                             \
   jmp L(pseudo_end);
 # endif        /* _LIBC_REENTRANT */