X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu%2Fuatomic_arch_s390.h;fp=urcu%2Fuatomic_arch_s390.h;h=f8e8dffa6c04e5d2e74599fea8b3c9c11dddf8f4;hp=b67259ec082c7d26ac947ec6087c5f98e12963a4;hb=f64acda4a01445e948110f45ecd0e3c48c651a6f;hpb=2041a99a1abff800c4d48fd2e9d0761609bb63a4 diff --git a/urcu/uatomic_arch_s390.h b/urcu/uatomic_arch_s390.h index b67259e..f8e8dff 100644 --- a/urcu/uatomic_arch_s390.h +++ b/urcu/uatomic_arch_s390.h @@ -48,6 +48,8 @@ #define uatomic_read(addr) LOAD_SHARED(*(addr)) /* xchg */ + +static inline __attribute__((always_inline)) unsigned long _uatomic_exchange(volatile void *addr, unsigned long val, int len) { switch (len) { @@ -106,12 +108,14 @@ unsigned long _uatomic_cmpxchg(void *addr, unsigned long old, } #if (BITS_PER_LONG == 64) case 8: + { __asm__ __volatile__( " csg %0,%2,%1\n" : "+r"(old), "+m"(*addr) : "r"(new) : "memory", "cc"); return old; + } #endif default: __asm__ __volatile__(".long 0xd00d00");