1 #ifndef _MACHINE_INSTR_H
2 #define _MACHINE_INSTR_H
5 __attribute__ ((unused))
6 atomic_add (volatile int *mem, int val)
10 __asm__ __volatile__ (
16 : "=m"(*mem), "=&r"(temp)
17 : "r"(val), "m"(*mem));
22 __attribute__ ((unused))
23 compare_and_swap (volatile long *p, long oldval, long newval)
27 __asm__ __volatile__ (
30 : "=&r"(ret), "=m"(*p)
31 : "r"(oldval), "r"(newval), "m"(*p));
36 #define STORE_ORDER_BARRIER() __asm__ __volatile__ ("wmb" : : : "memory");
37 #define MEMORY_BARRIER_BEFORE_ATOMIC() __asm__ __volatile__ ("mb" : : : "memory");
38 #define MEMORY_BARRIER_AFTER_ATOMIC() __asm__ __volatile__ ("mb" : : : "memory");
39 #define MEMORY_BARRIER() __asm__ __volatile__ ( \
40 "mb" : : : "memory" );