Fix SPARC atomic_write_barrier.
authorTorvald Riegel <triegel@redhat.com>
Wed, 29 Oct 2014 18:14:14 +0000 (19:14 +0100)
committerTorvald Riegel <triegel@redhat.com>
Fri, 31 Oct 2014 11:00:38 +0000 (12:00 +0100)
ChangeLog
sysdeps/sparc/sparc32/bits/atomic.h
sysdeps/sparc/sparc32/sparcv9/bits/atomic.h
sysdeps/sparc/sparc64/bits/atomic.h

index ef67160..41bfbe7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2014-10-31  Torvald Riegel  <triegel@redhat.com>
+
+       * sysdeps/sparc/sparc32/bits/atomic.h (atomic_write_barrier): Use
+       correct barrier instruction.
+       * sysdeps/sparc/sparc32/sparcv9/bits/atomic.h (atomic_write_barrier):
+       Likewise.
+       * sysdeps/sparc/sparc64/bits/atomic.h (atomic_write_barrier):
+       Likewise.
+
 2014-10-30  Roland McGrath  <roland@hack.frob.com>
 
        * include/ctype.h: Include <ctype/ctype.h> first thing rather than
index 39c2b37..251e656 100644 (file)
@@ -343,8 +343,8 @@ extern uint64_t _dl_hwcap __attribute__((weak));
 #define atomic_write_barrier()                                         \
   do {                                                                 \
      if (__atomic_is_v9)                                               \
-       /* membar  #StoreLoad | #StoreStore */                          \
-       __asm __volatile (".word 0x8143e00a" : : : "memory");           \
+       /* membar  #LoadStore | #StoreStore */                          \
+       __asm __volatile (".word 0x8143e00c" : : : "memory");           \
      else                                                              \
        __asm __volatile ("" : : : "memory");                           \
   } while (0)
index 4835019..310e636 100644 (file)
@@ -96,4 +96,4 @@ typedef uintmax_t uatomic_max_t;
 #define atomic_read_barrier() \
   __asm __volatile ("membar #LoadLoad | #LoadStore" : : : "memory")
 #define atomic_write_barrier() \
-  __asm __volatile ("membar #StoreLoad | #StoreStore" : : : "memory")
+  __asm __volatile ("membar #LoadStore | #StoreStore" : : : "memory")
index ad9dae1..d348ed2 100644 (file)
@@ -117,4 +117,4 @@ typedef uintmax_t uatomic_max_t;
 #define atomic_read_barrier() \
   __asm __volatile ("membar #LoadLoad | #LoadStore" : : : "memory")
 #define atomic_write_barrier() \
-  __asm __volatile ("membar #StoreLoad | #StoreStore" : : : "memory")
+  __asm __volatile ("membar #LoadStore | #StoreStore" : : : "memory")