1 #ifndef __UM_SYSTEM_I386_H
2 #define __UM_SYSTEM_I386_H
4 #include "asm/system-generic.h"
6 static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
7 unsigned long new, int size)
12 __asm__ __volatile__(LOCK_PREFIX "cmpxchgb %b1,%2"
14 : "q"(new), "m"(*__xg(ptr)), "0"(old)
18 __asm__ __volatile__(LOCK_PREFIX "cmpxchgw %w1,%2"
20 : "q"(new), "m"(*__xg(ptr)), "0"(old)
24 __asm__ __volatile__(LOCK_PREFIX "cmpxchgl %1,%2"
26 : "q"(new), "m"(*__xg(ptr)), "0"(old)
33 #define cmpxchg(ptr,o,n)\
34 ((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),\
35 (unsigned long)(n),sizeof(*(ptr))))