OSDN Git Service

libgomp: Fix default futex vs errno
[pf3gnuchains/gcc-fork.git] / libgomp / config / linux / futex.h
index bab088a..b1ce2af 100644 (file)
@@ -41,8 +41,8 @@
 static inline void
 futex_wait (int *addr, int val)
 {
 static inline void
 futex_wait (int *addr, int val)
 {
-  long err = syscall (SYS_futex, addr, gomp_futex_wait, val, NULL);
-  if (__builtin_expect (err == -ENOSYS, 0))
+  int err = syscall (SYS_futex, addr, gomp_futex_wait, val, NULL);
+  if (__builtin_expect (err < 0 && errno == ENOSYS, 0))
     {
       gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
       gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
     {
       gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
       gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
@@ -53,8 +53,8 @@ futex_wait (int *addr, int val)
 static inline void
 futex_wake (int *addr, int count)
 {
 static inline void
 futex_wake (int *addr, int count)
 {
-  long err = syscall (SYS_futex, addr, gomp_futex_wake, count);
-  if (__builtin_expect (err == -ENOSYS, 0))
+  int err = syscall (SYS_futex, addr, gomp_futex_wake, count);
+  if (__builtin_expect (err < 0 && errno == ENOSYS, 0))
     {
       gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
       gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
     {
       gomp_futex_wait &= ~FUTEX_PRIVATE_FLAG;
       gomp_futex_wake &= ~FUTEX_PRIVATE_FLAG;
@@ -67,9 +67,3 @@ cpu_relax (void)
 {
   __asm volatile ("" : : : "memory");
 }
 {
   __asm volatile ("" : : : "memory");
 }
-
-static inline void
-atomic_write_barrier (void)
-{
-  __sync_synchronize ();
-}