Lines Matching refs:v
25 static __always_inline int arch_atomic_read(const atomic_t *v) in arch_atomic_read() argument
31 return READ_ONCE((v)->counter); in arch_atomic_read()
41 static __always_inline void arch_atomic_set(atomic_t *v, int i) in arch_atomic_set() argument
43 WRITE_ONCE(v->counter, i); in arch_atomic_set()
53 static __always_inline void arch_atomic_add(int i, atomic_t *v) in arch_atomic_add() argument
56 : "+m" (v->counter) in arch_atomic_add()
67 static __always_inline void arch_atomic_sub(int i, atomic_t *v) in arch_atomic_sub() argument
70 : "+m" (v->counter) in arch_atomic_sub()
83 static __always_inline bool arch_atomic_sub_and_test(int i, atomic_t *v) in arch_atomic_sub_and_test() argument
85 GEN_BINARY_RMWcc(LOCK_PREFIX "subl", v->counter, "er", i, "%0", e); in arch_atomic_sub_and_test()
95 static __always_inline void arch_atomic_inc(atomic_t *v) in arch_atomic_inc() argument
98 : "+m" (v->counter)); in arch_atomic_inc()
108 static __always_inline void arch_atomic_dec(atomic_t *v) in arch_atomic_dec() argument
111 : "+m" (v->counter)); in arch_atomic_dec()
123 static __always_inline bool arch_atomic_dec_and_test(atomic_t *v) in arch_atomic_dec_and_test() argument
125 GEN_UNARY_RMWcc(LOCK_PREFIX "decl", v->counter, "%0", e); in arch_atomic_dec_and_test()
137 static __always_inline bool arch_atomic_inc_and_test(atomic_t *v) in arch_atomic_inc_and_test() argument
139 GEN_UNARY_RMWcc(LOCK_PREFIX "incl", v->counter, "%0", e); in arch_atomic_inc_and_test()
152 static __always_inline bool arch_atomic_add_negative(int i, atomic_t *v) in arch_atomic_add_negative() argument
154 GEN_BINARY_RMWcc(LOCK_PREFIX "addl", v->counter, "er", i, "%0", s); in arch_atomic_add_negative()
165 static __always_inline int arch_atomic_add_return(int i, atomic_t *v) in arch_atomic_add_return() argument
167 return i + xadd(&v->counter, i); in arch_atomic_add_return()
177 static __always_inline int arch_atomic_sub_return(int i, atomic_t *v) in arch_atomic_sub_return() argument
179 return arch_atomic_add_return(-i, v); in arch_atomic_sub_return()
182 static __always_inline int arch_atomic_fetch_add(int i, atomic_t *v) in arch_atomic_fetch_add() argument
184 return xadd(&v->counter, i); in arch_atomic_fetch_add()
187 static __always_inline int arch_atomic_fetch_sub(int i, atomic_t *v) in arch_atomic_fetch_sub() argument
189 return xadd(&v->counter, -i); in arch_atomic_fetch_sub()
192 static __always_inline int arch_atomic_cmpxchg(atomic_t *v, int old, int new) in arch_atomic_cmpxchg() argument
194 return arch_cmpxchg(&v->counter, old, new); in arch_atomic_cmpxchg()
198 static __always_inline bool arch_atomic_try_cmpxchg(atomic_t *v, int *old, int new) in arch_atomic_try_cmpxchg() argument
200 return try_cmpxchg(&v->counter, old, new); in arch_atomic_try_cmpxchg()
203 static inline int arch_atomic_xchg(atomic_t *v, int new) in arch_atomic_xchg() argument
205 return arch_xchg(&v->counter, new); in arch_atomic_xchg()
208 static inline void arch_atomic_and(int i, atomic_t *v) in arch_atomic_and() argument
211 : "+m" (v->counter) in arch_atomic_and()
216 static inline int arch_atomic_fetch_and(int i, atomic_t *v) in arch_atomic_fetch_and() argument
218 int val = arch_atomic_read(v); in arch_atomic_fetch_and()
220 do { } while (!arch_atomic_try_cmpxchg(v, &val, val & i)); in arch_atomic_fetch_and()
225 static inline void arch_atomic_or(int i, atomic_t *v) in arch_atomic_or() argument
228 : "+m" (v->counter) in arch_atomic_or()
233 static inline int arch_atomic_fetch_or(int i, atomic_t *v) in arch_atomic_fetch_or() argument
235 int val = arch_atomic_read(v); in arch_atomic_fetch_or()
237 do { } while (!arch_atomic_try_cmpxchg(v, &val, val | i)); in arch_atomic_fetch_or()
242 static inline void arch_atomic_xor(int i, atomic_t *v) in arch_atomic_xor() argument
245 : "+m" (v->counter) in arch_atomic_xor()
250 static inline int arch_atomic_fetch_xor(int i, atomic_t *v) in arch_atomic_fetch_xor() argument
252 int val = arch_atomic_read(v); in arch_atomic_fetch_xor()
254 do { } while (!arch_atomic_try_cmpxchg(v, &val, val ^ i)); in arch_atomic_fetch_xor()