[S390] atomic: use ACCESS_ONCE() for atomic_read()
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Thu, 17 Feb 2011 12:13:56 +0000 (13:13 +0100)
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>
Thu, 17 Feb 2011 12:13:58 +0000 (13:13 +0100)
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>
arch/s390/include/asm/atomic.h

index 76daea117181e9df886da524ebfb4147f54ff84a..50cfb5ed601b8f7ef174c85e5ec50cd264f7a2a1 100644 (file)
 
 static inline int atomic_read(const atomic_t *v)
 {
-       barrier();
-       return v->counter;
+       return ACCESS_ONCE(v->counter);
 }
 
 static inline void atomic_set(atomic_t *v, int i)
 {
        v->counter = i;
-       barrier();
 }
 
 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)
 {
-       barrier();
-       return v->counter;
+       return ACCESS_ONCE(v->counter);
 }
 
 static inline void atomic64_set(atomic64_t *v, long long i)
 {
        v->counter = i;
-       barrier();
 }
 
 static inline long long atomic64_add_return(long long i, atomic64_t *v)