]>
git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blob - include/asm-generic/atomic-long.h
1 // SPDX-License-Identifier: GPL-2.0
3 // Generated by scripts/atomic/gen-atomic-long.sh
4 // DO NOT MODIFY THIS FILE DIRECTLY
6 #ifndef _ASM_GENERIC_ATOMIC_LONG_H
7 #define _ASM_GENERIC_ATOMIC_LONG_H
9 #include <linux/compiler.h>
10 #include <asm/types.h>
13 typedef atomic64_t atomic_long_t
;
14 #define ATOMIC_LONG_INIT(i) ATOMIC64_INIT(i)
15 #define atomic_long_cond_read_acquire atomic64_cond_read_acquire
16 #define atomic_long_cond_read_relaxed atomic64_cond_read_relaxed
18 typedef atomic_t atomic_long_t
;
19 #define ATOMIC_LONG_INIT(i) ATOMIC_INIT(i)
20 #define atomic_long_cond_read_acquire atomic_cond_read_acquire
21 #define atomic_long_cond_read_relaxed atomic_cond_read_relaxed
26 static __always_inline
long
27 atomic_long_read(const atomic_long_t
*v
)
29 return atomic64_read(v
);
32 static __always_inline
long
33 atomic_long_read_acquire(const atomic_long_t
*v
)
35 return atomic64_read_acquire(v
);
38 static __always_inline
void
39 atomic_long_set(atomic_long_t
*v
, long i
)
44 static __always_inline
void
45 atomic_long_set_release(atomic_long_t
*v
, long i
)
47 atomic64_set_release(v
, i
);
50 static __always_inline
void
51 atomic_long_add(long i
, atomic_long_t
*v
)
56 static __always_inline
long
57 atomic_long_add_return(long i
, atomic_long_t
*v
)
59 return atomic64_add_return(i
, v
);
62 static __always_inline
long
63 atomic_long_add_return_acquire(long i
, atomic_long_t
*v
)
65 return atomic64_add_return_acquire(i
, v
);
68 static __always_inline
long
69 atomic_long_add_return_release(long i
, atomic_long_t
*v
)
71 return atomic64_add_return_release(i
, v
);
74 static __always_inline
long
75 atomic_long_add_return_relaxed(long i
, atomic_long_t
*v
)
77 return atomic64_add_return_relaxed(i
, v
);
80 static __always_inline
long
81 atomic_long_fetch_add(long i
, atomic_long_t
*v
)
83 return atomic64_fetch_add(i
, v
);
86 static __always_inline
long
87 atomic_long_fetch_add_acquire(long i
, atomic_long_t
*v
)
89 return atomic64_fetch_add_acquire(i
, v
);
92 static __always_inline
long
93 atomic_long_fetch_add_release(long i
, atomic_long_t
*v
)
95 return atomic64_fetch_add_release(i
, v
);
98 static __always_inline
long
99 atomic_long_fetch_add_relaxed(long i
, atomic_long_t
*v
)
101 return atomic64_fetch_add_relaxed(i
, v
);
104 static __always_inline
void
105 atomic_long_sub(long i
, atomic_long_t
*v
)
110 static __always_inline
long
111 atomic_long_sub_return(long i
, atomic_long_t
*v
)
113 return atomic64_sub_return(i
, v
);
116 static __always_inline
long
117 atomic_long_sub_return_acquire(long i
, atomic_long_t
*v
)
119 return atomic64_sub_return_acquire(i
, v
);
122 static __always_inline
long
123 atomic_long_sub_return_release(long i
, atomic_long_t
*v
)
125 return atomic64_sub_return_release(i
, v
);
128 static __always_inline
long
129 atomic_long_sub_return_relaxed(long i
, atomic_long_t
*v
)
131 return atomic64_sub_return_relaxed(i
, v
);
134 static __always_inline
long
135 atomic_long_fetch_sub(long i
, atomic_long_t
*v
)
137 return atomic64_fetch_sub(i
, v
);
140 static __always_inline
long
141 atomic_long_fetch_sub_acquire(long i
, atomic_long_t
*v
)
143 return atomic64_fetch_sub_acquire(i
, v
);
146 static __always_inline
long
147 atomic_long_fetch_sub_release(long i
, atomic_long_t
*v
)
149 return atomic64_fetch_sub_release(i
, v
);
152 static __always_inline
long
153 atomic_long_fetch_sub_relaxed(long i
, atomic_long_t
*v
)
155 return atomic64_fetch_sub_relaxed(i
, v
);
158 static __always_inline
void
159 atomic_long_inc(atomic_long_t
*v
)
164 static __always_inline
long
165 atomic_long_inc_return(atomic_long_t
*v
)
167 return atomic64_inc_return(v
);
170 static __always_inline
long
171 atomic_long_inc_return_acquire(atomic_long_t
*v
)
173 return atomic64_inc_return_acquire(v
);
176 static __always_inline
long
177 atomic_long_inc_return_release(atomic_long_t
*v
)
179 return atomic64_inc_return_release(v
);
182 static __always_inline
long
183 atomic_long_inc_return_relaxed(atomic_long_t
*v
)
185 return atomic64_inc_return_relaxed(v
);
188 static __always_inline
long
189 atomic_long_fetch_inc(atomic_long_t
*v
)
191 return atomic64_fetch_inc(v
);
194 static __always_inline
long
195 atomic_long_fetch_inc_acquire(atomic_long_t
*v
)
197 return atomic64_fetch_inc_acquire(v
);
200 static __always_inline
long
201 atomic_long_fetch_inc_release(atomic_long_t
*v
)
203 return atomic64_fetch_inc_release(v
);
206 static __always_inline
long
207 atomic_long_fetch_inc_relaxed(atomic_long_t
*v
)
209 return atomic64_fetch_inc_relaxed(v
);
212 static __always_inline
void
213 atomic_long_dec(atomic_long_t
*v
)
218 static __always_inline
long
219 atomic_long_dec_return(atomic_long_t
*v
)
221 return atomic64_dec_return(v
);
224 static __always_inline
long
225 atomic_long_dec_return_acquire(atomic_long_t
*v
)
227 return atomic64_dec_return_acquire(v
);
230 static __always_inline
long
231 atomic_long_dec_return_release(atomic_long_t
*v
)
233 return atomic64_dec_return_release(v
);
236 static __always_inline
long
237 atomic_long_dec_return_relaxed(atomic_long_t
*v
)
239 return atomic64_dec_return_relaxed(v
);
242 static __always_inline
long
243 atomic_long_fetch_dec(atomic_long_t
*v
)
245 return atomic64_fetch_dec(v
);
248 static __always_inline
long
249 atomic_long_fetch_dec_acquire(atomic_long_t
*v
)
251 return atomic64_fetch_dec_acquire(v
);
254 static __always_inline
long
255 atomic_long_fetch_dec_release(atomic_long_t
*v
)
257 return atomic64_fetch_dec_release(v
);
260 static __always_inline
long
261 atomic_long_fetch_dec_relaxed(atomic_long_t
*v
)
263 return atomic64_fetch_dec_relaxed(v
);
266 static __always_inline
void
267 atomic_long_and(long i
, atomic_long_t
*v
)
272 static __always_inline
long
273 atomic_long_fetch_and(long i
, atomic_long_t
*v
)
275 return atomic64_fetch_and(i
, v
);
278 static __always_inline
long
279 atomic_long_fetch_and_acquire(long i
, atomic_long_t
*v
)
281 return atomic64_fetch_and_acquire(i
, v
);
284 static __always_inline
long
285 atomic_long_fetch_and_release(long i
, atomic_long_t
*v
)
287 return atomic64_fetch_and_release(i
, v
);
290 static __always_inline
long
291 atomic_long_fetch_and_relaxed(long i
, atomic_long_t
*v
)
293 return atomic64_fetch_and_relaxed(i
, v
);
296 static __always_inline
void
297 atomic_long_andnot(long i
, atomic_long_t
*v
)
299 atomic64_andnot(i
, v
);
302 static __always_inline
long
303 atomic_long_fetch_andnot(long i
, atomic_long_t
*v
)
305 return atomic64_fetch_andnot(i
, v
);
308 static __always_inline
long
309 atomic_long_fetch_andnot_acquire(long i
, atomic_long_t
*v
)
311 return atomic64_fetch_andnot_acquire(i
, v
);
314 static __always_inline
long
315 atomic_long_fetch_andnot_release(long i
, atomic_long_t
*v
)
317 return atomic64_fetch_andnot_release(i
, v
);
320 static __always_inline
long
321 atomic_long_fetch_andnot_relaxed(long i
, atomic_long_t
*v
)
323 return atomic64_fetch_andnot_relaxed(i
, v
);
326 static __always_inline
void
327 atomic_long_or(long i
, atomic_long_t
*v
)
332 static __always_inline
long
333 atomic_long_fetch_or(long i
, atomic_long_t
*v
)
335 return atomic64_fetch_or(i
, v
);
338 static __always_inline
long
339 atomic_long_fetch_or_acquire(long i
, atomic_long_t
*v
)
341 return atomic64_fetch_or_acquire(i
, v
);
344 static __always_inline
long
345 atomic_long_fetch_or_release(long i
, atomic_long_t
*v
)
347 return atomic64_fetch_or_release(i
, v
);
350 static __always_inline
long
351 atomic_long_fetch_or_relaxed(long i
, atomic_long_t
*v
)
353 return atomic64_fetch_or_relaxed(i
, v
);
356 static __always_inline
void
357 atomic_long_xor(long i
, atomic_long_t
*v
)
362 static __always_inline
long
363 atomic_long_fetch_xor(long i
, atomic_long_t
*v
)
365 return atomic64_fetch_xor(i
, v
);
368 static __always_inline
long
369 atomic_long_fetch_xor_acquire(long i
, atomic_long_t
*v
)
371 return atomic64_fetch_xor_acquire(i
, v
);
374 static __always_inline
long
375 atomic_long_fetch_xor_release(long i
, atomic_long_t
*v
)
377 return atomic64_fetch_xor_release(i
, v
);
380 static __always_inline
long
381 atomic_long_fetch_xor_relaxed(long i
, atomic_long_t
*v
)
383 return atomic64_fetch_xor_relaxed(i
, v
);
386 static __always_inline
long
387 atomic_long_xchg(atomic_long_t
*v
, long i
)
389 return atomic64_xchg(v
, i
);
392 static __always_inline
long
393 atomic_long_xchg_acquire(atomic_long_t
*v
, long i
)
395 return atomic64_xchg_acquire(v
, i
);
398 static __always_inline
long
399 atomic_long_xchg_release(atomic_long_t
*v
, long i
)
401 return atomic64_xchg_release(v
, i
);
404 static __always_inline
long
405 atomic_long_xchg_relaxed(atomic_long_t
*v
, long i
)
407 return atomic64_xchg_relaxed(v
, i
);
410 static __always_inline
long
411 atomic_long_cmpxchg(atomic_long_t
*v
, long old
, long new)
413 return atomic64_cmpxchg(v
, old
, new);
416 static __always_inline
long
417 atomic_long_cmpxchg_acquire(atomic_long_t
*v
, long old
, long new)
419 return atomic64_cmpxchg_acquire(v
, old
, new);
422 static __always_inline
long
423 atomic_long_cmpxchg_release(atomic_long_t
*v
, long old
, long new)
425 return atomic64_cmpxchg_release(v
, old
, new);
428 static __always_inline
long
429 atomic_long_cmpxchg_relaxed(atomic_long_t
*v
, long old
, long new)
431 return atomic64_cmpxchg_relaxed(v
, old
, new);
434 static __always_inline
bool
435 atomic_long_try_cmpxchg(atomic_long_t
*v
, long *old
, long new)
437 return atomic64_try_cmpxchg(v
, (s64
*)old
, new);
440 static __always_inline
bool
441 atomic_long_try_cmpxchg_acquire(atomic_long_t
*v
, long *old
, long new)
443 return atomic64_try_cmpxchg_acquire(v
, (s64
*)old
, new);
446 static __always_inline
bool
447 atomic_long_try_cmpxchg_release(atomic_long_t
*v
, long *old
, long new)
449 return atomic64_try_cmpxchg_release(v
, (s64
*)old
, new);
452 static __always_inline
bool
453 atomic_long_try_cmpxchg_relaxed(atomic_long_t
*v
, long *old
, long new)
455 return atomic64_try_cmpxchg_relaxed(v
, (s64
*)old
, new);
458 static __always_inline
bool
459 atomic_long_sub_and_test(long i
, atomic_long_t
*v
)
461 return atomic64_sub_and_test(i
, v
);
464 static __always_inline
bool
465 atomic_long_dec_and_test(atomic_long_t
*v
)
467 return atomic64_dec_and_test(v
);
470 static __always_inline
bool
471 atomic_long_inc_and_test(atomic_long_t
*v
)
473 return atomic64_inc_and_test(v
);
476 static __always_inline
bool
477 atomic_long_add_negative(long i
, atomic_long_t
*v
)
479 return atomic64_add_negative(i
, v
);
482 static __always_inline
long
483 atomic_long_fetch_add_unless(atomic_long_t
*v
, long a
, long u
)
485 return atomic64_fetch_add_unless(v
, a
, u
);
488 static __always_inline
bool
489 atomic_long_add_unless(atomic_long_t
*v
, long a
, long u
)
491 return atomic64_add_unless(v
, a
, u
);
494 static __always_inline
bool
495 atomic_long_inc_not_zero(atomic_long_t
*v
)
497 return atomic64_inc_not_zero(v
);
500 static __always_inline
bool
501 atomic_long_inc_unless_negative(atomic_long_t
*v
)
503 return atomic64_inc_unless_negative(v
);
506 static __always_inline
bool
507 atomic_long_dec_unless_positive(atomic_long_t
*v
)
509 return atomic64_dec_unless_positive(v
);
512 static __always_inline
long
513 atomic_long_dec_if_positive(atomic_long_t
*v
)
515 return atomic64_dec_if_positive(v
);
518 #else /* CONFIG_64BIT */
520 static __always_inline
long
521 atomic_long_read(const atomic_long_t
*v
)
523 return atomic_read(v
);
526 static __always_inline
long
527 atomic_long_read_acquire(const atomic_long_t
*v
)
529 return atomic_read_acquire(v
);
532 static __always_inline
void
533 atomic_long_set(atomic_long_t
*v
, long i
)
538 static __always_inline
void
539 atomic_long_set_release(atomic_long_t
*v
, long i
)
541 atomic_set_release(v
, i
);
544 static __always_inline
void
545 atomic_long_add(long i
, atomic_long_t
*v
)
550 static __always_inline
long
551 atomic_long_add_return(long i
, atomic_long_t
*v
)
553 return atomic_add_return(i
, v
);
556 static __always_inline
long
557 atomic_long_add_return_acquire(long i
, atomic_long_t
*v
)
559 return atomic_add_return_acquire(i
, v
);
562 static __always_inline
long
563 atomic_long_add_return_release(long i
, atomic_long_t
*v
)
565 return atomic_add_return_release(i
, v
);
568 static __always_inline
long
569 atomic_long_add_return_relaxed(long i
, atomic_long_t
*v
)
571 return atomic_add_return_relaxed(i
, v
);
574 static __always_inline
long
575 atomic_long_fetch_add(long i
, atomic_long_t
*v
)
577 return atomic_fetch_add(i
, v
);
580 static __always_inline
long
581 atomic_long_fetch_add_acquire(long i
, atomic_long_t
*v
)
583 return atomic_fetch_add_acquire(i
, v
);
586 static __always_inline
long
587 atomic_long_fetch_add_release(long i
, atomic_long_t
*v
)
589 return atomic_fetch_add_release(i
, v
);
592 static __always_inline
long
593 atomic_long_fetch_add_relaxed(long i
, atomic_long_t
*v
)
595 return atomic_fetch_add_relaxed(i
, v
);
598 static __always_inline
void
599 atomic_long_sub(long i
, atomic_long_t
*v
)
604 static __always_inline
long
605 atomic_long_sub_return(long i
, atomic_long_t
*v
)
607 return atomic_sub_return(i
, v
);
610 static __always_inline
long
611 atomic_long_sub_return_acquire(long i
, atomic_long_t
*v
)
613 return atomic_sub_return_acquire(i
, v
);
616 static __always_inline
long
617 atomic_long_sub_return_release(long i
, atomic_long_t
*v
)
619 return atomic_sub_return_release(i
, v
);
622 static __always_inline
long
623 atomic_long_sub_return_relaxed(long i
, atomic_long_t
*v
)
625 return atomic_sub_return_relaxed(i
, v
);
628 static __always_inline
long
629 atomic_long_fetch_sub(long i
, atomic_long_t
*v
)
631 return atomic_fetch_sub(i
, v
);
634 static __always_inline
long
635 atomic_long_fetch_sub_acquire(long i
, atomic_long_t
*v
)
637 return atomic_fetch_sub_acquire(i
, v
);
640 static __always_inline
long
641 atomic_long_fetch_sub_release(long i
, atomic_long_t
*v
)
643 return atomic_fetch_sub_release(i
, v
);
646 static __always_inline
long
647 atomic_long_fetch_sub_relaxed(long i
, atomic_long_t
*v
)
649 return atomic_fetch_sub_relaxed(i
, v
);
652 static __always_inline
void
653 atomic_long_inc(atomic_long_t
*v
)
658 static __always_inline
long
659 atomic_long_inc_return(atomic_long_t
*v
)
661 return atomic_inc_return(v
);
664 static __always_inline
long
665 atomic_long_inc_return_acquire(atomic_long_t
*v
)
667 return atomic_inc_return_acquire(v
);
670 static __always_inline
long
671 atomic_long_inc_return_release(atomic_long_t
*v
)
673 return atomic_inc_return_release(v
);
676 static __always_inline
long
677 atomic_long_inc_return_relaxed(atomic_long_t
*v
)
679 return atomic_inc_return_relaxed(v
);
682 static __always_inline
long
683 atomic_long_fetch_inc(atomic_long_t
*v
)
685 return atomic_fetch_inc(v
);
688 static __always_inline
long
689 atomic_long_fetch_inc_acquire(atomic_long_t
*v
)
691 return atomic_fetch_inc_acquire(v
);
694 static __always_inline
long
695 atomic_long_fetch_inc_release(atomic_long_t
*v
)
697 return atomic_fetch_inc_release(v
);
700 static __always_inline
long
701 atomic_long_fetch_inc_relaxed(atomic_long_t
*v
)
703 return atomic_fetch_inc_relaxed(v
);
706 static __always_inline
void
707 atomic_long_dec(atomic_long_t
*v
)
712 static __always_inline
long
713 atomic_long_dec_return(atomic_long_t
*v
)
715 return atomic_dec_return(v
);
718 static __always_inline
long
719 atomic_long_dec_return_acquire(atomic_long_t
*v
)
721 return atomic_dec_return_acquire(v
);
724 static __always_inline
long
725 atomic_long_dec_return_release(atomic_long_t
*v
)
727 return atomic_dec_return_release(v
);
730 static __always_inline
long
731 atomic_long_dec_return_relaxed(atomic_long_t
*v
)
733 return atomic_dec_return_relaxed(v
);
736 static __always_inline
long
737 atomic_long_fetch_dec(atomic_long_t
*v
)
739 return atomic_fetch_dec(v
);
742 static __always_inline
long
743 atomic_long_fetch_dec_acquire(atomic_long_t
*v
)
745 return atomic_fetch_dec_acquire(v
);
748 static __always_inline
long
749 atomic_long_fetch_dec_release(atomic_long_t
*v
)
751 return atomic_fetch_dec_release(v
);
754 static __always_inline
long
755 atomic_long_fetch_dec_relaxed(atomic_long_t
*v
)
757 return atomic_fetch_dec_relaxed(v
);
760 static __always_inline
void
761 atomic_long_and(long i
, atomic_long_t
*v
)
766 static __always_inline
long
767 atomic_long_fetch_and(long i
, atomic_long_t
*v
)
769 return atomic_fetch_and(i
, v
);
772 static __always_inline
long
773 atomic_long_fetch_and_acquire(long i
, atomic_long_t
*v
)
775 return atomic_fetch_and_acquire(i
, v
);
778 static __always_inline
long
779 atomic_long_fetch_and_release(long i
, atomic_long_t
*v
)
781 return atomic_fetch_and_release(i
, v
);
784 static __always_inline
long
785 atomic_long_fetch_and_relaxed(long i
, atomic_long_t
*v
)
787 return atomic_fetch_and_relaxed(i
, v
);
790 static __always_inline
void
791 atomic_long_andnot(long i
, atomic_long_t
*v
)
796 static __always_inline
long
797 atomic_long_fetch_andnot(long i
, atomic_long_t
*v
)
799 return atomic_fetch_andnot(i
, v
);
802 static __always_inline
long
803 atomic_long_fetch_andnot_acquire(long i
, atomic_long_t
*v
)
805 return atomic_fetch_andnot_acquire(i
, v
);
808 static __always_inline
long
809 atomic_long_fetch_andnot_release(long i
, atomic_long_t
*v
)
811 return atomic_fetch_andnot_release(i
, v
);
814 static __always_inline
long
815 atomic_long_fetch_andnot_relaxed(long i
, atomic_long_t
*v
)
817 return atomic_fetch_andnot_relaxed(i
, v
);
820 static __always_inline
void
821 atomic_long_or(long i
, atomic_long_t
*v
)
826 static __always_inline
long
827 atomic_long_fetch_or(long i
, atomic_long_t
*v
)
829 return atomic_fetch_or(i
, v
);
832 static __always_inline
long
833 atomic_long_fetch_or_acquire(long i
, atomic_long_t
*v
)
835 return atomic_fetch_or_acquire(i
, v
);
838 static __always_inline
long
839 atomic_long_fetch_or_release(long i
, atomic_long_t
*v
)
841 return atomic_fetch_or_release(i
, v
);
844 static __always_inline
long
845 atomic_long_fetch_or_relaxed(long i
, atomic_long_t
*v
)
847 return atomic_fetch_or_relaxed(i
, v
);
850 static __always_inline
void
851 atomic_long_xor(long i
, atomic_long_t
*v
)
856 static __always_inline
long
857 atomic_long_fetch_xor(long i
, atomic_long_t
*v
)
859 return atomic_fetch_xor(i
, v
);
862 static __always_inline
long
863 atomic_long_fetch_xor_acquire(long i
, atomic_long_t
*v
)
865 return atomic_fetch_xor_acquire(i
, v
);
868 static __always_inline
long
869 atomic_long_fetch_xor_release(long i
, atomic_long_t
*v
)
871 return atomic_fetch_xor_release(i
, v
);
874 static __always_inline
long
875 atomic_long_fetch_xor_relaxed(long i
, atomic_long_t
*v
)
877 return atomic_fetch_xor_relaxed(i
, v
);
880 static __always_inline
long
881 atomic_long_xchg(atomic_long_t
*v
, long i
)
883 return atomic_xchg(v
, i
);
886 static __always_inline
long
887 atomic_long_xchg_acquire(atomic_long_t
*v
, long i
)
889 return atomic_xchg_acquire(v
, i
);
892 static __always_inline
long
893 atomic_long_xchg_release(atomic_long_t
*v
, long i
)
895 return atomic_xchg_release(v
, i
);
898 static __always_inline
long
899 atomic_long_xchg_relaxed(atomic_long_t
*v
, long i
)
901 return atomic_xchg_relaxed(v
, i
);
904 static __always_inline
long
905 atomic_long_cmpxchg(atomic_long_t
*v
, long old
, long new)
907 return atomic_cmpxchg(v
, old
, new);
910 static __always_inline
long
911 atomic_long_cmpxchg_acquire(atomic_long_t
*v
, long old
, long new)
913 return atomic_cmpxchg_acquire(v
, old
, new);
916 static __always_inline
long
917 atomic_long_cmpxchg_release(atomic_long_t
*v
, long old
, long new)
919 return atomic_cmpxchg_release(v
, old
, new);
922 static __always_inline
long
923 atomic_long_cmpxchg_relaxed(atomic_long_t
*v
, long old
, long new)
925 return atomic_cmpxchg_relaxed(v
, old
, new);
928 static __always_inline
bool
929 atomic_long_try_cmpxchg(atomic_long_t
*v
, long *old
, long new)
931 return atomic_try_cmpxchg(v
, (int *)old
, new);
934 static __always_inline
bool
935 atomic_long_try_cmpxchg_acquire(atomic_long_t
*v
, long *old
, long new)
937 return atomic_try_cmpxchg_acquire(v
, (int *)old
, new);
940 static __always_inline
bool
941 atomic_long_try_cmpxchg_release(atomic_long_t
*v
, long *old
, long new)
943 return atomic_try_cmpxchg_release(v
, (int *)old
, new);
946 static __always_inline
bool
947 atomic_long_try_cmpxchg_relaxed(atomic_long_t
*v
, long *old
, long new)
949 return atomic_try_cmpxchg_relaxed(v
, (int *)old
, new);
952 static __always_inline
bool
953 atomic_long_sub_and_test(long i
, atomic_long_t
*v
)
955 return atomic_sub_and_test(i
, v
);
958 static __always_inline
bool
959 atomic_long_dec_and_test(atomic_long_t
*v
)
961 return atomic_dec_and_test(v
);
964 static __always_inline
bool
965 atomic_long_inc_and_test(atomic_long_t
*v
)
967 return atomic_inc_and_test(v
);
970 static __always_inline
bool
971 atomic_long_add_negative(long i
, atomic_long_t
*v
)
973 return atomic_add_negative(i
, v
);
976 static __always_inline
long
977 atomic_long_fetch_add_unless(atomic_long_t
*v
, long a
, long u
)
979 return atomic_fetch_add_unless(v
, a
, u
);
982 static __always_inline
bool
983 atomic_long_add_unless(atomic_long_t
*v
, long a
, long u
)
985 return atomic_add_unless(v
, a
, u
);
988 static __always_inline
bool
989 atomic_long_inc_not_zero(atomic_long_t
*v
)
991 return atomic_inc_not_zero(v
);
994 static __always_inline
bool
995 atomic_long_inc_unless_negative(atomic_long_t
*v
)
997 return atomic_inc_unless_negative(v
);
1000 static __always_inline
bool
1001 atomic_long_dec_unless_positive(atomic_long_t
*v
)
1003 return atomic_dec_unless_positive(v
);
1006 static __always_inline
long
1007 atomic_long_dec_if_positive(atomic_long_t
*v
)
1009 return atomic_dec_if_positive(v
);
1012 #endif /* CONFIG_64BIT */
1013 #endif /* _ASM_GENERIC_ATOMIC_LONG_H */
1014 // a624200981f552b2c6be4f32fe44da8289f30d87