提交 03e3b5a0 编写于 作者: H Heiko Carstens 提交者: Martin Schwidefsky

[S390] atomic: use ACCESS_ONCE() for atomic_read()

Let's make atomic_read() and atomic_set() behave like on all/most other
architectures. Generated code is identical with gcc 4.5.2.
Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
上级 5da24b76
...@@ -36,14 +36,12 @@ ...@@ -36,14 +36,12 @@
static inline int atomic_read(const atomic_t *v) static inline int atomic_read(const atomic_t *v)
{ {
barrier(); return ACCESS_ONCE(v->counter);
return v->counter;
} }
static inline void atomic_set(atomic_t *v, int i) static inline void atomic_set(atomic_t *v, int i)
{ {
v->counter = i; v->counter = i;
barrier();
} }
static inline int atomic_add_return(int i, atomic_t *v) static inline int atomic_add_return(int i, atomic_t *v)
...@@ -128,14 +126,12 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u) ...@@ -128,14 +126,12 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
static inline long long atomic64_read(const atomic64_t *v) static inline long long atomic64_read(const atomic64_t *v)
{ {
barrier(); return ACCESS_ONCE(v->counter);
return v->counter;
} }
static inline void atomic64_set(atomic64_t *v, long long i) static inline void atomic64_set(atomic64_t *v, long long i)
{ {
v->counter = i; v->counter = i;
barrier();
} }
static inline long long atomic64_add_return(long long i, atomic64_t *v) static inline long long atomic64_add_return(long long i, atomic64_t *v)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册