1 #ifndef _MACHINE_INSTR_H
2 #define _MACHINE_INSTR_H
5 __attribute__ ((unused))
6 atomic_add (volatile int *mem, int val)
9 __asm__ __volatile__ ("lock; addl %1,%0"
11 : "ir" (val), "m" (*mem));
16 __attribute__ ((unused))
17 compare_and_swap (volatile long *p, long oldval, long newval)
22 __asm__ __volatile__ ("lock; cmpxchgq %2, %1"
23 : "=a" (ret), "=m" (*p)
24 : "r" (newval), "m" (*p), "0" (oldval));
30 #define STORE_ORDER_BARRIER() __asm__ __volatile__ ("" : : : "memory");
31 #define MEMORY_BARRIER_BEFORE_ATOMIC() __asm__ __volatile__ ("" : : : "memory");
32 #define MEMORY_BARRIER_AFTER_ATOMIC() __asm__ __volatile__ ("" : : : "memory");
33 #define MEMORY_BARRIER() __asm__ __volatile__ ( \
34 "mfence" : : : "memory" )
37 #define STORE_ORDER_BARRIER()
38 #define MEMORY_BARRIER_BEFORE_ATOMIC()
39 #define MEMORY_BARRIER_AFTER_ATOMIC()
40 #define MEMORY_BARRIER()