__cmpxchg
_prev_ = __cmpxchg(_p_, _o_, _n_); \
(__typeof__(*(ptr)))__cmpxchg((ptr), \
ret = __cmpxchg(ptr, old, new, size);
static __always_inline unsigned long __cmpxchg##sfx(volatile void *ptr, \
__cmpxchg##sfx((ptr), (__force unsigned long)(o), \
(__cmpxchg((ptr), (o), (n), sizeof(*(ptr))))
__cmpxchg((ptr), \
({(__typeof__(*(ptr)))__cmpxchg((ptr), (unsigned long)(o), \
({(__typeof__(*(ptr)))__cmpxchg((ptr), (unsigned long)(o), \
__cmpxchg((ptr), \
static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
(__typeof__(*(ptr))) __cmpxchg((ptr), \
(__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \
(__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \
(__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \
(__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \
(__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \
case 8: return __cmpxchg(ptr, old, new, size);
__cmpxchg(ptr, old, new, sizeof(*(ptr)))
if (__cmpxchg(&cmos_lock, 0, new, sizeof(cmos_lock)) == 0)
(__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \
__cmpxchg(ptr, old, new, sizeof(*(ptr)))