X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;ds=sidebyside;f=urcu%2Fuatomic_arch_ppc.h;h=b732b08c42389a465db3b72d8b18386357dd120f;hb=36bc70a84250927ba68d5096a0a9740aec157f9b;hp=40de9ff9909dc10327bb75e29aca9e33f7743f41;hpb=48d848c7291ec22da6258ac03cd9c1dafec1fdfb;p=urcu.git diff --git a/urcu/uatomic_arch_ppc.h b/urcu/uatomic_arch_ppc.h index 40de9ff..b732b08 100644 --- a/urcu/uatomic_arch_ppc.h +++ b/urcu/uatomic_arch_ppc.h @@ -21,6 +21,11 @@ */ #include +#include + +#ifdef __cplusplus +extern "C" { +#endif #ifndef __SIZEOF_LONG__ #ifdef __powerpc64__ @@ -36,12 +41,8 @@ #define ILLEGAL_INSTR ".long 0xd00d00" -#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)) /* * Using a isync as second barrier for exchange to provide acquire semantic. @@ -228,4 +229,10 @@ unsigned long _uatomic_add_return(void *addr, unsigned long val, #define uatomic_inc(addr) uatomic_add((addr), 1) #define uatomic_dec(addr) uatomic_add((addr), -1) +#define compat_uatomic_cmpxchg(ptr, old, _new) uatomic_cmpxchg(ptr, old, _new) + +#ifdef __cplusplus +} +#endif + #endif /* _URCU_ARCH_UATOMIC_PPC_H */