20 #ifndef __JackAtomic_WIN32__ 21 #define __JackAtomic_WIN32__ 23 #include "JackTypes.h" 33 #define inline __inline 39 inline char CAS(
volatile UInt32 value, UInt32 newvalue,
volatile void * addr)
48 LOCK cmpxchg dword ptr [esi], ebx
58 #define LOCK "lock ; " 60 static inline char CAS(
volatile UInt32 value, UInt32 newvalue,
volatile void* addr)
63 __asm__ __volatile__ (
65 LOCK
"cmpxchg %2, (%1) \n\t" 68 :
"c" (addr),
"d" (newvalue),
"a" (value)