make atomic_read() behave consistently on s390
PATCH 16/24 make atomic_read() behave consistently on s390
From: Chris Snook <[email protected]>
Make atomic[64]_read() volatile on s390, to ensure memory is actually read each time.
Signed-off-by Chris Snook <[email protected]>
include/asm-s390/atomic.h +6 -2
@@ -67,7 +67,11 @@ typedef struct {#endif /* __GNUC__ */ -#define atomic_read (v) ((v)->counter) +/* +* Casting to volatile here minimizes the need for barriers, +* without having to declare the type itself as volatile. +*/ +#define atomic_read (v) (*(volatile int *)&(v)->counter)#define atomic_set (v,i) (((v)->counter) = (i))static __inline__int atomic_add_return (int i,atomic_t * v)
@@ -182,7 +186,7 @@ typedef struct {#endif /* __GNUC__ */ -#define atomic64_read (v) ((v)->counter) +#define atomic64_read (v) (*(volatile long long *)&(v)->counter)#define atomic64_set (v,i) (((v)->counter) = (i))static __inline__long long atomic64_add_return (long long i,atomic64_t * v)
Quoted 6 lines · Chris Snook
From: Chris Snook <[email protected]>
Make atomic[64]_read() volatile on s390, to ensure memory is actually read each time.
Signed-off-by Chris Snook <[email protected]>
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.