Use "neg %eax" in x86_64 SYSCALL_SET_ERRNO
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 22 May 2012 12:34:36 +0000 (05:34 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 22 May 2012 12:34:36 +0000 (05:34 -0700)
ChangeLog
sysdeps/unix/sysv/linux/x86_64/sysdep.h

index f1921de..200c726 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2012-05-22  H.J. Lu  <hongjiu.lu@intel.com>
 
+       * sysdeps/unix/sysv/linux/x86_64/sysdep.h (SYSCALL_SET_ERRNO):
+       Use "neg %eax".
+
        * sysdeps/unix/sysv/linux/bits/resource.h (RLIM_INFINITY): Use
        __rlim_t cast.
        (struct rusage): Use anonymous union to pad each field to
index 3f5bdd2..396345e 100644 (file)
 # if defined PIC && defined RTLD_PRIVATE_ERRNO
 #  define SYSCALL_SET_ERRNO                    \
   lea rtld_errno(%rip), %RCX_LP;               \
-  xorl %edx, %edx;                             \
-  sub %RAX_LP, %RDX_LP;                                \
-  movl %edx, (%rcx)
+  neg %eax;                                    \
+  movl %eax, (%rcx)
 # else
 #  ifndef NOT_IN_libc
 #   define SYSCALL_ERROR_ERRNO __libc_errno
 #  endif
 #  define SYSCALL_SET_ERRNO                    \
   movq SYSCALL_ERROR_ERRNO@GOTTPOFF(%rip), %rcx;\
-  xorl %edx, %edx;                             \
-  sub %RAX_LP, %RDX_LP;                                \
-  movl %edx, %fs:(%rcx)
+  neg %eax;                                    \
+  movl %eax, %fs:(%rcx);
 # endif
 
 # ifndef PIC