Lines Matching +full:counter +full:- +full:2

1 /* SPDX-License-Identifier: GPL-2.0 */
5 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
32 #define arch_atomic_read(v) READ_ONCE((v)->counter)
33 #define arch_atomic_set(v, i) WRITE_ONCE((v)->counter, (i))
40 : "+ZB" (v->counter) \
51 "am"#asm_op#mb".w" " %1, %2, %0 \n" \
52 : "+ZB" (v->counter), "=&r" (result) \
65 "am"#asm_op#mb".w" " %1, %2, %0 \n" \
66 : "+ZB" (v->counter), "=&r" (result) \
81 ATOMIC_OPS(sub, -i, add, +)
139 " b 2f\n" in ATOMIC_OPS()
142 "2:\n" in ATOMIC_OPS()
144 [c]"=ZB" (v->counter) in ATOMIC_OPS()
159 "1: ll.w %1, %2 # atomic_sub_if_positive\n" in arch_atomic_sub_if_positive()
162 " bltz %0, 2f \n" in arch_atomic_sub_if_positive()
163 " sc.w %1, %2 \n" in arch_atomic_sub_if_positive()
165 "2: \n" in arch_atomic_sub_if_positive()
167 : "=&r" (result), "=&r" (temp), "+ZC" (v->counter) in arch_atomic_sub_if_positive()
168 : "I" (-i)); in arch_atomic_sub_if_positive()
171 "1: ll.w %1, %2 # atomic_sub_if_positive\n" in arch_atomic_sub_if_positive()
174 " bltz %0, 2f \n" in arch_atomic_sub_if_positive()
175 " sc.w %1, %2 \n" in arch_atomic_sub_if_positive()
177 "2: \n" in arch_atomic_sub_if_positive()
179 : "=&r" (result), "=&r" (temp), "+ZC" (v->counter) in arch_atomic_sub_if_positive()
192 #define arch_atomic64_read(v) READ_ONCE((v)->counter)
193 #define arch_atomic64_set(v, i) WRITE_ONCE((v)->counter, (i))
200 : "+ZB" (v->counter) \
210 "am"#asm_op#mb".d " " %1, %2, %0 \n" \
211 : "+ZB" (v->counter), "=&r" (result) \
224 "am"#asm_op#mb".d " " %1, %2, %0 \n" \
225 : "+ZB" (v->counter), "=&r" (result) \
240 ATOMIC64_OPS(sub, -i, add, +)
298 " b 2f\n" in ATOMIC64_OPS()
301 "2:\n" in ATOMIC64_OPS()
303 [c] "=ZB" (v->counter) in ATOMIC64_OPS()
318 "1: ll.d %1, %2 # atomic64_sub_if_positive \n" in arch_atomic64_sub_if_positive()
321 " bltz %0, 2f \n" in arch_atomic64_sub_if_positive()
322 " sc.d %1, %2 \n" in arch_atomic64_sub_if_positive()
324 "2: \n" in arch_atomic64_sub_if_positive()
326 : "=&r" (result), "=&r" (temp), "+ZC" (v->counter) in arch_atomic64_sub_if_positive()
327 : "I" (-i)); in arch_atomic64_sub_if_positive()
330 "1: ll.d %1, %2 # atomic64_sub_if_positive \n" in arch_atomic64_sub_if_positive()
333 " bltz %0, 2f \n" in arch_atomic64_sub_if_positive()
334 " sc.d %1, %2 \n" in arch_atomic64_sub_if_positive()
336 "2: \n" in arch_atomic64_sub_if_positive()
338 : "=&r" (result), "=&r" (temp), "+ZC" (v->counter) in arch_atomic64_sub_if_positive()