X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu%2Fuatomic_arch_s390.h;h=db05b15b996a36f61a0a9ed3fff96fddcbb977c4;hp=b37e5f0fbf4a771aec326e04e3c6abc468f4a4ff;hb=b46b23cb9949c585ddf8ccb691458c8c7c60c7ad;hpb=7d413817f09b2d17b1a79ea012590609ffab5eb6 diff --git a/urcu/uatomic_arch_s390.h b/urcu/uatomic_arch_s390.h index b37e5f0..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)