1 #ifndef _MACHINE_INSTR_H
2 #define _MACHINE_INSTR_H
4 static inline long compare_and_swap(long *p, long oldval, long newval)
7 /*dolog("compare_and_swap(%p [%d], %d, %d)", p, *p, oldval, newval);*/
9 /* TODO: improve this one! */
10 __asm__ __volatile__ (
17 "swpne %0,%1,[%2]\n\t"
20 : "=&r" (ret), "=&r" (temp)
21 : "r" (p), "r" (newval), "r" (oldval)
25 /*dolog("compare_and_swap() return=%d mem=%d", ret, *p);*/
29 #define STORE_ORDER_BARRIER() __asm__ __volatile__ ("" : : : "memory");
30 #define MEMORY_BARRIER_AFTER_ATOMIC() __asm__ __volatile__ ("" : : : "memory");
31 #define MEMORY_BARRIER() __asm__ __volatile__ ("" : : : "memory" );