1
2
3
4
5
6#ifndef _LINUX_ATOMIC_LONG_H
7#define _LINUX_ATOMIC_LONG_H
8
9#include <linux/compiler.h>
10#include <asm/types.h>
11
12#ifdef CONFIG_64BIT
13typedef 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
17#else
18typedef 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
22#endif
23
24#ifdef CONFIG_64BIT
25
26static __always_inline long
27arch_atomic_long_read(const atomic_long_t *v)
28{
29 return arch_atomic64_read(v);
30}
31
32static __always_inline long
33arch_atomic_long_read_acquire(const atomic_long_t *v)
34{
35 return arch_atomic64_read_acquire(v);
36}
37
38static __always_inline void
39arch_atomic_long_set(atomic_long_t *v, long i)
40{
41 arch_atomic64_set(v, i);
42}
43
44static __always_inline void
45arch_atomic_long_set_release(atomic_long_t *v, long i)
46{
47 arch_atomic64_set_release(v, i);
48}
49
50static __always_inline void
51arch_atomic_long_add(long i, atomic_long_t *v)
52{
53 arch_atomic64_add(i, v);
54}
55
56static __always_inline long
57arch_atomic_long_add_return(long i, atomic_long_t *v)
58{
59 return arch_atomic64_add_return(i, v);
60}
61
62static __always_inline long
63arch_atomic_long_add_return_acquire(long i, atomic_long_t *v)
64{
65 return arch_atomic64_add_return_acquire(i, v);
66}
67
68static __always_inline long
69arch_atomic_long_add_return_release(long i, atomic_long_t *v)
70{
71 return arch_atomic64_add_return_release(i, v);
72}
73
74static __always_inline long
75arch_atomic_long_add_return_relaxed(long i, atomic_long_t *v)
76{
77 return arch_atomic64_add_return_relaxed(i, v);
78}
79
80static __always_inline long
81arch_atomic_long_fetch_add(long i, atomic_long_t *v)
82{
83 return arch_atomic64_fetch_add(i, v);
84}
85
86static __always_inline long
87arch_atomic_long_fetch_add_acquire(long i, atomic_long_t *v)
88{
89 return arch_atomic64_fetch_add_acquire(i, v);
90}
91
92static __always_inline long
93arch_atomic_long_fetch_add_release(long i, atomic_long_t *v)
94{
95 return arch_atomic64_fetch_add_release(i, v);
96}
97
98static __always_inline long
99arch_atomic_long_fetch_add_relaxed(long i, atomic_long_t *v)
100{
101 return arch_atomic64_fetch_add_relaxed(i, v);
102}
103
104static __always_inline void
105arch_atomic_long_sub(long i, atomic_long_t *v)
106{
107 arch_atomic64_sub(i, v);
108}
109
110static __always_inline long
111arch_atomic_long_sub_return(long i, atomic_long_t *v)
112{
113 return arch_atomic64_sub_return(i, v);
114}
115
116static __always_inline long
117arch_atomic_long_sub_return_acquire(long i, atomic_long_t *v)
118{
119 return arch_atomic64_sub_return_acquire(i, v);
120}
121
122static __always_inline long
123arch_atomic_long_sub_return_release(long i, atomic_long_t *v)
124{
125 return arch_atomic64_sub_return_release(i, v);
126}
127
128static __always_inline long
129arch_atomic_long_sub_return_relaxed(long i, atomic_long_t *v)
130{
131 return arch_atomic64_sub_return_relaxed(i, v);
132}
133
134static __always_inline long
135arch_atomic_long_fetch_sub(long i, atomic_long_t *v)
136{
137 return arch_atomic64_fetch_sub(i, v);
138}
139
140static __always_inline long
141arch_atomic_long_fetch_sub_acquire(long i, atomic_long_t *v)
142{
143 return arch_atomic64_fetch_sub_acquire(i, v);
144}
145
146static __always_inline long
147arch_atomic_long_fetch_sub_release(long i, atomic_long_t *v)
148{
149 return arch_atomic64_fetch_sub_release(i, v);
150}
151
152static __always_inline long
153arch_atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v)
154{
155 return arch_atomic64_fetch_sub_relaxed(i, v);
156}
157
158static __always_inline void
159arch_atomic_long_inc(atomic_long_t *v)
160{
161 arch_atomic64_inc(v);
162}
163
164static __always_inline long
165arch_atomic_long_inc_return(atomic_long_t *v)
166{
167 return arch_atomic64_inc_return(v);
168}
169
170static __always_inline long
171arch_atomic_long_inc_return_acquire(atomic_long_t *v)
172{
173 return arch_atomic64_inc_return_acquire(v);
174}
175
176static __always_inline long
177arch_atomic_long_inc_return_release(atomic_long_t *v)
178{
179 return arch_atomic64_inc_return_release(v);
180}
181
182static __always_inline long
183arch_atomic_long_inc_return_relaxed(atomic_long_t *v)
184{
185 return arch_atomic64_inc_return_relaxed(v);
186}
187
188static __always_inline long
189arch_atomic_long_fetch_inc(atomic_long_t *v)
190{
191 return arch_atomic64_fetch_inc(v);
192}
193
194static __always_inline long
195arch_atomic_long_fetch_inc_acquire(atomic_long_t *v)
196{
197 return arch_atomic64_fetch_inc_acquire(v);
198}
199
200static __always_inline long
201arch_atomic_long_fetch_inc_release(atomic_long_t *v)
202{
203 return arch_atomic64_fetch_inc_release(v);
204}
205
206static __always_inline long
207arch_atomic_long_fetch_inc_relaxed(atomic_long_t *v)
208{
209 return arch_atomic64_fetch_inc_relaxed(v);
210}
211
212static __always_inline void
213arch_atomic_long_dec(atomic_long_t *v)
214{
215 arch_atomic64_dec(v);
216}
217
218static __always_inline long
219arch_atomic_long_dec_return(atomic_long_t *v)
220{
221 return arch_atomic64_dec_return(v);
222}
223
224static __always_inline long
225arch_atomic_long_dec_return_acquire(atomic_long_t *v)
226{
227 return arch_atomic64_dec_return_acquire(v);
228}
229
230static __always_inline long
231arch_atomic_long_dec_return_release(atomic_long_t *v)
232{
233 return arch_atomic64_dec_return_release(v);
234}
235
236static __always_inline long
237arch_atomic_long_dec_return_relaxed(atomic_long_t *v)
238{
239 return arch_atomic64_dec_return_relaxed(v);
240}
241
242static __always_inline long
243arch_atomic_long_fetch_dec(atomic_long_t *v)
244{
245 return arch_atomic64_fetch_dec(v);
246}
247
248static __always_inline long
249arch_atomic_long_fetch_dec_acquire(atomic_long_t *v)
250{
251 return arch_atomic64_fetch_dec_acquire(v);
252}
253
254static __always_inline long
255arch_atomic_long_fetch_dec_release(atomic_long_t *v)
256{
257 return arch_atomic64_fetch_dec_release(v);
258}
259
260static __always_inline long
261arch_atomic_long_fetch_dec_relaxed(atomic_long_t *v)
262{
263 return arch_atomic64_fetch_dec_relaxed(v);
264}
265
266static __always_inline void
267arch_atomic_long_and(long i, atomic_long_t *v)
268{
269 arch_atomic64_and(i, v);
270}
271
272static __always_inline long
273arch_atomic_long_fetch_and(long i, atomic_long_t *v)
274{
275 return arch_atomic64_fetch_and(i, v);
276}
277
278static __always_inline long
279arch_atomic_long_fetch_and_acquire(long i, atomic_long_t *v)
280{
281 return arch_atomic64_fetch_and_acquire(i, v);
282}
283
284static __always_inline long
285arch_atomic_long_fetch_and_release(long i, atomic_long_t *v)
286{
287 return arch_atomic64_fetch_and_release(i, v);
288}
289
290static __always_inline long
291arch_atomic_long_fetch_and_relaxed(long i, atomic_long_t *v)
292{
293 return arch_atomic64_fetch_and_relaxed(i, v);
294}
295
296static __always_inline void
297arch_atomic_long_andnot(long i, atomic_long_t *v)
298{
299 arch_atomic64_andnot(i, v);
300}
301
302static __always_inline long
303arch_atomic_long_fetch_andnot(long i, atomic_long_t *v)
304{
305 return arch_atomic64_fetch_andnot(i, v);
306}
307
308static __always_inline long
309arch_atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v)
310{
311 return arch_atomic64_fetch_andnot_acquire(i, v);
312}
313
314static __always_inline long
315arch_atomic_long_fetch_andnot_release(long i, atomic_long_t *v)
316{
317 return arch_atomic64_fetch_andnot_release(i, v);
318}
319
320static __always_inline long
321arch_atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v)
322{
323 return arch_atomic64_fetch_andnot_relaxed(i, v);
324}
325
326static __always_inline void
327arch_atomic_long_or(long i, atomic_long_t *v)
328{
329 arch_atomic64_or(i, v);
330}
331
332static __always_inline long
333arch_atomic_long_fetch_or(long i, atomic_long_t *v)
334{
335 return arch_atomic64_fetch_or(i, v);
336}
337
338static __always_inline long
339arch_atomic_long_fetch_or_acquire(long i, atomic_long_t *v)
340{
341 return arch_atomic64_fetch_or_acquire(i, v);
342}
343
344static __always_inline long
345arch_atomic_long_fetch_or_release(long i, atomic_long_t *v)
346{
347 return arch_atomic64_fetch_or_release(i, v);
348}
349
350static __always_inline long
351arch_atomic_long_fetch_or_relaxed(long i, atomic_long_t *v)
352{
353 return arch_atomic64_fetch_or_relaxed(i, v);
354}
355
356static __always_inline void
357arch_atomic_long_xor(long i, atomic_long_t *v)
358{
359 arch_atomic64_xor(i, v);
360}
361
362static __always_inline long
363arch_atomic_long_fetch_xor(long i, atomic_long_t *v)
364{
365 return arch_atomic64_fetch_xor(i, v);
366}
367
368static __always_inline long
369arch_atomic_long_fetch_xor_acquire(long i, atomic_long_t *v)
370{
371 return arch_atomic64_fetch_xor_acquire(i, v);
372}
373
374static __always_inline long
375arch_atomic_long_fetch_xor_release(long i, atomic_long_t *v)
376{
377 return arch_atomic64_fetch_xor_release(i, v);
378}
379
380static __always_inline long
381arch_atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v)
382{
383 return arch_atomic64_fetch_xor_relaxed(i, v);
384}
385
386static __always_inline long
387arch_atomic_long_xchg(atomic_long_t *v, long i)
388{
389 return arch_atomic64_xchg(v, i);
390}
391
392static __always_inline long
393arch_atomic_long_xchg_acquire(atomic_long_t *v, long i)
394{
395 return arch_atomic64_xchg_acquire(v, i);
396}
397
398static __always_inline long
399arch_atomic_long_xchg_release(atomic_long_t *v, long i)
400{
401 return arch_atomic64_xchg_release(v, i);
402}
403
404static __always_inline long
405arch_atomic_long_xchg_relaxed(atomic_long_t *v, long i)
406{
407 return arch_atomic64_xchg_relaxed(v, i);
408}
409
410static __always_inline long
411arch_atomic_long_cmpxchg(atomic_long_t *v, long old, long new)
412{
413 return arch_atomic64_cmpxchg(v, old, new);
414}
415
416static __always_inline long
417arch_atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new)
418{
419 return arch_atomic64_cmpxchg_acquire(v, old, new);
420}
421
422static __always_inline long
423arch_atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new)
424{
425 return arch_atomic64_cmpxchg_release(v, old, new);
426}
427
428static __always_inline long
429arch_atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new)
430{
431 return arch_atomic64_cmpxchg_relaxed(v, old, new);
432}
433
434static __always_inline bool
435arch_atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new)
436{
437 return arch_atomic64_try_cmpxchg(v, (s64 *)old, new);
438}
439
440static __always_inline bool
441arch_atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new)
442{
443 return arch_atomic64_try_cmpxchg_acquire(v, (s64 *)old, new);
444}
445
446static __always_inline bool
447arch_atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new)
448{
449 return arch_atomic64_try_cmpxchg_release(v, (s64 *)old, new);
450}
451
452static __always_inline bool
453arch_atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new)
454{
455 return arch_atomic64_try_cmpxchg_relaxed(v, (s64 *)old, new);
456}
457
458static __always_inline bool
459arch_atomic_long_sub_and_test(long i, atomic_long_t *v)
460{
461 return arch_atomic64_sub_and_test(i, v);
462}
463
464static __always_inline bool
465arch_atomic_long_dec_and_test(atomic_long_t *v)
466{
467 return arch_atomic64_dec_and_test(v);
468}
469
470static __always_inline bool
471arch_atomic_long_inc_and_test(atomic_long_t *v)
472{
473 return arch_atomic64_inc_and_test(v);
474}
475
476static __always_inline bool
477arch_atomic_long_add_negative(long i, atomic_long_t *v)
478{
479 return arch_atomic64_add_negative(i, v);
480}
481
482static __always_inline long
483arch_atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u)
484{
485 return arch_atomic64_fetch_add_unless(v, a, u);
486}
487
488static __always_inline bool
489arch_atomic_long_add_unless(atomic_long_t *v, long a, long u)
490{
491 return arch_atomic64_add_unless(v, a, u);
492}
493
494static __always_inline bool
495arch_atomic_long_inc_not_zero(atomic_long_t *v)
496{
497 return arch_atomic64_inc_not_zero(v);
498}
499
500static __always_inline bool
501arch_atomic_long_inc_unless_negative(atomic_long_t *v)
502{
503 return arch_atomic64_inc_unless_negative(v);
504}
505
506static __always_inline bool
507arch_atomic_long_dec_unless_positive(atomic_long_t *v)
508{
509 return arch_atomic64_dec_unless_positive(v);
510}
511
512static __always_inline long
513arch_atomic_long_dec_if_positive(atomic_long_t *v)
514{
515 return arch_atomic64_dec_if_positive(v);
516}
517
518#else
519
520static __always_inline long
521arch_atomic_long_read(const atomic_long_t *v)
522{
523 return arch_atomic_read(v);
524}
525
526static __always_inline long
527arch_atomic_long_read_acquire(const atomic_long_t *v)
528{
529 return arch_atomic_read_acquire(v);
530}
531
532static __always_inline void
533arch_atomic_long_set(atomic_long_t *v, long i)
534{
535 arch_atomic_set(v, i);
536}
537
538static __always_inline void
539arch_atomic_long_set_release(atomic_long_t *v, long i)
540{
541 arch_atomic_set_release(v, i);
542}
543
544static __always_inline void
545arch_atomic_long_add(long i, atomic_long_t *v)
546{
547 arch_atomic_add(i, v);
548}
549
550static __always_inline long
551arch_atomic_long_add_return(long i, atomic_long_t *v)
552{
553 return arch_atomic_add_return(i, v);
554}
555
556static __always_inline long
557arch_atomic_long_add_return_acquire(long i, atomic_long_t *v)
558{
559 return arch_atomic_add_return_acquire(i, v);
560}
561
562static __always_inline long
563arch_atomic_long_add_return_release(long i, atomic_long_t *v)
564{
565 return arch_atomic_add_return_release(i, v);
566}
567
568static __always_inline long
569arch_atomic_long_add_return_relaxed(long i, atomic_long_t *v)
570{
571 return arch_atomic_add_return_relaxed(i, v);
572}
573
574static __always_inline long
575arch_atomic_long_fetch_add(long i, atomic_long_t *v)
576{
577 return arch_atomic_fetch_add(i, v);
578}
579
580static __always_inline long
581arch_atomic_long_fetch_add_acquire(long i, atomic_long_t *v)
582{
583 return arch_atomic_fetch_add_acquire(i, v);
584}
585
586static __always_inline long
587arch_atomic_long_fetch_add_release(long i, atomic_long_t *v)
588{
589 return arch_atomic_fetch_add_release(i, v);
590}
591
592static __always_inline long
593arch_atomic_long_fetch_add_relaxed(long i, atomic_long_t *v)
594{
595 return arch_atomic_fetch_add_relaxed(i, v);
596}
597
598static __always_inline void
599arch_atomic_long_sub(long i, atomic_long_t *v)
600{
601 arch_atomic_sub(i, v);
602}
603
604static __always_inline long
605arch_atomic_long_sub_return(long i, atomic_long_t *v)
606{
607 return arch_atomic_sub_return(i, v);
608}
609
610static __always_inline long
611arch_atomic_long_sub_return_acquire(long i, atomic_long_t *v)
612{
613 return arch_atomic_sub_return_acquire(i, v);
614}
615
616static __always_inline long
617arch_atomic_long_sub_return_release(long i, atomic_long_t *v)
618{
619 return arch_atomic_sub_return_release(i, v);
620}
621
622static __always_inline long
623arch_atomic_long_sub_return_relaxed(long i, atomic_long_t *v)
624{
625 return arch_atomic_sub_return_relaxed(i, v);
626}
627
628static __always_inline long
629arch_atomic_long_fetch_sub(long i, atomic_long_t *v)
630{
631 return arch_atomic_fetch_sub(i, v);
632}
633
634static __always_inline long
635arch_atomic_long_fetch_sub_acquire(long i, atomic_long_t *v)
636{
637 return arch_atomic_fetch_sub_acquire(i, v);
638}
639
640static __always_inline long
641arch_atomic_long_fetch_sub_release(long i, atomic_long_t *v)
642{
643 return arch_atomic_fetch_sub_release(i, v);
644}
645
646static __always_inline long
647arch_atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v)
648{
649 return arch_atomic_fetch_sub_relaxed(i, v);
650}
651
652static __always_inline void
653arch_atomic_long_inc(atomic_long_t *v)
654{
655 arch_atomic_inc(v);
656}
657
658static __always_inline long
659arch_atomic_long_inc_return(atomic_long_t *v)
660{
661 return arch_atomic_inc_return(v);
662}
663
664static __always_inline long
665arch_atomic_long_inc_return_acquire(atomic_long_t *v)
666{
667 return arch_atomic_inc_return_acquire(v);
668}
669
670static __always_inline long
671arch_atomic_long_inc_return_release(atomic_long_t *v)
672{
673 return arch_atomic_inc_return_release(v);
674}
675
676static __always_inline long
677arch_atomic_long_inc_return_relaxed(atomic_long_t *v)
678{
679 return arch_atomic_inc_return_relaxed(v);
680}
681
682static __always_inline long
683arch_atomic_long_fetch_inc(atomic_long_t *v)
684{
685 return arch_atomic_fetch_inc(v);
686}
687
688static __always_inline long
689arch_atomic_long_fetch_inc_acquire(atomic_long_t *v)
690{
691 return arch_atomic_fetch_inc_acquire(v);
692}
693
694static __always_inline long
695arch_atomic_long_fetch_inc_release(atomic_long_t *v)
696{
697 return arch_atomic_fetch_inc_release(v);
698}
699
700static __always_inline long
701arch_atomic_long_fetch_inc_relaxed(atomic_long_t *v)
702{
703 return arch_atomic_fetch_inc_relaxed(v);
704}
705
706static __always_inline void
707arch_atomic_long_dec(atomic_long_t *v)
708{
709 arch_atomic_dec(v);
710}
711
712static __always_inline long
713arch_atomic_long_dec_return(atomic_long_t *v)
714{
715 return arch_atomic_dec_return(v);
716}
717
718static __always_inline long
719arch_atomic_long_dec_return_acquire(atomic_long_t *v)
720{
721 return arch_atomic_dec_return_acquire(v);
722}
723
724static __always_inline long
725arch_atomic_long_dec_return_release(atomic_long_t *v)
726{
727 return arch_atomic_dec_return_release(v);
728}
729
730static __always_inline long
731arch_atomic_long_dec_return_relaxed(atomic_long_t *v)
732{
733 return arch_atomic_dec_return_relaxed(v);
734}
735
736static __always_inline long
737arch_atomic_long_fetch_dec(atomic_long_t *v)
738{
739 return arch_atomic_fetch_dec(v);
740}
741
742static __always_inline long
743arch_atomic_long_fetch_dec_acquire(atomic_long_t *v)
744{
745 return arch_atomic_fetch_dec_acquire(v);
746}
747
748static __always_inline long
749arch_atomic_long_fetch_dec_release(atomic_long_t *v)
750{
751 return arch_atomic_fetch_dec_release(v);
752}
753
754static __always_inline long
755arch_atomic_long_fetch_dec_relaxed(atomic_long_t *v)
756{
757 return arch_atomic_fetch_dec_relaxed(v);
758}
759
760static __always_inline void
761arch_atomic_long_and(long i, atomic_long_t *v)
762{
763 arch_atomic_and(i, v);
764}
765
766static __always_inline long
767arch_atomic_long_fetch_and(long i, atomic_long_t *v)
768{
769 return arch_atomic_fetch_and(i, v);
770}
771
772static __always_inline long
773arch_atomic_long_fetch_and_acquire(long i, atomic_long_t *v)
774{
775 return arch_atomic_fetch_and_acquire(i, v);
776}
777
778static __always_inline long
779arch_atomic_long_fetch_and_release(long i, atomic_long_t *v)
780{
781 return arch_atomic_fetch_and_release(i, v);
782}
783
784static __always_inline long
785arch_atomic_long_fetch_and_relaxed(long i, atomic_long_t *v)
786{
787 return arch_atomic_fetch_and_relaxed(i, v);
788}
789
790static __always_inline void
791arch_atomic_long_andnot(long i, atomic_long_t *v)
792{
793 arch_atomic_andnot(i, v);
794}
795
796static __always_inline long
797arch_atomic_long_fetch_andnot(long i, atomic_long_t *v)
798{
799 return arch_atomic_fetch_andnot(i, v);
800}
801
802static __always_inline long
803arch_atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v)
804{
805 return arch_atomic_fetch_andnot_acquire(i, v);
806}
807
808static __always_inline long
809arch_atomic_long_fetch_andnot_release(long i, atomic_long_t *v)
810{
811 return arch_atomic_fetch_andnot_release(i, v);
812}
813
814static __always_inline long
815arch_atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v)
816{
817 return arch_atomic_fetch_andnot_relaxed(i, v);
818}
819
820static __always_inline void
821arch_atomic_long_or(long i, atomic_long_t *v)
822{
823 arch_atomic_or(i, v);
824}
825
826static __always_inline long
827arch_atomic_long_fetch_or(long i, atomic_long_t *v)
828{
829 return arch_atomic_fetch_or(i, v);
830}
831
832static __always_inline long
833arch_atomic_long_fetch_or_acquire(long i, atomic_long_t *v)
834{
835 return arch_atomic_fetch_or_acquire(i, v);
836}
837
838static __always_inline long
839arch_atomic_long_fetch_or_release(long i, atomic_long_t *v)
840{
841 return arch_atomic_fetch_or_release(i, v);
842}
843
844static __always_inline long
845arch_atomic_long_fetch_or_relaxed(long i, atomic_long_t *v)
846{
847 return arch_atomic_fetch_or_relaxed(i, v);
848}
849
850static __always_inline void
851arch_atomic_long_xor(long i, atomic_long_t *v)
852{
853 arch_atomic_xor(i, v);
854}
855
856static __always_inline long
857arch_atomic_long_fetch_xor(long i, atomic_long_t *v)
858{
859 return arch_atomic_fetch_xor(i, v);
860}
861
862static __always_inline long
863arch_atomic_long_fetch_xor_acquire(long i, atomic_long_t *v)
864{
865 return arch_atomic_fetch_xor_acquire(i, v);
866}
867
868static __always_inline long
869arch_atomic_long_fetch_xor_release(long i, atomic_long_t *v)
870{
871 return arch_atomic_fetch_xor_release(i, v);
872}
873
874static __always_inline long
875arch_atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v)
876{
877 return arch_atomic_fetch_xor_relaxed(i, v);
878}
879
880static __always_inline long
881arch_atomic_long_xchg(atomic_long_t *v, long i)
882{
883 return arch_atomic_xchg(v, i);
884}
885
886static __always_inline long
887arch_atomic_long_xchg_acquire(atomic_long_t *v, long i)
888{
889 return arch_atomic_xchg_acquire(v, i);
890}
891
892static __always_inline long
893arch_atomic_long_xchg_release(atomic_long_t *v, long i)
894{
895 return arch_atomic_xchg_release(v, i);
896}
897
898static __always_inline long
899arch_atomic_long_xchg_relaxed(atomic_long_t *v, long i)
900{
901 return arch_atomic_xchg_relaxed(v, i);
902}
903
904static __always_inline long
905arch_atomic_long_cmpxchg(atomic_long_t *v, long old, long new)
906{
907 return arch_atomic_cmpxchg(v, old, new);
908}
909
910static __always_inline long
911arch_atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new)
912{
913 return arch_atomic_cmpxchg_acquire(v, old, new);
914}
915
916static __always_inline long
917arch_atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new)
918{
919 return arch_atomic_cmpxchg_release(v, old, new);
920}
921
922static __always_inline long
923arch_atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new)
924{
925 return arch_atomic_cmpxchg_relaxed(v, old, new);
926}
927
928static __always_inline bool
929arch_atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new)
930{
931 return arch_atomic_try_cmpxchg(v, (int *)old, new);
932}
933
934static __always_inline bool
935arch_atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new)
936{
937 return arch_atomic_try_cmpxchg_acquire(v, (int *)old, new);
938}
939
940static __always_inline bool
941arch_atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new)
942{
943 return arch_atomic_try_cmpxchg_release(v, (int *)old, new);
944}
945
946static __always_inline bool
947arch_atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new)
948{
949 return arch_atomic_try_cmpxchg_relaxed(v, (int *)old, new);
950}
951
952static __always_inline bool
953arch_atomic_long_sub_and_test(long i, atomic_long_t *v)
954{
955 return arch_atomic_sub_and_test(i, v);
956}
957
958static __always_inline bool
959arch_atomic_long_dec_and_test(atomic_long_t *v)
960{
961 return arch_atomic_dec_and_test(v);
962}
963
964static __always_inline bool
965arch_atomic_long_inc_and_test(atomic_long_t *v)
966{
967 return arch_atomic_inc_and_test(v);
968}
969
970static __always_inline bool
971arch_atomic_long_add_negative(long i, atomic_long_t *v)
972{
973 return arch_atomic_add_negative(i, v);
974}
975
976static __always_inline long
977arch_atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u)
978{
979 return arch_atomic_fetch_add_unless(v, a, u);
980}
981
982static __always_inline bool
983arch_atomic_long_add_unless(atomic_long_t *v, long a, long u)
984{
985 return arch_atomic_add_unless(v, a, u);
986}
987
988static __always_inline bool
989arch_atomic_long_inc_not_zero(atomic_long_t *v)
990{
991 return arch_atomic_inc_not_zero(v);
992}
993
994static __always_inline bool
995arch_atomic_long_inc_unless_negative(atomic_long_t *v)
996{
997 return arch_atomic_inc_unless_negative(v);
998}
999
1000static __always_inline bool
1001arch_atomic_long_dec_unless_positive(atomic_long_t *v)
1002{
1003 return arch_atomic_dec_unless_positive(v);
1004}
1005
1006static __always_inline long
1007arch_atomic_long_dec_if_positive(atomic_long_t *v)
1008{
1009 return arch_atomic_dec_if_positive(v);
1010}
1011
1012#endif
1013#endif
1014
1015