X-Git-Url: http://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu%2Fuatomic%2Fs390.h;h=32c676e0af590af4e983d61074ca4b8b11ed5441;hp=b274c1cb372d22be165aa6dd01bf5da08430d21b;hb=e56d99bf2046a163875df80bab5195f38606dfde;hpb=7d5dc80de0522da1b8bc3656646ea39c15481594 diff --git a/urcu/uatomic/s390.h b/urcu/uatomic/s390.h index b274c1c..32c676e 100644 --- a/urcu/uatomic/s390.h +++ b/urcu/uatomic/s390.h @@ -106,8 +106,9 @@ unsigned long _uatomic_exchange(volatile void *addr, unsigned long val, int len) } #define uatomic_xchg(addr, v) \ - (__typeof__(*(addr))) _uatomic_exchange((addr), (unsigned long)(v), \ - sizeof(*(addr))) + (__typeof__(*(addr))) _uatomic_exchange((addr), \ + caa_cast_long_keep_sign(v), \ + sizeof(*(addr))) /* cmpxchg */ @@ -145,10 +146,10 @@ unsigned long _uatomic_cmpxchg(void *addr, unsigned long old, return 0; } -#define uatomic_cmpxchg(addr, old, _new) \ - (__typeof__(*(addr))) _uatomic_cmpxchg((addr), \ - (unsigned long)(old), \ - (unsigned long)(_new), \ +#define uatomic_cmpxchg(addr, old, _new) \ + (__typeof__(*(addr))) _uatomic_cmpxchg((addr), \ + caa_cast_long_keep_sign(old), \ + caa_cast_long_keep_sign(_new),\ sizeof(*(addr))) #ifdef __cplusplus