[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: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
5da24b7627
commit
03e3b5a0f1
|
@ -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)
|
||||||
|
|
||||||
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)
|
||||||
|
|
Loading…
Reference in New Issue