1*c9945492SAndroid Build Coastguard Worker #define a_ll a_ll
a_ll(volatile int * p)2*c9945492SAndroid Build Coastguard Worker static inline int a_ll(volatile int *p)
3*c9945492SAndroid Build Coastguard Worker {
4*c9945492SAndroid Build Coastguard Worker int v;
5*c9945492SAndroid Build Coastguard Worker __asm__ __volatile__ (
6*c9945492SAndroid Build Coastguard Worker "ll.w %0, %1"
7*c9945492SAndroid Build Coastguard Worker : "=r"(v)
8*c9945492SAndroid Build Coastguard Worker : "ZC"(*p));
9*c9945492SAndroid Build Coastguard Worker return v;
10*c9945492SAndroid Build Coastguard Worker }
11*c9945492SAndroid Build Coastguard Worker
12*c9945492SAndroid Build Coastguard Worker #define a_sc a_sc
a_sc(volatile int * p,int v)13*c9945492SAndroid Build Coastguard Worker static inline int a_sc(volatile int *p, int v)
14*c9945492SAndroid Build Coastguard Worker {
15*c9945492SAndroid Build Coastguard Worker int r;
16*c9945492SAndroid Build Coastguard Worker __asm__ __volatile__ (
17*c9945492SAndroid Build Coastguard Worker "sc.w %0, %1"
18*c9945492SAndroid Build Coastguard Worker : "=r"(r), "=ZC"(*p)
19*c9945492SAndroid Build Coastguard Worker : "0"(v) : "memory");
20*c9945492SAndroid Build Coastguard Worker return r;
21*c9945492SAndroid Build Coastguard Worker }
22*c9945492SAndroid Build Coastguard Worker
23*c9945492SAndroid Build Coastguard Worker #define a_ll_p a_ll_p
a_ll_p(volatile void * p)24*c9945492SAndroid Build Coastguard Worker static inline void *a_ll_p(volatile void *p)
25*c9945492SAndroid Build Coastguard Worker {
26*c9945492SAndroid Build Coastguard Worker void *v;
27*c9945492SAndroid Build Coastguard Worker __asm__ __volatile__ (
28*c9945492SAndroid Build Coastguard Worker "ll.d %0, %1"
29*c9945492SAndroid Build Coastguard Worker : "=r"(v)
30*c9945492SAndroid Build Coastguard Worker : "ZC"(*(void *volatile *)p));
31*c9945492SAndroid Build Coastguard Worker return v;
32*c9945492SAndroid Build Coastguard Worker }
33*c9945492SAndroid Build Coastguard Worker
34*c9945492SAndroid Build Coastguard Worker #define a_sc_p a_sc_p
a_sc_p(volatile void * p,void * v)35*c9945492SAndroid Build Coastguard Worker static inline int a_sc_p(volatile void *p, void *v)
36*c9945492SAndroid Build Coastguard Worker {
37*c9945492SAndroid Build Coastguard Worker long r;
38*c9945492SAndroid Build Coastguard Worker __asm__ __volatile__ (
39*c9945492SAndroid Build Coastguard Worker "sc.d %0, %1"
40*c9945492SAndroid Build Coastguard Worker : "=r"(r), "=ZC"(*(void *volatile *)p)
41*c9945492SAndroid Build Coastguard Worker : "0"(v)
42*c9945492SAndroid Build Coastguard Worker : "memory");
43*c9945492SAndroid Build Coastguard Worker return r;
44*c9945492SAndroid Build Coastguard Worker }
45*c9945492SAndroid Build Coastguard Worker
46*c9945492SAndroid Build Coastguard Worker #define a_barrier a_barrier
a_barrier()47*c9945492SAndroid Build Coastguard Worker static inline void a_barrier()
48*c9945492SAndroid Build Coastguard Worker {
49*c9945492SAndroid Build Coastguard Worker __asm__ __volatile__ ("dbar 0" : : : "memory");
50*c9945492SAndroid Build Coastguard Worker }
51*c9945492SAndroid Build Coastguard Worker
52*c9945492SAndroid Build Coastguard Worker #define a_pre_llsc a_barrier
53*c9945492SAndroid Build Coastguard Worker #define a_post_llsc a_barrier
54