1 #ifndef _MACHINE_INSTR_H
2 #define _MACHINE_INSTR_H
5 atomic_add(int *mem, int val)
9 __asm__ __volatile__ ("\n\
15 : "r"(val), "r"(mem) : "cr0", "memory");
18 static inline long compare_and_swap(long *p, long oldval, long newval)
22 __asm__ __volatile__ ("\n\
30 " : "=&r"(ret), "=&r"(temp)
31 : "r"(oldval), "r"(newval), "r"(p) : "cr0", "memory");
36 #define STORE_ORDER_BARRIER() __asm__ __volatile__ ("" : : : "memory");
37 #define MEMORY_BARRIER_BEFORE_ATOMIC() __asm__ __volatile__ ("sync" : : : "memory");
38 #define MEMORY_BARRIER_AFTER_ATOMIC() __asm__ __volatile__ ("isync" : : : "memory");
39 #define MEMORY_BARRIER() __asm__ __volatile__ ( "sync" : : : "memory" );