1 #define a_ctz_64 a_ctz_64
2 static inline int a_ctz_64(uint64_t x)
11 #define a_barrier a_barrier
12 static inline void a_barrier()
14 __asm__ __volatile__("dmb ish");
17 #define a_cas_p a_cas_p
18 static inline void *a_cas_p(volatile void *p, void *t, void *s)
31 : "r"(t), "r"(s), "Q"(*(long*)p)
37 static inline int a_cas(volatile int *p, int t, int s)
50 : "r"(t), "r"(s), "Q"(*p)
56 static inline int a_swap(volatile int *x, int v)
65 : "=&r"(old), "=&r"(tmp)
71 #define a_fetch_add a_fetch_add
72 static inline int a_fetch_add(volatile int *x, int v)
82 : "=&r"(old), "=&r"(tmp)
89 static inline void a_inc(volatile int *x)
99 : "=&r"(tmp), "=&r"(tmp2)
105 static inline void a_dec(volatile int *x)
108 __asm__ __volatile__(
115 : "=&r"(tmp), "=&r"(tmp2)
120 #define a_and_64 a_and_64
121 static inline void a_and_64(volatile uint64_t *p, uint64_t v)
124 __asm__ __volatile__(
131 : "=&r"(tmp), "=&r"(tmp2)
137 static inline void a_and(volatile int *p, int v)
140 __asm__ __volatile__(
147 : "=&r"(tmp), "=&r"(tmp2)
152 #define a_or_64 a_or_64
153 static inline void a_or_64(volatile uint64_t *p, uint64_t v)
156 __asm__ __volatile__(
163 : "=&r"(tmp), "=&r"(tmp2)
168 #define a_or_l a_or_l
169 static inline void a_or_l(volatile void *p, long v)
171 return a_or_64(p, v);
175 static inline void a_or(volatile int *p, int v)
178 __asm__ __volatile__(
185 : "=&r"(tmp), "=&r"(tmp2)
190 #define a_store a_store
191 static inline void a_store(volatile int *p, int x)
193 __asm__ __volatile__(
202 #define a_spin a_barrier