Lines Matching +full:2 +full:v
21 #define atomic_read(v) READ_ONCE((v)->counter) argument
22 #define atomic_set(v, i) WRITE_ONCE(((v)->counter), (i)) argument
35 static inline void atomic_##op(int i, atomic_t *v) \
37 __asm__ __volatile__(#asm_op "l %1,%0" : "+m" (*v) : ASM_DI (i));\
43 static inline int atomic_##op##_return(int i, atomic_t *v) \
48 "1: movel %2,%1\n" \
50 " casl %2,%1,%0\n" \
52 : "+m" (*v), "=&d" (t), "=&d" (tmp) \
53 : "g" (i), "2" (atomic_read(v))); \
58 static inline int atomic_fetch_##op(int i, atomic_t *v) \
63 "1: movel %2,%1\n" \
65 " casl %2,%1,%0\n" \
67 : "+m" (*v), "=&d" (t), "=&d" (tmp) \
68 : "g" (i), "2" (atomic_read(v))); \
75 static inline int atomic_##op##_return(int i, atomic_t * v) \
81 t = (v->counter c_op i); \
88 static inline int atomic_fetch_##op(int i, atomic_t * v) \
94 t = v->counter; \
95 v->counter c_op i; \
125 static inline void atomic_inc(atomic_t *v) in atomic_inc() argument
127 __asm__ __volatile__("addql #1,%0" : "+m" (*v)); in atomic_inc()
131 static inline void atomic_dec(atomic_t *v) in atomic_dec() argument
133 __asm__ __volatile__("subql #1,%0" : "+m" (*v)); in atomic_dec()
137 static inline int atomic_dec_and_test(atomic_t *v) in atomic_dec_and_test() argument
140 __asm__ __volatile__("subql #1,%1; seq %0" : "=d" (c), "+m" (*v)); in atomic_dec_and_test()
145 static inline int atomic_dec_and_test_lt(atomic_t *v) in atomic_dec_and_test_lt() argument
150 : "=d" (c), "=m" (*v) in atomic_dec_and_test_lt()
151 : "m" (*v)); in atomic_dec_and_test_lt()
155 static inline int atomic_inc_and_test(atomic_t *v) in atomic_inc_and_test() argument
158 __asm__ __volatile__("addql #1,%1; seq %0" : "=d" (c), "+m" (*v)); in atomic_inc_and_test()
165 #define atomic_cmpxchg(v, o, n) ((int)cmpxchg(&((v)->counter), (o), (n))) argument
166 #define atomic_xchg(v, new) (xchg(&((v)->counter), new)) argument
170 static inline int atomic_cmpxchg(atomic_t *v, int old, int new) in atomic_cmpxchg() argument
176 prev = atomic_read(v); in atomic_cmpxchg()
178 atomic_set(v, new); in atomic_cmpxchg()
183 static inline int atomic_xchg(atomic_t *v, int new) in atomic_xchg() argument
189 prev = atomic_read(v); in atomic_xchg()
190 atomic_set(v, new); in atomic_xchg()
197 static inline int atomic_sub_and_test(int i, atomic_t *v) in atomic_sub_and_test() argument
200 __asm__ __volatile__("subl %2,%1; seq %0" in atomic_sub_and_test()
201 : "=d" (c), "+m" (*v) in atomic_sub_and_test()
207 static inline int atomic_add_negative(int i, atomic_t *v) in atomic_add_negative() argument
210 __asm__ __volatile__("addl %2,%1; smi %0" in atomic_add_negative()
211 : "=d" (c), "+m" (*v) in atomic_add_negative()