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));
21 __attribute__ ((unused))
22 compare_and_swap (volatile long *p, long oldval, long newval)
26 __asm__ __volatile__ (
35 : "=&r"(ret), "=m"(*p), "=&r"(temp)
36 : "r"(oldval), "r"(newval), "m"(*p));
41 #define STORE_ORDER_BARRIER() __asm__ __volatile__ ("wmb" : : : "memory");
42 #define MEMORY_BARRIER_BEFORE_ATOMIC() __asm__ __volatile__ ("mb" : : : "memory");
43 #define MEMORY_BARRIER_AFTER_ATOMIC() __asm__ __volatile__ ("rmb" : : : "memory");
44 #define MEMORY_BARRIER() __asm__ __volatile__ ( \
45 "mb" : : : "memory" );