Lines Matching +full:2 +full:v
16 static __always_inline int arch_atomic_read(const atomic_t *v) in arch_atomic_read() argument
18 return READ_ONCE(v->counter); in arch_atomic_read()
20 static __always_inline void arch_atomic_set(atomic_t *v, int i) in arch_atomic_set() argument
22 WRITE_ONCE(v->counter, i); in arch_atomic_set()
27 void arch_atomic_##op(int i, atomic_t *v) \
31 "1: ldex.w %0, (%2) \n" \
33 " stex.w %0, (%2) \n" \
36 : "r" (i), "r" (&v->counter) \
50 int arch_atomic_fetch_##op##_relaxed(int i, atomic_t *v) \ in ATOMIC_OP()
56 " " #op " %0, %2 \n" \ in ATOMIC_OP()
60 : "r" (i), "r"(&v->counter) \ in ATOMIC_OP()
67 int arch_atomic_##op##_return_relaxed(int i, atomic_t *v) \
69 return arch_atomic_fetch_##op##_relaxed(i, v) c_op i; \
104 arch_atomic_fetch_add_unless(atomic_t *v, int a, int u)
112 " bf 2f \n"
114 " add %1, %2 \n"
118 "2:\n"
120 : "r" (a), "r" (&v->counter), "r" (u)
128 arch_atomic_inc_unless_negative(atomic_t *v) in arch_atomic_inc_unless_negative() argument
134 "1: ldex.w %0, (%2) \n" in arch_atomic_inc_unless_negative()
136 " blz %0, 2f \n" in arch_atomic_inc_unless_negative()
139 " stex.w %0, (%2) \n" in arch_atomic_inc_unless_negative()
142 "2:\n" in arch_atomic_inc_unless_negative()
144 : "r" (&v->counter) in arch_atomic_inc_unless_negative()
153 arch_atomic_dec_unless_positive(atomic_t *v) in arch_atomic_dec_unless_positive() argument
159 "1: ldex.w %0, (%2) \n" in arch_atomic_dec_unless_positive()
161 " bhz %0, 2f \n" in arch_atomic_dec_unless_positive()
164 " stex.w %0, (%2) \n" in arch_atomic_dec_unless_positive()
167 "2:\n" in arch_atomic_dec_unless_positive()
169 : "r" (&v->counter) in arch_atomic_dec_unless_positive()
177 arch_atomic_dec_if_positive(atomic_t *v) in arch_atomic_dec_if_positive() argument
183 "1: ldex.w %0, (%2) \n" in arch_atomic_dec_if_positive()
185 " blz %1, 2f \n" in arch_atomic_dec_if_positive()
186 " stex.w %1, (%2) \n" in arch_atomic_dec_if_positive()
189 "2:\n" in arch_atomic_dec_if_positive()
191 : "r" (&v->counter) in arch_atomic_dec_if_positive()
200 int arch_atomic_xchg_relaxed(atomic_t *v, int n) \
202 return __xchg_relaxed(n, &(v->counter), 4); \
205 int arch_atomic_cmpxchg_relaxed(atomic_t *v, int o, int n) \
207 return __cmpxchg_relaxed(&(v->counter), o, n, 4); \
210 int arch_atomic_cmpxchg_acquire(atomic_t *v, int o, int n) \
212 return __cmpxchg_acquire(&(v->counter), o, n, 4); \
215 int arch_atomic_cmpxchg(atomic_t *v, int o, int n) \
217 return __cmpxchg(&(v->counter), o, n, 4); \