The definition of _uatomic_cmpxchg is different in x86 and other architectures. For x86 it is a 4-argument macro, for other architectures it is a 3-argument function. The next patch will use uatomic_cmpxchg in uatomic_generic.h even on x86: adjust existing uses of the underscore-prefixed variant for consistency.
Signed-off-by: Paolo Bonzini <[email protected]> --- urcu/uatomic_generic.h | 24 ++++++++++++++++-------- 1 files changed, 16 insertions(+), 8 deletions(-) diff --git a/urcu/uatomic_generic.h b/urcu/uatomic_generic.h index f65b398..383ddfa 100644 --- a/urcu/uatomic_generic.h +++ b/urcu/uatomic_generic.h @@ -201,7 +201,8 @@ unsigned long _uatomic_add_return(void *addr, unsigned long val, int len) oldt = uatomic_read((unsigned char *)addr); do { old = oldt; - oldt = _uatomic_cmpxchg(addr, old, old + val, 1); + oldt = uatomic_cmpxchg((unsigned char *)addr, + old, old + val); } while (oldt != old); return old + val; @@ -215,7 +216,8 @@ unsigned long _uatomic_add_return(void *addr, unsigned long val, int len) oldt = uatomic_read((unsigned short *)addr); do { old = oldt; - oldt = _uatomic_cmpxchg(addr, old, old + val, 2); + oldt = uatomic_cmpxchg((unsigned short *)addr, + old, old + val); } while (oldt != old); return old + val; @@ -228,7 +230,8 @@ unsigned long _uatomic_add_return(void *addr, unsigned long val, int len) oldt = uatomic_read((unsigned int *)addr); do { old = oldt; - oldt = _uatomic_cmpxchg(addr, old, old + val, 4); + oldt = uatomic_cmpxchg((unsigned int *)addr, + old, old + val); } while (oldt != old); return old + val; @@ -241,7 +244,8 @@ unsigned long _uatomic_add_return(void *addr, unsigned long val, int len) oldt = uatomic_read((unsigned long *)addr); do { old = oldt; - oldt = _uatomic_cmpxchg(addr, old, old + val, 8); + oldt = uatomic_cmpxchg((unsigned long *)addr, + old, old + val); } while (oldt != old); return old + val; @@ -273,7 +277,8 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len) oldt = uatomic_read((unsigned char *)addr); do { old = oldt; - oldt = _uatomic_cmpxchg(addr, old, val, 1); + oldt = uatomic_cmpxchg((unsigned char *)addr, + old, val); } while (oldt != old); return old; @@ -287,7 +292,8 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len) oldt = uatomic_read((unsigned short *)addr); do { old = oldt; - oldt = _uatomic_cmpxchg(addr, old, val, 2); + oldt = uatomic_cmpxchg((unsigned short *)addr, + old, val); } while (oldt != old); return old; @@ -300,7 +306,8 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len) oldt = uatomic_read((unsigned int *)addr); do { old = oldt; - oldt = _uatomic_cmpxchg(addr, old, val, 4); + oldt = uatomic_cmpxchg((unsigned int *)addr, + old, val); } while (oldt != old); return old; @@ -313,7 +320,8 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len) oldt = uatomic_read((unsigned long *)addr); do { old = oldt; - oldt = _uatomic_cmpxchg(addr, old, val, 8); + oldt = uatomic_cmpxchg((unsigned long *)addr, + old, val); } while (oldt != old); return old; -- 1.7.3.2 _______________________________________________ ltt-dev mailing list [email protected] http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
