Lines Matching refs:v
25 static __always_inline int atomic_read(const atomic_t *v) in atomic_read() argument
27 return READ_ONCE((v)->counter); in atomic_read()
37 static __always_inline void atomic_set(atomic_t *v, int i) in atomic_set() argument
39 WRITE_ONCE(v->counter, i); in atomic_set()
49 static __always_inline void atomic_add(int i, atomic_t *v) in atomic_add() argument
52 : "+m" (v->counter) in atomic_add()
63 static __always_inline void atomic_sub(int i, atomic_t *v) in atomic_sub() argument
66 : "+m" (v->counter) in atomic_sub()
79 static __always_inline int atomic_sub_and_test(int i, atomic_t *v) in atomic_sub_and_test() argument
81 GEN_BINARY_RMWcc(LOCK_PREFIX "subl", v->counter, "er", i, "%0", "e"); in atomic_sub_and_test()
90 static __always_inline void atomic_inc(atomic_t *v) in atomic_inc() argument
93 : "+m" (v->counter)); in atomic_inc()
102 static __always_inline void atomic_dec(atomic_t *v) in atomic_dec() argument
105 : "+m" (v->counter)); in atomic_dec()
116 static __always_inline int atomic_dec_and_test(atomic_t *v) in atomic_dec_and_test() argument
118 GEN_UNARY_RMWcc(LOCK_PREFIX "decl", v->counter, "%0", "e"); in atomic_dec_and_test()
129 static __always_inline int atomic_inc_and_test(atomic_t *v) in atomic_inc_and_test() argument
131 GEN_UNARY_RMWcc(LOCK_PREFIX "incl", v->counter, "%0", "e"); in atomic_inc_and_test()
143 static __always_inline int atomic_add_negative(int i, atomic_t *v) in atomic_add_negative() argument
145 GEN_BINARY_RMWcc(LOCK_PREFIX "addl", v->counter, "er", i, "%0", "s"); in atomic_add_negative()
155 static __always_inline int atomic_add_return(int i, atomic_t *v) in atomic_add_return() argument
157 return i + xadd(&v->counter, i); in atomic_add_return()
167 static __always_inline int atomic_sub_return(int i, atomic_t *v) in atomic_sub_return() argument
169 return atomic_add_return(-i, v); in atomic_sub_return()
172 #define atomic_inc_return(v) (atomic_add_return(1, v)) argument
173 #define atomic_dec_return(v) (atomic_sub_return(1, v)) argument
175 static __always_inline int atomic_cmpxchg(atomic_t *v, int old, int new) in atomic_cmpxchg() argument
177 return cmpxchg(&v->counter, old, new); in atomic_cmpxchg()
180 static inline int atomic_xchg(atomic_t *v, int new) in atomic_xchg() argument
182 return xchg(&v->counter, new); in atomic_xchg()
186 static inline void atomic_##op(int i, atomic_t *v) \
189 : "+m" (v->counter) \
209 static __always_inline int __atomic_add_unless(atomic_t *v, int a, int u) in ATOMIC_OP()
212 c = atomic_read(v); in ATOMIC_OP()
216 old = atomic_cmpxchg((v), c, c + (a)); in ATOMIC_OP()
231 static __always_inline short int atomic_inc_short(short int *v) in atomic_inc_short() argument
233 asm(LOCK_PREFIX "addw $1, %0" : "+m" (*v)); in atomic_inc_short()
234 return *v; in atomic_inc_short()