Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03e3b5a0 authored by Heiko Carstens's avatar Heiko Carstens Committed by Martin Schwidefsky
Browse files

[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: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 5da24b76
Loading
Loading
Loading
Loading
+2 −6
Original line number Original line Diff line number Diff line
@@ -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)