X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu%2Fuatomic_arch_s390.h;h=db05b15b996a36f61a0a9ed3fff96fddcbb977c4;hp=917dbf2f471941457adcfff198f25c1f08747ce9;hb=b46b23cb9949c585ddf8ccb691458c8c7c60c7ad;hpb=48d848c7291ec22da6258ac03cd9c1dafec1fdfb diff --git a/urcu/uatomic_arch_s390.h b/urcu/uatomic_arch_s390.h index 917dbf2..db05b15 100644 --- a/urcu/uatomic_arch_s390.h +++ b/urcu/uatomic_arch_s390.h @@ -28,6 +28,9 @@ * IN THE SOFTWARE. */ +#include +#include + #ifndef __SIZEOF_LONG__ #ifdef __s390x__ #define __SIZEOF_LONG__ 8 @@ -40,12 +43,8 @@ #define BITS_PER_LONG (__SIZEOF_LONG__ * 8) #endif -#define uatomic_set(addr, v) \ -do { \ - ACCESS_ONCE(*(addr)) = (v); \ -} while (0) - -#define uatomic_read(addr) ACCESS_ONCE(*(addr)) +#define uatomic_set(addr, v) STORE_SHARED(*(addr), (v)) +#define uatomic_read(addr) LOAD_SHARED(*(addr)) static inline __attribute__((always_inline)) unsigned int uatomic_exchange_32(volatile unsigned int *addr, unsigned int val) @@ -217,4 +216,6 @@ unsigned long _uatomic_cmpxchg(void *addr, unsigned long old, (unsigned long)(new), \ sizeof(*(addr))) +#define URCU_CAS_AVAIL() 1 + #endif /* _URCU_ARCH_ATOMIC_S390_H */