X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=urcu%2Fuatomic_arch_sparc64.h;h=3aa3b7d9afb889b7f7cd8df80445148dc2dc523b;hb=14714b51fd19da8d72a3eb3367c2e52615b3baf3;hp=87deacd1a064366bceb799cf8620485c06ba6206;hpb=58de5a4bc81e0b64f4fbd46973b5c8b0cd06cda6;p=urcu.git diff --git a/urcu/uatomic_arch_sparc64.h b/urcu/uatomic_arch_sparc64.h index 87deacd..3aa3b7d 100644 --- a/urcu/uatomic_arch_sparc64.h +++ b/urcu/uatomic_arch_sparc64.h @@ -23,8 +23,12 @@ #include #include +#ifdef __cplusplus +extern "C" { +#endif + #ifndef __SIZEOF_LONG__ -#if (defined(__sparc_v8__) || defined(__sparc_v9__)) +#ifdef __LP64__ #define __SIZEOF_LONG__ 8 #else #define __SIZEOF_LONG__ 4 @@ -90,9 +94,9 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len) switch (len) { case 4: { - unsigned int old; + unsigned int old, oldt; - oldt = uatomic_read(addr); + oldt = uatomic_read((unsigned int *)addr); do { old = oldt; oldt = _uatomic_cmpxchg(addr, old, val, 4); @@ -103,9 +107,9 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len) #if (BITS_PER_LONG == 64) case 8: { - unsigned long old; + unsigned long old, oldt; - oldt = uatomic_read(addr); + oldt = uatomic_read((unsigned long *)addr); do { old = oldt; oldt = _uatomic_cmpxchg(addr, old, val, 8); @@ -126,15 +130,14 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len) /* uatomic_add_return */ static inline __attribute__((always_inline)) -unsigned long _uatomic_add_return(void *addr, unsigned long val, - int len) +unsigned long _uatomic_add_return(void *addr, unsigned long val, int len) { switch (len) { case 4: { - unsigned int old; + unsigned int old, oldt; - oldt = uatomic_read(addr); + oldt = uatomic_read((unsigned int *)addr); do { old = oldt; oldt = _uatomic_cmpxchg(addr, old, old + val, 4); @@ -145,9 +148,9 @@ unsigned long _uatomic_add_return(void *addr, unsigned long val, #if (BITS_PER_LONG == 64) case 8: { - unsigned long old; + unsigned long old, oldt; - oldt = uatomic_read(addr); + oldt = uatomic_read((unsigned long *)addr); do { old = oldt; oldt = _uatomic_cmpxchg(addr, old, old + val, 8); @@ -176,7 +179,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 URCU_CAS_AVAIL() 1 #define compat_uatomic_cmpxchg(ptr, old, _new) uatomic_cmpxchg(ptr, old, _new) +#ifdef __cplusplus +} +#endif + #endif /* _URCU_ARCH_UATOMIC_PPC_H */