diff options
author | Torvald Riegel <triegel@redhat.com> | 2014-10-29 19:14:14 +0100 |
---|---|---|
committer | Torvald Riegel <triegel@redhat.com> | 2014-10-31 12:00:38 +0100 |
commit | ff9dbdc048f8341c5f1bc6a6982b669b49a40983 (patch) | |
tree | a9892da9b3867c93227507fb8bf018b852019dfa | |
parent | b4f6688462ba4f7fb4766f11ed5b70c70ea0623a (diff) | |
download | glibc-ff9dbdc048f8341c5f1bc6a6982b669b49a40983.tar.gz glibc-ff9dbdc048f8341c5f1bc6a6982b669b49a40983.tar.xz glibc-ff9dbdc048f8341c5f1bc6a6982b669b49a40983.zip |
Fix SPARC atomic_write_barrier.
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | sysdeps/sparc/sparc32/bits/atomic.h | 4 | ||||
-rw-r--r-- | sysdeps/sparc/sparc32/sparcv9/bits/atomic.h | 2 | ||||
-rw-r--r-- | sysdeps/sparc/sparc64/bits/atomic.h | 2 |
4 files changed, 13 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog index ef67160e1b..41bfbe77fd 100644 --- 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 diff --git a/sysdeps/sparc/sparc32/bits/atomic.h b/sysdeps/sparc/sparc32/bits/atomic.h index 39c2b37655..251e65662d 100644 --- a/sysdeps/sparc/sparc32/bits/atomic.h +++ b/sysdeps/sparc/sparc32/bits/atomic.h @@ -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) diff --git a/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h b/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h index 4835019202..310e6365e9 100644 --- a/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h +++ b/sysdeps/sparc/sparc32/sparcv9/bits/atomic.h @@ -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") diff --git a/sysdeps/sparc/sparc64/bits/atomic.h b/sysdeps/sparc/sparc64/bits/atomic.h index ad9dae1d0f..d348ed20ae 100644 --- a/sysdeps/sparc/sparc64/bits/atomic.h +++ b/sysdeps/sparc/sparc64/bits/atomic.h @@ -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") |