static inline void atomic_retain(volatile int *p) { #if defined(_MSC_VER) _InterlockedIncrement ((LONG volatile *) p); #else __asm__ ( "lock incl %0\n\t" : "+m" (*p) : : "cc", "memory" ); #endif } static inline void atomic_thread_fence (memory_order_release_t) { __asm__ __volatile__ ( ASM_LWSYNC : : : "memory" ); }