xref: /linux/rust/helpers/atomic.c (revision fdd7c7e0d2ab3987882c570612d4622f437292c7)
1*fdd7c7e0SBoqun Feng // SPDX-License-Identifier: GPL-2.0
2*fdd7c7e0SBoqun Feng 
3*fdd7c7e0SBoqun Feng // Generated by scripts/atomic/gen-rust-atomic-helpers.sh
4*fdd7c7e0SBoqun Feng // DO NOT MODIFY THIS FILE DIRECTLY
5*fdd7c7e0SBoqun Feng 
6*fdd7c7e0SBoqun Feng /*
7*fdd7c7e0SBoqun Feng  * This file provides helpers for the various atomic functions for Rust.
8*fdd7c7e0SBoqun Feng  */
9*fdd7c7e0SBoqun Feng #ifndef _RUST_ATOMIC_API_H
10*fdd7c7e0SBoqun Feng #define _RUST_ATOMIC_API_H
11*fdd7c7e0SBoqun Feng 
12*fdd7c7e0SBoqun Feng #include <linux/atomic.h>
13*fdd7c7e0SBoqun Feng 
14*fdd7c7e0SBoqun Feng // TODO: Remove this after INLINE_HELPERS support is added.
15*fdd7c7e0SBoqun Feng #ifndef __rust_helper
16*fdd7c7e0SBoqun Feng #define __rust_helper
17*fdd7c7e0SBoqun Feng #endif
18*fdd7c7e0SBoqun Feng 
19*fdd7c7e0SBoqun Feng __rust_helper int
20*fdd7c7e0SBoqun Feng rust_helper_atomic_read(const atomic_t *v)
21*fdd7c7e0SBoqun Feng {
22*fdd7c7e0SBoqun Feng 	return atomic_read(v);
23*fdd7c7e0SBoqun Feng }
24*fdd7c7e0SBoqun Feng 
25*fdd7c7e0SBoqun Feng __rust_helper int
26*fdd7c7e0SBoqun Feng rust_helper_atomic_read_acquire(const atomic_t *v)
27*fdd7c7e0SBoqun Feng {
28*fdd7c7e0SBoqun Feng 	return atomic_read_acquire(v);
29*fdd7c7e0SBoqun Feng }
30*fdd7c7e0SBoqun Feng 
31*fdd7c7e0SBoqun Feng __rust_helper void
32*fdd7c7e0SBoqun Feng rust_helper_atomic_set(atomic_t *v, int i)
33*fdd7c7e0SBoqun Feng {
34*fdd7c7e0SBoqun Feng 	atomic_set(v, i);
35*fdd7c7e0SBoqun Feng }
36*fdd7c7e0SBoqun Feng 
37*fdd7c7e0SBoqun Feng __rust_helper void
38*fdd7c7e0SBoqun Feng rust_helper_atomic_set_release(atomic_t *v, int i)
39*fdd7c7e0SBoqun Feng {
40*fdd7c7e0SBoqun Feng 	atomic_set_release(v, i);
41*fdd7c7e0SBoqun Feng }
42*fdd7c7e0SBoqun Feng 
43*fdd7c7e0SBoqun Feng __rust_helper void
44*fdd7c7e0SBoqun Feng rust_helper_atomic_add(int i, atomic_t *v)
45*fdd7c7e0SBoqun Feng {
46*fdd7c7e0SBoqun Feng 	atomic_add(i, v);
47*fdd7c7e0SBoqun Feng }
48*fdd7c7e0SBoqun Feng 
49*fdd7c7e0SBoqun Feng __rust_helper int
50*fdd7c7e0SBoqun Feng rust_helper_atomic_add_return(int i, atomic_t *v)
51*fdd7c7e0SBoqun Feng {
52*fdd7c7e0SBoqun Feng 	return atomic_add_return(i, v);
53*fdd7c7e0SBoqun Feng }
54*fdd7c7e0SBoqun Feng 
55*fdd7c7e0SBoqun Feng __rust_helper int
56*fdd7c7e0SBoqun Feng rust_helper_atomic_add_return_acquire(int i, atomic_t *v)
57*fdd7c7e0SBoqun Feng {
58*fdd7c7e0SBoqun Feng 	return atomic_add_return_acquire(i, v);
59*fdd7c7e0SBoqun Feng }
60*fdd7c7e0SBoqun Feng 
61*fdd7c7e0SBoqun Feng __rust_helper int
62*fdd7c7e0SBoqun Feng rust_helper_atomic_add_return_release(int i, atomic_t *v)
63*fdd7c7e0SBoqun Feng {
64*fdd7c7e0SBoqun Feng 	return atomic_add_return_release(i, v);
65*fdd7c7e0SBoqun Feng }
66*fdd7c7e0SBoqun Feng 
67*fdd7c7e0SBoqun Feng __rust_helper int
68*fdd7c7e0SBoqun Feng rust_helper_atomic_add_return_relaxed(int i, atomic_t *v)
69*fdd7c7e0SBoqun Feng {
70*fdd7c7e0SBoqun Feng 	return atomic_add_return_relaxed(i, v);
71*fdd7c7e0SBoqun Feng }
72*fdd7c7e0SBoqun Feng 
73*fdd7c7e0SBoqun Feng __rust_helper int
74*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_add(int i, atomic_t *v)
75*fdd7c7e0SBoqun Feng {
76*fdd7c7e0SBoqun Feng 	return atomic_fetch_add(i, v);
77*fdd7c7e0SBoqun Feng }
78*fdd7c7e0SBoqun Feng 
79*fdd7c7e0SBoqun Feng __rust_helper int
80*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_add_acquire(int i, atomic_t *v)
81*fdd7c7e0SBoqun Feng {
82*fdd7c7e0SBoqun Feng 	return atomic_fetch_add_acquire(i, v);
83*fdd7c7e0SBoqun Feng }
84*fdd7c7e0SBoqun Feng 
85*fdd7c7e0SBoqun Feng __rust_helper int
86*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_add_release(int i, atomic_t *v)
87*fdd7c7e0SBoqun Feng {
88*fdd7c7e0SBoqun Feng 	return atomic_fetch_add_release(i, v);
89*fdd7c7e0SBoqun Feng }
90*fdd7c7e0SBoqun Feng 
91*fdd7c7e0SBoqun Feng __rust_helper int
92*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_add_relaxed(int i, atomic_t *v)
93*fdd7c7e0SBoqun Feng {
94*fdd7c7e0SBoqun Feng 	return atomic_fetch_add_relaxed(i, v);
95*fdd7c7e0SBoqun Feng }
96*fdd7c7e0SBoqun Feng 
97*fdd7c7e0SBoqun Feng __rust_helper void
98*fdd7c7e0SBoqun Feng rust_helper_atomic_sub(int i, atomic_t *v)
99*fdd7c7e0SBoqun Feng {
100*fdd7c7e0SBoqun Feng 	atomic_sub(i, v);
101*fdd7c7e0SBoqun Feng }
102*fdd7c7e0SBoqun Feng 
103*fdd7c7e0SBoqun Feng __rust_helper int
104*fdd7c7e0SBoqun Feng rust_helper_atomic_sub_return(int i, atomic_t *v)
105*fdd7c7e0SBoqun Feng {
106*fdd7c7e0SBoqun Feng 	return atomic_sub_return(i, v);
107*fdd7c7e0SBoqun Feng }
108*fdd7c7e0SBoqun Feng 
109*fdd7c7e0SBoqun Feng __rust_helper int
110*fdd7c7e0SBoqun Feng rust_helper_atomic_sub_return_acquire(int i, atomic_t *v)
111*fdd7c7e0SBoqun Feng {
112*fdd7c7e0SBoqun Feng 	return atomic_sub_return_acquire(i, v);
113*fdd7c7e0SBoqun Feng }
114*fdd7c7e0SBoqun Feng 
115*fdd7c7e0SBoqun Feng __rust_helper int
116*fdd7c7e0SBoqun Feng rust_helper_atomic_sub_return_release(int i, atomic_t *v)
117*fdd7c7e0SBoqun Feng {
118*fdd7c7e0SBoqun Feng 	return atomic_sub_return_release(i, v);
119*fdd7c7e0SBoqun Feng }
120*fdd7c7e0SBoqun Feng 
121*fdd7c7e0SBoqun Feng __rust_helper int
122*fdd7c7e0SBoqun Feng rust_helper_atomic_sub_return_relaxed(int i, atomic_t *v)
123*fdd7c7e0SBoqun Feng {
124*fdd7c7e0SBoqun Feng 	return atomic_sub_return_relaxed(i, v);
125*fdd7c7e0SBoqun Feng }
126*fdd7c7e0SBoqun Feng 
127*fdd7c7e0SBoqun Feng __rust_helper int
128*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_sub(int i, atomic_t *v)
129*fdd7c7e0SBoqun Feng {
130*fdd7c7e0SBoqun Feng 	return atomic_fetch_sub(i, v);
131*fdd7c7e0SBoqun Feng }
132*fdd7c7e0SBoqun Feng 
133*fdd7c7e0SBoqun Feng __rust_helper int
134*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_sub_acquire(int i, atomic_t *v)
135*fdd7c7e0SBoqun Feng {
136*fdd7c7e0SBoqun Feng 	return atomic_fetch_sub_acquire(i, v);
137*fdd7c7e0SBoqun Feng }
138*fdd7c7e0SBoqun Feng 
139*fdd7c7e0SBoqun Feng __rust_helper int
140*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_sub_release(int i, atomic_t *v)
141*fdd7c7e0SBoqun Feng {
142*fdd7c7e0SBoqun Feng 	return atomic_fetch_sub_release(i, v);
143*fdd7c7e0SBoqun Feng }
144*fdd7c7e0SBoqun Feng 
145*fdd7c7e0SBoqun Feng __rust_helper int
146*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_sub_relaxed(int i, atomic_t *v)
147*fdd7c7e0SBoqun Feng {
148*fdd7c7e0SBoqun Feng 	return atomic_fetch_sub_relaxed(i, v);
149*fdd7c7e0SBoqun Feng }
150*fdd7c7e0SBoqun Feng 
151*fdd7c7e0SBoqun Feng __rust_helper void
152*fdd7c7e0SBoqun Feng rust_helper_atomic_inc(atomic_t *v)
153*fdd7c7e0SBoqun Feng {
154*fdd7c7e0SBoqun Feng 	atomic_inc(v);
155*fdd7c7e0SBoqun Feng }
156*fdd7c7e0SBoqun Feng 
157*fdd7c7e0SBoqun Feng __rust_helper int
158*fdd7c7e0SBoqun Feng rust_helper_atomic_inc_return(atomic_t *v)
159*fdd7c7e0SBoqun Feng {
160*fdd7c7e0SBoqun Feng 	return atomic_inc_return(v);
161*fdd7c7e0SBoqun Feng }
162*fdd7c7e0SBoqun Feng 
163*fdd7c7e0SBoqun Feng __rust_helper int
164*fdd7c7e0SBoqun Feng rust_helper_atomic_inc_return_acquire(atomic_t *v)
165*fdd7c7e0SBoqun Feng {
166*fdd7c7e0SBoqun Feng 	return atomic_inc_return_acquire(v);
167*fdd7c7e0SBoqun Feng }
168*fdd7c7e0SBoqun Feng 
169*fdd7c7e0SBoqun Feng __rust_helper int
170*fdd7c7e0SBoqun Feng rust_helper_atomic_inc_return_release(atomic_t *v)
171*fdd7c7e0SBoqun Feng {
172*fdd7c7e0SBoqun Feng 	return atomic_inc_return_release(v);
173*fdd7c7e0SBoqun Feng }
174*fdd7c7e0SBoqun Feng 
175*fdd7c7e0SBoqun Feng __rust_helper int
176*fdd7c7e0SBoqun Feng rust_helper_atomic_inc_return_relaxed(atomic_t *v)
177*fdd7c7e0SBoqun Feng {
178*fdd7c7e0SBoqun Feng 	return atomic_inc_return_relaxed(v);
179*fdd7c7e0SBoqun Feng }
180*fdd7c7e0SBoqun Feng 
181*fdd7c7e0SBoqun Feng __rust_helper int
182*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_inc(atomic_t *v)
183*fdd7c7e0SBoqun Feng {
184*fdd7c7e0SBoqun Feng 	return atomic_fetch_inc(v);
185*fdd7c7e0SBoqun Feng }
186*fdd7c7e0SBoqun Feng 
187*fdd7c7e0SBoqun Feng __rust_helper int
188*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_inc_acquire(atomic_t *v)
189*fdd7c7e0SBoqun Feng {
190*fdd7c7e0SBoqun Feng 	return atomic_fetch_inc_acquire(v);
191*fdd7c7e0SBoqun Feng }
192*fdd7c7e0SBoqun Feng 
193*fdd7c7e0SBoqun Feng __rust_helper int
194*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_inc_release(atomic_t *v)
195*fdd7c7e0SBoqun Feng {
196*fdd7c7e0SBoqun Feng 	return atomic_fetch_inc_release(v);
197*fdd7c7e0SBoqun Feng }
198*fdd7c7e0SBoqun Feng 
199*fdd7c7e0SBoqun Feng __rust_helper int
200*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_inc_relaxed(atomic_t *v)
201*fdd7c7e0SBoqun Feng {
202*fdd7c7e0SBoqun Feng 	return atomic_fetch_inc_relaxed(v);
203*fdd7c7e0SBoqun Feng }
204*fdd7c7e0SBoqun Feng 
205*fdd7c7e0SBoqun Feng __rust_helper void
206*fdd7c7e0SBoqun Feng rust_helper_atomic_dec(atomic_t *v)
207*fdd7c7e0SBoqun Feng {
208*fdd7c7e0SBoqun Feng 	atomic_dec(v);
209*fdd7c7e0SBoqun Feng }
210*fdd7c7e0SBoqun Feng 
211*fdd7c7e0SBoqun Feng __rust_helper int
212*fdd7c7e0SBoqun Feng rust_helper_atomic_dec_return(atomic_t *v)
213*fdd7c7e0SBoqun Feng {
214*fdd7c7e0SBoqun Feng 	return atomic_dec_return(v);
215*fdd7c7e0SBoqun Feng }
216*fdd7c7e0SBoqun Feng 
217*fdd7c7e0SBoqun Feng __rust_helper int
218*fdd7c7e0SBoqun Feng rust_helper_atomic_dec_return_acquire(atomic_t *v)
219*fdd7c7e0SBoqun Feng {
220*fdd7c7e0SBoqun Feng 	return atomic_dec_return_acquire(v);
221*fdd7c7e0SBoqun Feng }
222*fdd7c7e0SBoqun Feng 
223*fdd7c7e0SBoqun Feng __rust_helper int
224*fdd7c7e0SBoqun Feng rust_helper_atomic_dec_return_release(atomic_t *v)
225*fdd7c7e0SBoqun Feng {
226*fdd7c7e0SBoqun Feng 	return atomic_dec_return_release(v);
227*fdd7c7e0SBoqun Feng }
228*fdd7c7e0SBoqun Feng 
229*fdd7c7e0SBoqun Feng __rust_helper int
230*fdd7c7e0SBoqun Feng rust_helper_atomic_dec_return_relaxed(atomic_t *v)
231*fdd7c7e0SBoqun Feng {
232*fdd7c7e0SBoqun Feng 	return atomic_dec_return_relaxed(v);
233*fdd7c7e0SBoqun Feng }
234*fdd7c7e0SBoqun Feng 
235*fdd7c7e0SBoqun Feng __rust_helper int
236*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_dec(atomic_t *v)
237*fdd7c7e0SBoqun Feng {
238*fdd7c7e0SBoqun Feng 	return atomic_fetch_dec(v);
239*fdd7c7e0SBoqun Feng }
240*fdd7c7e0SBoqun Feng 
241*fdd7c7e0SBoqun Feng __rust_helper int
242*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_dec_acquire(atomic_t *v)
243*fdd7c7e0SBoqun Feng {
244*fdd7c7e0SBoqun Feng 	return atomic_fetch_dec_acquire(v);
245*fdd7c7e0SBoqun Feng }
246*fdd7c7e0SBoqun Feng 
247*fdd7c7e0SBoqun Feng __rust_helper int
248*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_dec_release(atomic_t *v)
249*fdd7c7e0SBoqun Feng {
250*fdd7c7e0SBoqun Feng 	return atomic_fetch_dec_release(v);
251*fdd7c7e0SBoqun Feng }
252*fdd7c7e0SBoqun Feng 
253*fdd7c7e0SBoqun Feng __rust_helper int
254*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_dec_relaxed(atomic_t *v)
255*fdd7c7e0SBoqun Feng {
256*fdd7c7e0SBoqun Feng 	return atomic_fetch_dec_relaxed(v);
257*fdd7c7e0SBoqun Feng }
258*fdd7c7e0SBoqun Feng 
259*fdd7c7e0SBoqun Feng __rust_helper void
260*fdd7c7e0SBoqun Feng rust_helper_atomic_and(int i, atomic_t *v)
261*fdd7c7e0SBoqun Feng {
262*fdd7c7e0SBoqun Feng 	atomic_and(i, v);
263*fdd7c7e0SBoqun Feng }
264*fdd7c7e0SBoqun Feng 
265*fdd7c7e0SBoqun Feng __rust_helper int
266*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_and(int i, atomic_t *v)
267*fdd7c7e0SBoqun Feng {
268*fdd7c7e0SBoqun Feng 	return atomic_fetch_and(i, v);
269*fdd7c7e0SBoqun Feng }
270*fdd7c7e0SBoqun Feng 
271*fdd7c7e0SBoqun Feng __rust_helper int
272*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_and_acquire(int i, atomic_t *v)
273*fdd7c7e0SBoqun Feng {
274*fdd7c7e0SBoqun Feng 	return atomic_fetch_and_acquire(i, v);
275*fdd7c7e0SBoqun Feng }
276*fdd7c7e0SBoqun Feng 
277*fdd7c7e0SBoqun Feng __rust_helper int
278*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_and_release(int i, atomic_t *v)
279*fdd7c7e0SBoqun Feng {
280*fdd7c7e0SBoqun Feng 	return atomic_fetch_and_release(i, v);
281*fdd7c7e0SBoqun Feng }
282*fdd7c7e0SBoqun Feng 
283*fdd7c7e0SBoqun Feng __rust_helper int
284*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_and_relaxed(int i, atomic_t *v)
285*fdd7c7e0SBoqun Feng {
286*fdd7c7e0SBoqun Feng 	return atomic_fetch_and_relaxed(i, v);
287*fdd7c7e0SBoqun Feng }
288*fdd7c7e0SBoqun Feng 
289*fdd7c7e0SBoqun Feng __rust_helper void
290*fdd7c7e0SBoqun Feng rust_helper_atomic_andnot(int i, atomic_t *v)
291*fdd7c7e0SBoqun Feng {
292*fdd7c7e0SBoqun Feng 	atomic_andnot(i, v);
293*fdd7c7e0SBoqun Feng }
294*fdd7c7e0SBoqun Feng 
295*fdd7c7e0SBoqun Feng __rust_helper int
296*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_andnot(int i, atomic_t *v)
297*fdd7c7e0SBoqun Feng {
298*fdd7c7e0SBoqun Feng 	return atomic_fetch_andnot(i, v);
299*fdd7c7e0SBoqun Feng }
300*fdd7c7e0SBoqun Feng 
301*fdd7c7e0SBoqun Feng __rust_helper int
302*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_andnot_acquire(int i, atomic_t *v)
303*fdd7c7e0SBoqun Feng {
304*fdd7c7e0SBoqun Feng 	return atomic_fetch_andnot_acquire(i, v);
305*fdd7c7e0SBoqun Feng }
306*fdd7c7e0SBoqun Feng 
307*fdd7c7e0SBoqun Feng __rust_helper int
308*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_andnot_release(int i, atomic_t *v)
309*fdd7c7e0SBoqun Feng {
310*fdd7c7e0SBoqun Feng 	return atomic_fetch_andnot_release(i, v);
311*fdd7c7e0SBoqun Feng }
312*fdd7c7e0SBoqun Feng 
313*fdd7c7e0SBoqun Feng __rust_helper int
314*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_andnot_relaxed(int i, atomic_t *v)
315*fdd7c7e0SBoqun Feng {
316*fdd7c7e0SBoqun Feng 	return atomic_fetch_andnot_relaxed(i, v);
317*fdd7c7e0SBoqun Feng }
318*fdd7c7e0SBoqun Feng 
319*fdd7c7e0SBoqun Feng __rust_helper void
320*fdd7c7e0SBoqun Feng rust_helper_atomic_or(int i, atomic_t *v)
321*fdd7c7e0SBoqun Feng {
322*fdd7c7e0SBoqun Feng 	atomic_or(i, v);
323*fdd7c7e0SBoqun Feng }
324*fdd7c7e0SBoqun Feng 
325*fdd7c7e0SBoqun Feng __rust_helper int
326*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_or(int i, atomic_t *v)
327*fdd7c7e0SBoqun Feng {
328*fdd7c7e0SBoqun Feng 	return atomic_fetch_or(i, v);
329*fdd7c7e0SBoqun Feng }
330*fdd7c7e0SBoqun Feng 
331*fdd7c7e0SBoqun Feng __rust_helper int
332*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_or_acquire(int i, atomic_t *v)
333*fdd7c7e0SBoqun Feng {
334*fdd7c7e0SBoqun Feng 	return atomic_fetch_or_acquire(i, v);
335*fdd7c7e0SBoqun Feng }
336*fdd7c7e0SBoqun Feng 
337*fdd7c7e0SBoqun Feng __rust_helper int
338*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_or_release(int i, atomic_t *v)
339*fdd7c7e0SBoqun Feng {
340*fdd7c7e0SBoqun Feng 	return atomic_fetch_or_release(i, v);
341*fdd7c7e0SBoqun Feng }
342*fdd7c7e0SBoqun Feng 
343*fdd7c7e0SBoqun Feng __rust_helper int
344*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_or_relaxed(int i, atomic_t *v)
345*fdd7c7e0SBoqun Feng {
346*fdd7c7e0SBoqun Feng 	return atomic_fetch_or_relaxed(i, v);
347*fdd7c7e0SBoqun Feng }
348*fdd7c7e0SBoqun Feng 
349*fdd7c7e0SBoqun Feng __rust_helper void
350*fdd7c7e0SBoqun Feng rust_helper_atomic_xor(int i, atomic_t *v)
351*fdd7c7e0SBoqun Feng {
352*fdd7c7e0SBoqun Feng 	atomic_xor(i, v);
353*fdd7c7e0SBoqun Feng }
354*fdd7c7e0SBoqun Feng 
355*fdd7c7e0SBoqun Feng __rust_helper int
356*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_xor(int i, atomic_t *v)
357*fdd7c7e0SBoqun Feng {
358*fdd7c7e0SBoqun Feng 	return atomic_fetch_xor(i, v);
359*fdd7c7e0SBoqun Feng }
360*fdd7c7e0SBoqun Feng 
361*fdd7c7e0SBoqun Feng __rust_helper int
362*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_xor_acquire(int i, atomic_t *v)
363*fdd7c7e0SBoqun Feng {
364*fdd7c7e0SBoqun Feng 	return atomic_fetch_xor_acquire(i, v);
365*fdd7c7e0SBoqun Feng }
366*fdd7c7e0SBoqun Feng 
367*fdd7c7e0SBoqun Feng __rust_helper int
368*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_xor_release(int i, atomic_t *v)
369*fdd7c7e0SBoqun Feng {
370*fdd7c7e0SBoqun Feng 	return atomic_fetch_xor_release(i, v);
371*fdd7c7e0SBoqun Feng }
372*fdd7c7e0SBoqun Feng 
373*fdd7c7e0SBoqun Feng __rust_helper int
374*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_xor_relaxed(int i, atomic_t *v)
375*fdd7c7e0SBoqun Feng {
376*fdd7c7e0SBoqun Feng 	return atomic_fetch_xor_relaxed(i, v);
377*fdd7c7e0SBoqun Feng }
378*fdd7c7e0SBoqun Feng 
379*fdd7c7e0SBoqun Feng __rust_helper int
380*fdd7c7e0SBoqun Feng rust_helper_atomic_xchg(atomic_t *v, int new)
381*fdd7c7e0SBoqun Feng {
382*fdd7c7e0SBoqun Feng 	return atomic_xchg(v, new);
383*fdd7c7e0SBoqun Feng }
384*fdd7c7e0SBoqun Feng 
385*fdd7c7e0SBoqun Feng __rust_helper int
386*fdd7c7e0SBoqun Feng rust_helper_atomic_xchg_acquire(atomic_t *v, int new)
387*fdd7c7e0SBoqun Feng {
388*fdd7c7e0SBoqun Feng 	return atomic_xchg_acquire(v, new);
389*fdd7c7e0SBoqun Feng }
390*fdd7c7e0SBoqun Feng 
391*fdd7c7e0SBoqun Feng __rust_helper int
392*fdd7c7e0SBoqun Feng rust_helper_atomic_xchg_release(atomic_t *v, int new)
393*fdd7c7e0SBoqun Feng {
394*fdd7c7e0SBoqun Feng 	return atomic_xchg_release(v, new);
395*fdd7c7e0SBoqun Feng }
396*fdd7c7e0SBoqun Feng 
397*fdd7c7e0SBoqun Feng __rust_helper int
398*fdd7c7e0SBoqun Feng rust_helper_atomic_xchg_relaxed(atomic_t *v, int new)
399*fdd7c7e0SBoqun Feng {
400*fdd7c7e0SBoqun Feng 	return atomic_xchg_relaxed(v, new);
401*fdd7c7e0SBoqun Feng }
402*fdd7c7e0SBoqun Feng 
403*fdd7c7e0SBoqun Feng __rust_helper int
404*fdd7c7e0SBoqun Feng rust_helper_atomic_cmpxchg(atomic_t *v, int old, int new)
405*fdd7c7e0SBoqun Feng {
406*fdd7c7e0SBoqun Feng 	return atomic_cmpxchg(v, old, new);
407*fdd7c7e0SBoqun Feng }
408*fdd7c7e0SBoqun Feng 
409*fdd7c7e0SBoqun Feng __rust_helper int
410*fdd7c7e0SBoqun Feng rust_helper_atomic_cmpxchg_acquire(atomic_t *v, int old, int new)
411*fdd7c7e0SBoqun Feng {
412*fdd7c7e0SBoqun Feng 	return atomic_cmpxchg_acquire(v, old, new);
413*fdd7c7e0SBoqun Feng }
414*fdd7c7e0SBoqun Feng 
415*fdd7c7e0SBoqun Feng __rust_helper int
416*fdd7c7e0SBoqun Feng rust_helper_atomic_cmpxchg_release(atomic_t *v, int old, int new)
417*fdd7c7e0SBoqun Feng {
418*fdd7c7e0SBoqun Feng 	return atomic_cmpxchg_release(v, old, new);
419*fdd7c7e0SBoqun Feng }
420*fdd7c7e0SBoqun Feng 
421*fdd7c7e0SBoqun Feng __rust_helper int
422*fdd7c7e0SBoqun Feng rust_helper_atomic_cmpxchg_relaxed(atomic_t *v, int old, int new)
423*fdd7c7e0SBoqun Feng {
424*fdd7c7e0SBoqun Feng 	return atomic_cmpxchg_relaxed(v, old, new);
425*fdd7c7e0SBoqun Feng }
426*fdd7c7e0SBoqun Feng 
427*fdd7c7e0SBoqun Feng __rust_helper bool
428*fdd7c7e0SBoqun Feng rust_helper_atomic_try_cmpxchg(atomic_t *v, int *old, int new)
429*fdd7c7e0SBoqun Feng {
430*fdd7c7e0SBoqun Feng 	return atomic_try_cmpxchg(v, old, new);
431*fdd7c7e0SBoqun Feng }
432*fdd7c7e0SBoqun Feng 
433*fdd7c7e0SBoqun Feng __rust_helper bool
434*fdd7c7e0SBoqun Feng rust_helper_atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new)
435*fdd7c7e0SBoqun Feng {
436*fdd7c7e0SBoqun Feng 	return atomic_try_cmpxchg_acquire(v, old, new);
437*fdd7c7e0SBoqun Feng }
438*fdd7c7e0SBoqun Feng 
439*fdd7c7e0SBoqun Feng __rust_helper bool
440*fdd7c7e0SBoqun Feng rust_helper_atomic_try_cmpxchg_release(atomic_t *v, int *old, int new)
441*fdd7c7e0SBoqun Feng {
442*fdd7c7e0SBoqun Feng 	return atomic_try_cmpxchg_release(v, old, new);
443*fdd7c7e0SBoqun Feng }
444*fdd7c7e0SBoqun Feng 
445*fdd7c7e0SBoqun Feng __rust_helper bool
446*fdd7c7e0SBoqun Feng rust_helper_atomic_try_cmpxchg_relaxed(atomic_t *v, int *old, int new)
447*fdd7c7e0SBoqun Feng {
448*fdd7c7e0SBoqun Feng 	return atomic_try_cmpxchg_relaxed(v, old, new);
449*fdd7c7e0SBoqun Feng }
450*fdd7c7e0SBoqun Feng 
451*fdd7c7e0SBoqun Feng __rust_helper bool
452*fdd7c7e0SBoqun Feng rust_helper_atomic_sub_and_test(int i, atomic_t *v)
453*fdd7c7e0SBoqun Feng {
454*fdd7c7e0SBoqun Feng 	return atomic_sub_and_test(i, v);
455*fdd7c7e0SBoqun Feng }
456*fdd7c7e0SBoqun Feng 
457*fdd7c7e0SBoqun Feng __rust_helper bool
458*fdd7c7e0SBoqun Feng rust_helper_atomic_dec_and_test(atomic_t *v)
459*fdd7c7e0SBoqun Feng {
460*fdd7c7e0SBoqun Feng 	return atomic_dec_and_test(v);
461*fdd7c7e0SBoqun Feng }
462*fdd7c7e0SBoqun Feng 
463*fdd7c7e0SBoqun Feng __rust_helper bool
464*fdd7c7e0SBoqun Feng rust_helper_atomic_inc_and_test(atomic_t *v)
465*fdd7c7e0SBoqun Feng {
466*fdd7c7e0SBoqun Feng 	return atomic_inc_and_test(v);
467*fdd7c7e0SBoqun Feng }
468*fdd7c7e0SBoqun Feng 
469*fdd7c7e0SBoqun Feng __rust_helper bool
470*fdd7c7e0SBoqun Feng rust_helper_atomic_add_negative(int i, atomic_t *v)
471*fdd7c7e0SBoqun Feng {
472*fdd7c7e0SBoqun Feng 	return atomic_add_negative(i, v);
473*fdd7c7e0SBoqun Feng }
474*fdd7c7e0SBoqun Feng 
475*fdd7c7e0SBoqun Feng __rust_helper bool
476*fdd7c7e0SBoqun Feng rust_helper_atomic_add_negative_acquire(int i, atomic_t *v)
477*fdd7c7e0SBoqun Feng {
478*fdd7c7e0SBoqun Feng 	return atomic_add_negative_acquire(i, v);
479*fdd7c7e0SBoqun Feng }
480*fdd7c7e0SBoqun Feng 
481*fdd7c7e0SBoqun Feng __rust_helper bool
482*fdd7c7e0SBoqun Feng rust_helper_atomic_add_negative_release(int i, atomic_t *v)
483*fdd7c7e0SBoqun Feng {
484*fdd7c7e0SBoqun Feng 	return atomic_add_negative_release(i, v);
485*fdd7c7e0SBoqun Feng }
486*fdd7c7e0SBoqun Feng 
487*fdd7c7e0SBoqun Feng __rust_helper bool
488*fdd7c7e0SBoqun Feng rust_helper_atomic_add_negative_relaxed(int i, atomic_t *v)
489*fdd7c7e0SBoqun Feng {
490*fdd7c7e0SBoqun Feng 	return atomic_add_negative_relaxed(i, v);
491*fdd7c7e0SBoqun Feng }
492*fdd7c7e0SBoqun Feng 
493*fdd7c7e0SBoqun Feng __rust_helper int
494*fdd7c7e0SBoqun Feng rust_helper_atomic_fetch_add_unless(atomic_t *v, int a, int u)
495*fdd7c7e0SBoqun Feng {
496*fdd7c7e0SBoqun Feng 	return atomic_fetch_add_unless(v, a, u);
497*fdd7c7e0SBoqun Feng }
498*fdd7c7e0SBoqun Feng 
499*fdd7c7e0SBoqun Feng __rust_helper bool
500*fdd7c7e0SBoqun Feng rust_helper_atomic_add_unless(atomic_t *v, int a, int u)
501*fdd7c7e0SBoqun Feng {
502*fdd7c7e0SBoqun Feng 	return atomic_add_unless(v, a, u);
503*fdd7c7e0SBoqun Feng }
504*fdd7c7e0SBoqun Feng 
505*fdd7c7e0SBoqun Feng __rust_helper bool
506*fdd7c7e0SBoqun Feng rust_helper_atomic_inc_not_zero(atomic_t *v)
507*fdd7c7e0SBoqun Feng {
508*fdd7c7e0SBoqun Feng 	return atomic_inc_not_zero(v);
509*fdd7c7e0SBoqun Feng }
510*fdd7c7e0SBoqun Feng 
511*fdd7c7e0SBoqun Feng __rust_helper bool
512*fdd7c7e0SBoqun Feng rust_helper_atomic_inc_unless_negative(atomic_t *v)
513*fdd7c7e0SBoqun Feng {
514*fdd7c7e0SBoqun Feng 	return atomic_inc_unless_negative(v);
515*fdd7c7e0SBoqun Feng }
516*fdd7c7e0SBoqun Feng 
517*fdd7c7e0SBoqun Feng __rust_helper bool
518*fdd7c7e0SBoqun Feng rust_helper_atomic_dec_unless_positive(atomic_t *v)
519*fdd7c7e0SBoqun Feng {
520*fdd7c7e0SBoqun Feng 	return atomic_dec_unless_positive(v);
521*fdd7c7e0SBoqun Feng }
522*fdd7c7e0SBoqun Feng 
523*fdd7c7e0SBoqun Feng __rust_helper int
524*fdd7c7e0SBoqun Feng rust_helper_atomic_dec_if_positive(atomic_t *v)
525*fdd7c7e0SBoqun Feng {
526*fdd7c7e0SBoqun Feng 	return atomic_dec_if_positive(v);
527*fdd7c7e0SBoqun Feng }
528*fdd7c7e0SBoqun Feng 
529*fdd7c7e0SBoqun Feng __rust_helper s64
530*fdd7c7e0SBoqun Feng rust_helper_atomic64_read(const atomic64_t *v)
531*fdd7c7e0SBoqun Feng {
532*fdd7c7e0SBoqun Feng 	return atomic64_read(v);
533*fdd7c7e0SBoqun Feng }
534*fdd7c7e0SBoqun Feng 
535*fdd7c7e0SBoqun Feng __rust_helper s64
536*fdd7c7e0SBoqun Feng rust_helper_atomic64_read_acquire(const atomic64_t *v)
537*fdd7c7e0SBoqun Feng {
538*fdd7c7e0SBoqun Feng 	return atomic64_read_acquire(v);
539*fdd7c7e0SBoqun Feng }
540*fdd7c7e0SBoqun Feng 
541*fdd7c7e0SBoqun Feng __rust_helper void
542*fdd7c7e0SBoqun Feng rust_helper_atomic64_set(atomic64_t *v, s64 i)
543*fdd7c7e0SBoqun Feng {
544*fdd7c7e0SBoqun Feng 	atomic64_set(v, i);
545*fdd7c7e0SBoqun Feng }
546*fdd7c7e0SBoqun Feng 
547*fdd7c7e0SBoqun Feng __rust_helper void
548*fdd7c7e0SBoqun Feng rust_helper_atomic64_set_release(atomic64_t *v, s64 i)
549*fdd7c7e0SBoqun Feng {
550*fdd7c7e0SBoqun Feng 	atomic64_set_release(v, i);
551*fdd7c7e0SBoqun Feng }
552*fdd7c7e0SBoqun Feng 
553*fdd7c7e0SBoqun Feng __rust_helper void
554*fdd7c7e0SBoqun Feng rust_helper_atomic64_add(s64 i, atomic64_t *v)
555*fdd7c7e0SBoqun Feng {
556*fdd7c7e0SBoqun Feng 	atomic64_add(i, v);
557*fdd7c7e0SBoqun Feng }
558*fdd7c7e0SBoqun Feng 
559*fdd7c7e0SBoqun Feng __rust_helper s64
560*fdd7c7e0SBoqun Feng rust_helper_atomic64_add_return(s64 i, atomic64_t *v)
561*fdd7c7e0SBoqun Feng {
562*fdd7c7e0SBoqun Feng 	return atomic64_add_return(i, v);
563*fdd7c7e0SBoqun Feng }
564*fdd7c7e0SBoqun Feng 
565*fdd7c7e0SBoqun Feng __rust_helper s64
566*fdd7c7e0SBoqun Feng rust_helper_atomic64_add_return_acquire(s64 i, atomic64_t *v)
567*fdd7c7e0SBoqun Feng {
568*fdd7c7e0SBoqun Feng 	return atomic64_add_return_acquire(i, v);
569*fdd7c7e0SBoqun Feng }
570*fdd7c7e0SBoqun Feng 
571*fdd7c7e0SBoqun Feng __rust_helper s64
572*fdd7c7e0SBoqun Feng rust_helper_atomic64_add_return_release(s64 i, atomic64_t *v)
573*fdd7c7e0SBoqun Feng {
574*fdd7c7e0SBoqun Feng 	return atomic64_add_return_release(i, v);
575*fdd7c7e0SBoqun Feng }
576*fdd7c7e0SBoqun Feng 
577*fdd7c7e0SBoqun Feng __rust_helper s64
578*fdd7c7e0SBoqun Feng rust_helper_atomic64_add_return_relaxed(s64 i, atomic64_t *v)
579*fdd7c7e0SBoqun Feng {
580*fdd7c7e0SBoqun Feng 	return atomic64_add_return_relaxed(i, v);
581*fdd7c7e0SBoqun Feng }
582*fdd7c7e0SBoqun Feng 
583*fdd7c7e0SBoqun Feng __rust_helper s64
584*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_add(s64 i, atomic64_t *v)
585*fdd7c7e0SBoqun Feng {
586*fdd7c7e0SBoqun Feng 	return atomic64_fetch_add(i, v);
587*fdd7c7e0SBoqun Feng }
588*fdd7c7e0SBoqun Feng 
589*fdd7c7e0SBoqun Feng __rust_helper s64
590*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_add_acquire(s64 i, atomic64_t *v)
591*fdd7c7e0SBoqun Feng {
592*fdd7c7e0SBoqun Feng 	return atomic64_fetch_add_acquire(i, v);
593*fdd7c7e0SBoqun Feng }
594*fdd7c7e0SBoqun Feng 
595*fdd7c7e0SBoqun Feng __rust_helper s64
596*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_add_release(s64 i, atomic64_t *v)
597*fdd7c7e0SBoqun Feng {
598*fdd7c7e0SBoqun Feng 	return atomic64_fetch_add_release(i, v);
599*fdd7c7e0SBoqun Feng }
600*fdd7c7e0SBoqun Feng 
601*fdd7c7e0SBoqun Feng __rust_helper s64
602*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_add_relaxed(s64 i, atomic64_t *v)
603*fdd7c7e0SBoqun Feng {
604*fdd7c7e0SBoqun Feng 	return atomic64_fetch_add_relaxed(i, v);
605*fdd7c7e0SBoqun Feng }
606*fdd7c7e0SBoqun Feng 
607*fdd7c7e0SBoqun Feng __rust_helper void
608*fdd7c7e0SBoqun Feng rust_helper_atomic64_sub(s64 i, atomic64_t *v)
609*fdd7c7e0SBoqun Feng {
610*fdd7c7e0SBoqun Feng 	atomic64_sub(i, v);
611*fdd7c7e0SBoqun Feng }
612*fdd7c7e0SBoqun Feng 
613*fdd7c7e0SBoqun Feng __rust_helper s64
614*fdd7c7e0SBoqun Feng rust_helper_atomic64_sub_return(s64 i, atomic64_t *v)
615*fdd7c7e0SBoqun Feng {
616*fdd7c7e0SBoqun Feng 	return atomic64_sub_return(i, v);
617*fdd7c7e0SBoqun Feng }
618*fdd7c7e0SBoqun Feng 
619*fdd7c7e0SBoqun Feng __rust_helper s64
620*fdd7c7e0SBoqun Feng rust_helper_atomic64_sub_return_acquire(s64 i, atomic64_t *v)
621*fdd7c7e0SBoqun Feng {
622*fdd7c7e0SBoqun Feng 	return atomic64_sub_return_acquire(i, v);
623*fdd7c7e0SBoqun Feng }
624*fdd7c7e0SBoqun Feng 
625*fdd7c7e0SBoqun Feng __rust_helper s64
626*fdd7c7e0SBoqun Feng rust_helper_atomic64_sub_return_release(s64 i, atomic64_t *v)
627*fdd7c7e0SBoqun Feng {
628*fdd7c7e0SBoqun Feng 	return atomic64_sub_return_release(i, v);
629*fdd7c7e0SBoqun Feng }
630*fdd7c7e0SBoqun Feng 
631*fdd7c7e0SBoqun Feng __rust_helper s64
632*fdd7c7e0SBoqun Feng rust_helper_atomic64_sub_return_relaxed(s64 i, atomic64_t *v)
633*fdd7c7e0SBoqun Feng {
634*fdd7c7e0SBoqun Feng 	return atomic64_sub_return_relaxed(i, v);
635*fdd7c7e0SBoqun Feng }
636*fdd7c7e0SBoqun Feng 
637*fdd7c7e0SBoqun Feng __rust_helper s64
638*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_sub(s64 i, atomic64_t *v)
639*fdd7c7e0SBoqun Feng {
640*fdd7c7e0SBoqun Feng 	return atomic64_fetch_sub(i, v);
641*fdd7c7e0SBoqun Feng }
642*fdd7c7e0SBoqun Feng 
643*fdd7c7e0SBoqun Feng __rust_helper s64
644*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_sub_acquire(s64 i, atomic64_t *v)
645*fdd7c7e0SBoqun Feng {
646*fdd7c7e0SBoqun Feng 	return atomic64_fetch_sub_acquire(i, v);
647*fdd7c7e0SBoqun Feng }
648*fdd7c7e0SBoqun Feng 
649*fdd7c7e0SBoqun Feng __rust_helper s64
650*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_sub_release(s64 i, atomic64_t *v)
651*fdd7c7e0SBoqun Feng {
652*fdd7c7e0SBoqun Feng 	return atomic64_fetch_sub_release(i, v);
653*fdd7c7e0SBoqun Feng }
654*fdd7c7e0SBoqun Feng 
655*fdd7c7e0SBoqun Feng __rust_helper s64
656*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_sub_relaxed(s64 i, atomic64_t *v)
657*fdd7c7e0SBoqun Feng {
658*fdd7c7e0SBoqun Feng 	return atomic64_fetch_sub_relaxed(i, v);
659*fdd7c7e0SBoqun Feng }
660*fdd7c7e0SBoqun Feng 
661*fdd7c7e0SBoqun Feng __rust_helper void
662*fdd7c7e0SBoqun Feng rust_helper_atomic64_inc(atomic64_t *v)
663*fdd7c7e0SBoqun Feng {
664*fdd7c7e0SBoqun Feng 	atomic64_inc(v);
665*fdd7c7e0SBoqun Feng }
666*fdd7c7e0SBoqun Feng 
667*fdd7c7e0SBoqun Feng __rust_helper s64
668*fdd7c7e0SBoqun Feng rust_helper_atomic64_inc_return(atomic64_t *v)
669*fdd7c7e0SBoqun Feng {
670*fdd7c7e0SBoqun Feng 	return atomic64_inc_return(v);
671*fdd7c7e0SBoqun Feng }
672*fdd7c7e0SBoqun Feng 
673*fdd7c7e0SBoqun Feng __rust_helper s64
674*fdd7c7e0SBoqun Feng rust_helper_atomic64_inc_return_acquire(atomic64_t *v)
675*fdd7c7e0SBoqun Feng {
676*fdd7c7e0SBoqun Feng 	return atomic64_inc_return_acquire(v);
677*fdd7c7e0SBoqun Feng }
678*fdd7c7e0SBoqun Feng 
679*fdd7c7e0SBoqun Feng __rust_helper s64
680*fdd7c7e0SBoqun Feng rust_helper_atomic64_inc_return_release(atomic64_t *v)
681*fdd7c7e0SBoqun Feng {
682*fdd7c7e0SBoqun Feng 	return atomic64_inc_return_release(v);
683*fdd7c7e0SBoqun Feng }
684*fdd7c7e0SBoqun Feng 
685*fdd7c7e0SBoqun Feng __rust_helper s64
686*fdd7c7e0SBoqun Feng rust_helper_atomic64_inc_return_relaxed(atomic64_t *v)
687*fdd7c7e0SBoqun Feng {
688*fdd7c7e0SBoqun Feng 	return atomic64_inc_return_relaxed(v);
689*fdd7c7e0SBoqun Feng }
690*fdd7c7e0SBoqun Feng 
691*fdd7c7e0SBoqun Feng __rust_helper s64
692*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_inc(atomic64_t *v)
693*fdd7c7e0SBoqun Feng {
694*fdd7c7e0SBoqun Feng 	return atomic64_fetch_inc(v);
695*fdd7c7e0SBoqun Feng }
696*fdd7c7e0SBoqun Feng 
697*fdd7c7e0SBoqun Feng __rust_helper s64
698*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_inc_acquire(atomic64_t *v)
699*fdd7c7e0SBoqun Feng {
700*fdd7c7e0SBoqun Feng 	return atomic64_fetch_inc_acquire(v);
701*fdd7c7e0SBoqun Feng }
702*fdd7c7e0SBoqun Feng 
703*fdd7c7e0SBoqun Feng __rust_helper s64
704*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_inc_release(atomic64_t *v)
705*fdd7c7e0SBoqun Feng {
706*fdd7c7e0SBoqun Feng 	return atomic64_fetch_inc_release(v);
707*fdd7c7e0SBoqun Feng }
708*fdd7c7e0SBoqun Feng 
709*fdd7c7e0SBoqun Feng __rust_helper s64
710*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_inc_relaxed(atomic64_t *v)
711*fdd7c7e0SBoqun Feng {
712*fdd7c7e0SBoqun Feng 	return atomic64_fetch_inc_relaxed(v);
713*fdd7c7e0SBoqun Feng }
714*fdd7c7e0SBoqun Feng 
715*fdd7c7e0SBoqun Feng __rust_helper void
716*fdd7c7e0SBoqun Feng rust_helper_atomic64_dec(atomic64_t *v)
717*fdd7c7e0SBoqun Feng {
718*fdd7c7e0SBoqun Feng 	atomic64_dec(v);
719*fdd7c7e0SBoqun Feng }
720*fdd7c7e0SBoqun Feng 
721*fdd7c7e0SBoqun Feng __rust_helper s64
722*fdd7c7e0SBoqun Feng rust_helper_atomic64_dec_return(atomic64_t *v)
723*fdd7c7e0SBoqun Feng {
724*fdd7c7e0SBoqun Feng 	return atomic64_dec_return(v);
725*fdd7c7e0SBoqun Feng }
726*fdd7c7e0SBoqun Feng 
727*fdd7c7e0SBoqun Feng __rust_helper s64
728*fdd7c7e0SBoqun Feng rust_helper_atomic64_dec_return_acquire(atomic64_t *v)
729*fdd7c7e0SBoqun Feng {
730*fdd7c7e0SBoqun Feng 	return atomic64_dec_return_acquire(v);
731*fdd7c7e0SBoqun Feng }
732*fdd7c7e0SBoqun Feng 
733*fdd7c7e0SBoqun Feng __rust_helper s64
734*fdd7c7e0SBoqun Feng rust_helper_atomic64_dec_return_release(atomic64_t *v)
735*fdd7c7e0SBoqun Feng {
736*fdd7c7e0SBoqun Feng 	return atomic64_dec_return_release(v);
737*fdd7c7e0SBoqun Feng }
738*fdd7c7e0SBoqun Feng 
739*fdd7c7e0SBoqun Feng __rust_helper s64
740*fdd7c7e0SBoqun Feng rust_helper_atomic64_dec_return_relaxed(atomic64_t *v)
741*fdd7c7e0SBoqun Feng {
742*fdd7c7e0SBoqun Feng 	return atomic64_dec_return_relaxed(v);
743*fdd7c7e0SBoqun Feng }
744*fdd7c7e0SBoqun Feng 
745*fdd7c7e0SBoqun Feng __rust_helper s64
746*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_dec(atomic64_t *v)
747*fdd7c7e0SBoqun Feng {
748*fdd7c7e0SBoqun Feng 	return atomic64_fetch_dec(v);
749*fdd7c7e0SBoqun Feng }
750*fdd7c7e0SBoqun Feng 
751*fdd7c7e0SBoqun Feng __rust_helper s64
752*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_dec_acquire(atomic64_t *v)
753*fdd7c7e0SBoqun Feng {
754*fdd7c7e0SBoqun Feng 	return atomic64_fetch_dec_acquire(v);
755*fdd7c7e0SBoqun Feng }
756*fdd7c7e0SBoqun Feng 
757*fdd7c7e0SBoqun Feng __rust_helper s64
758*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_dec_release(atomic64_t *v)
759*fdd7c7e0SBoqun Feng {
760*fdd7c7e0SBoqun Feng 	return atomic64_fetch_dec_release(v);
761*fdd7c7e0SBoqun Feng }
762*fdd7c7e0SBoqun Feng 
763*fdd7c7e0SBoqun Feng __rust_helper s64
764*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_dec_relaxed(atomic64_t *v)
765*fdd7c7e0SBoqun Feng {
766*fdd7c7e0SBoqun Feng 	return atomic64_fetch_dec_relaxed(v);
767*fdd7c7e0SBoqun Feng }
768*fdd7c7e0SBoqun Feng 
769*fdd7c7e0SBoqun Feng __rust_helper void
770*fdd7c7e0SBoqun Feng rust_helper_atomic64_and(s64 i, atomic64_t *v)
771*fdd7c7e0SBoqun Feng {
772*fdd7c7e0SBoqun Feng 	atomic64_and(i, v);
773*fdd7c7e0SBoqun Feng }
774*fdd7c7e0SBoqun Feng 
775*fdd7c7e0SBoqun Feng __rust_helper s64
776*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_and(s64 i, atomic64_t *v)
777*fdd7c7e0SBoqun Feng {
778*fdd7c7e0SBoqun Feng 	return atomic64_fetch_and(i, v);
779*fdd7c7e0SBoqun Feng }
780*fdd7c7e0SBoqun Feng 
781*fdd7c7e0SBoqun Feng __rust_helper s64
782*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_and_acquire(s64 i, atomic64_t *v)
783*fdd7c7e0SBoqun Feng {
784*fdd7c7e0SBoqun Feng 	return atomic64_fetch_and_acquire(i, v);
785*fdd7c7e0SBoqun Feng }
786*fdd7c7e0SBoqun Feng 
787*fdd7c7e0SBoqun Feng __rust_helper s64
788*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_and_release(s64 i, atomic64_t *v)
789*fdd7c7e0SBoqun Feng {
790*fdd7c7e0SBoqun Feng 	return atomic64_fetch_and_release(i, v);
791*fdd7c7e0SBoqun Feng }
792*fdd7c7e0SBoqun Feng 
793*fdd7c7e0SBoqun Feng __rust_helper s64
794*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_and_relaxed(s64 i, atomic64_t *v)
795*fdd7c7e0SBoqun Feng {
796*fdd7c7e0SBoqun Feng 	return atomic64_fetch_and_relaxed(i, v);
797*fdd7c7e0SBoqun Feng }
798*fdd7c7e0SBoqun Feng 
799*fdd7c7e0SBoqun Feng __rust_helper void
800*fdd7c7e0SBoqun Feng rust_helper_atomic64_andnot(s64 i, atomic64_t *v)
801*fdd7c7e0SBoqun Feng {
802*fdd7c7e0SBoqun Feng 	atomic64_andnot(i, v);
803*fdd7c7e0SBoqun Feng }
804*fdd7c7e0SBoqun Feng 
805*fdd7c7e0SBoqun Feng __rust_helper s64
806*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_andnot(s64 i, atomic64_t *v)
807*fdd7c7e0SBoqun Feng {
808*fdd7c7e0SBoqun Feng 	return atomic64_fetch_andnot(i, v);
809*fdd7c7e0SBoqun Feng }
810*fdd7c7e0SBoqun Feng 
811*fdd7c7e0SBoqun Feng __rust_helper s64
812*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_andnot_acquire(s64 i, atomic64_t *v)
813*fdd7c7e0SBoqun Feng {
814*fdd7c7e0SBoqun Feng 	return atomic64_fetch_andnot_acquire(i, v);
815*fdd7c7e0SBoqun Feng }
816*fdd7c7e0SBoqun Feng 
817*fdd7c7e0SBoqun Feng __rust_helper s64
818*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_andnot_release(s64 i, atomic64_t *v)
819*fdd7c7e0SBoqun Feng {
820*fdd7c7e0SBoqun Feng 	return atomic64_fetch_andnot_release(i, v);
821*fdd7c7e0SBoqun Feng }
822*fdd7c7e0SBoqun Feng 
823*fdd7c7e0SBoqun Feng __rust_helper s64
824*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_andnot_relaxed(s64 i, atomic64_t *v)
825*fdd7c7e0SBoqun Feng {
826*fdd7c7e0SBoqun Feng 	return atomic64_fetch_andnot_relaxed(i, v);
827*fdd7c7e0SBoqun Feng }
828*fdd7c7e0SBoqun Feng 
829*fdd7c7e0SBoqun Feng __rust_helper void
830*fdd7c7e0SBoqun Feng rust_helper_atomic64_or(s64 i, atomic64_t *v)
831*fdd7c7e0SBoqun Feng {
832*fdd7c7e0SBoqun Feng 	atomic64_or(i, v);
833*fdd7c7e0SBoqun Feng }
834*fdd7c7e0SBoqun Feng 
835*fdd7c7e0SBoqun Feng __rust_helper s64
836*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_or(s64 i, atomic64_t *v)
837*fdd7c7e0SBoqun Feng {
838*fdd7c7e0SBoqun Feng 	return atomic64_fetch_or(i, v);
839*fdd7c7e0SBoqun Feng }
840*fdd7c7e0SBoqun Feng 
841*fdd7c7e0SBoqun Feng __rust_helper s64
842*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_or_acquire(s64 i, atomic64_t *v)
843*fdd7c7e0SBoqun Feng {
844*fdd7c7e0SBoqun Feng 	return atomic64_fetch_or_acquire(i, v);
845*fdd7c7e0SBoqun Feng }
846*fdd7c7e0SBoqun Feng 
847*fdd7c7e0SBoqun Feng __rust_helper s64
848*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_or_release(s64 i, atomic64_t *v)
849*fdd7c7e0SBoqun Feng {
850*fdd7c7e0SBoqun Feng 	return atomic64_fetch_or_release(i, v);
851*fdd7c7e0SBoqun Feng }
852*fdd7c7e0SBoqun Feng 
853*fdd7c7e0SBoqun Feng __rust_helper s64
854*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_or_relaxed(s64 i, atomic64_t *v)
855*fdd7c7e0SBoqun Feng {
856*fdd7c7e0SBoqun Feng 	return atomic64_fetch_or_relaxed(i, v);
857*fdd7c7e0SBoqun Feng }
858*fdd7c7e0SBoqun Feng 
859*fdd7c7e0SBoqun Feng __rust_helper void
860*fdd7c7e0SBoqun Feng rust_helper_atomic64_xor(s64 i, atomic64_t *v)
861*fdd7c7e0SBoqun Feng {
862*fdd7c7e0SBoqun Feng 	atomic64_xor(i, v);
863*fdd7c7e0SBoqun Feng }
864*fdd7c7e0SBoqun Feng 
865*fdd7c7e0SBoqun Feng __rust_helper s64
866*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_xor(s64 i, atomic64_t *v)
867*fdd7c7e0SBoqun Feng {
868*fdd7c7e0SBoqun Feng 	return atomic64_fetch_xor(i, v);
869*fdd7c7e0SBoqun Feng }
870*fdd7c7e0SBoqun Feng 
871*fdd7c7e0SBoqun Feng __rust_helper s64
872*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_xor_acquire(s64 i, atomic64_t *v)
873*fdd7c7e0SBoqun Feng {
874*fdd7c7e0SBoqun Feng 	return atomic64_fetch_xor_acquire(i, v);
875*fdd7c7e0SBoqun Feng }
876*fdd7c7e0SBoqun Feng 
877*fdd7c7e0SBoqun Feng __rust_helper s64
878*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_xor_release(s64 i, atomic64_t *v)
879*fdd7c7e0SBoqun Feng {
880*fdd7c7e0SBoqun Feng 	return atomic64_fetch_xor_release(i, v);
881*fdd7c7e0SBoqun Feng }
882*fdd7c7e0SBoqun Feng 
883*fdd7c7e0SBoqun Feng __rust_helper s64
884*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_xor_relaxed(s64 i, atomic64_t *v)
885*fdd7c7e0SBoqun Feng {
886*fdd7c7e0SBoqun Feng 	return atomic64_fetch_xor_relaxed(i, v);
887*fdd7c7e0SBoqun Feng }
888*fdd7c7e0SBoqun Feng 
889*fdd7c7e0SBoqun Feng __rust_helper s64
890*fdd7c7e0SBoqun Feng rust_helper_atomic64_xchg(atomic64_t *v, s64 new)
891*fdd7c7e0SBoqun Feng {
892*fdd7c7e0SBoqun Feng 	return atomic64_xchg(v, new);
893*fdd7c7e0SBoqun Feng }
894*fdd7c7e0SBoqun Feng 
895*fdd7c7e0SBoqun Feng __rust_helper s64
896*fdd7c7e0SBoqun Feng rust_helper_atomic64_xchg_acquire(atomic64_t *v, s64 new)
897*fdd7c7e0SBoqun Feng {
898*fdd7c7e0SBoqun Feng 	return atomic64_xchg_acquire(v, new);
899*fdd7c7e0SBoqun Feng }
900*fdd7c7e0SBoqun Feng 
901*fdd7c7e0SBoqun Feng __rust_helper s64
902*fdd7c7e0SBoqun Feng rust_helper_atomic64_xchg_release(atomic64_t *v, s64 new)
903*fdd7c7e0SBoqun Feng {
904*fdd7c7e0SBoqun Feng 	return atomic64_xchg_release(v, new);
905*fdd7c7e0SBoqun Feng }
906*fdd7c7e0SBoqun Feng 
907*fdd7c7e0SBoqun Feng __rust_helper s64
908*fdd7c7e0SBoqun Feng rust_helper_atomic64_xchg_relaxed(atomic64_t *v, s64 new)
909*fdd7c7e0SBoqun Feng {
910*fdd7c7e0SBoqun Feng 	return atomic64_xchg_relaxed(v, new);
911*fdd7c7e0SBoqun Feng }
912*fdd7c7e0SBoqun Feng 
913*fdd7c7e0SBoqun Feng __rust_helper s64
914*fdd7c7e0SBoqun Feng rust_helper_atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new)
915*fdd7c7e0SBoqun Feng {
916*fdd7c7e0SBoqun Feng 	return atomic64_cmpxchg(v, old, new);
917*fdd7c7e0SBoqun Feng }
918*fdd7c7e0SBoqun Feng 
919*fdd7c7e0SBoqun Feng __rust_helper s64
920*fdd7c7e0SBoqun Feng rust_helper_atomic64_cmpxchg_acquire(atomic64_t *v, s64 old, s64 new)
921*fdd7c7e0SBoqun Feng {
922*fdd7c7e0SBoqun Feng 	return atomic64_cmpxchg_acquire(v, old, new);
923*fdd7c7e0SBoqun Feng }
924*fdd7c7e0SBoqun Feng 
925*fdd7c7e0SBoqun Feng __rust_helper s64
926*fdd7c7e0SBoqun Feng rust_helper_atomic64_cmpxchg_release(atomic64_t *v, s64 old, s64 new)
927*fdd7c7e0SBoqun Feng {
928*fdd7c7e0SBoqun Feng 	return atomic64_cmpxchg_release(v, old, new);
929*fdd7c7e0SBoqun Feng }
930*fdd7c7e0SBoqun Feng 
931*fdd7c7e0SBoqun Feng __rust_helper s64
932*fdd7c7e0SBoqun Feng rust_helper_atomic64_cmpxchg_relaxed(atomic64_t *v, s64 old, s64 new)
933*fdd7c7e0SBoqun Feng {
934*fdd7c7e0SBoqun Feng 	return atomic64_cmpxchg_relaxed(v, old, new);
935*fdd7c7e0SBoqun Feng }
936*fdd7c7e0SBoqun Feng 
937*fdd7c7e0SBoqun Feng __rust_helper bool
938*fdd7c7e0SBoqun Feng rust_helper_atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new)
939*fdd7c7e0SBoqun Feng {
940*fdd7c7e0SBoqun Feng 	return atomic64_try_cmpxchg(v, old, new);
941*fdd7c7e0SBoqun Feng }
942*fdd7c7e0SBoqun Feng 
943*fdd7c7e0SBoqun Feng __rust_helper bool
944*fdd7c7e0SBoqun Feng rust_helper_atomic64_try_cmpxchg_acquire(atomic64_t *v, s64 *old, s64 new)
945*fdd7c7e0SBoqun Feng {
946*fdd7c7e0SBoqun Feng 	return atomic64_try_cmpxchg_acquire(v, old, new);
947*fdd7c7e0SBoqun Feng }
948*fdd7c7e0SBoqun Feng 
949*fdd7c7e0SBoqun Feng __rust_helper bool
950*fdd7c7e0SBoqun Feng rust_helper_atomic64_try_cmpxchg_release(atomic64_t *v, s64 *old, s64 new)
951*fdd7c7e0SBoqun Feng {
952*fdd7c7e0SBoqun Feng 	return atomic64_try_cmpxchg_release(v, old, new);
953*fdd7c7e0SBoqun Feng }
954*fdd7c7e0SBoqun Feng 
955*fdd7c7e0SBoqun Feng __rust_helper bool
956*fdd7c7e0SBoqun Feng rust_helper_atomic64_try_cmpxchg_relaxed(atomic64_t *v, s64 *old, s64 new)
957*fdd7c7e0SBoqun Feng {
958*fdd7c7e0SBoqun Feng 	return atomic64_try_cmpxchg_relaxed(v, old, new);
959*fdd7c7e0SBoqun Feng }
960*fdd7c7e0SBoqun Feng 
961*fdd7c7e0SBoqun Feng __rust_helper bool
962*fdd7c7e0SBoqun Feng rust_helper_atomic64_sub_and_test(s64 i, atomic64_t *v)
963*fdd7c7e0SBoqun Feng {
964*fdd7c7e0SBoqun Feng 	return atomic64_sub_and_test(i, v);
965*fdd7c7e0SBoqun Feng }
966*fdd7c7e0SBoqun Feng 
967*fdd7c7e0SBoqun Feng __rust_helper bool
968*fdd7c7e0SBoqun Feng rust_helper_atomic64_dec_and_test(atomic64_t *v)
969*fdd7c7e0SBoqun Feng {
970*fdd7c7e0SBoqun Feng 	return atomic64_dec_and_test(v);
971*fdd7c7e0SBoqun Feng }
972*fdd7c7e0SBoqun Feng 
973*fdd7c7e0SBoqun Feng __rust_helper bool
974*fdd7c7e0SBoqun Feng rust_helper_atomic64_inc_and_test(atomic64_t *v)
975*fdd7c7e0SBoqun Feng {
976*fdd7c7e0SBoqun Feng 	return atomic64_inc_and_test(v);
977*fdd7c7e0SBoqun Feng }
978*fdd7c7e0SBoqun Feng 
979*fdd7c7e0SBoqun Feng __rust_helper bool
980*fdd7c7e0SBoqun Feng rust_helper_atomic64_add_negative(s64 i, atomic64_t *v)
981*fdd7c7e0SBoqun Feng {
982*fdd7c7e0SBoqun Feng 	return atomic64_add_negative(i, v);
983*fdd7c7e0SBoqun Feng }
984*fdd7c7e0SBoqun Feng 
985*fdd7c7e0SBoqun Feng __rust_helper bool
986*fdd7c7e0SBoqun Feng rust_helper_atomic64_add_negative_acquire(s64 i, atomic64_t *v)
987*fdd7c7e0SBoqun Feng {
988*fdd7c7e0SBoqun Feng 	return atomic64_add_negative_acquire(i, v);
989*fdd7c7e0SBoqun Feng }
990*fdd7c7e0SBoqun Feng 
991*fdd7c7e0SBoqun Feng __rust_helper bool
992*fdd7c7e0SBoqun Feng rust_helper_atomic64_add_negative_release(s64 i, atomic64_t *v)
993*fdd7c7e0SBoqun Feng {
994*fdd7c7e0SBoqun Feng 	return atomic64_add_negative_release(i, v);
995*fdd7c7e0SBoqun Feng }
996*fdd7c7e0SBoqun Feng 
997*fdd7c7e0SBoqun Feng __rust_helper bool
998*fdd7c7e0SBoqun Feng rust_helper_atomic64_add_negative_relaxed(s64 i, atomic64_t *v)
999*fdd7c7e0SBoqun Feng {
1000*fdd7c7e0SBoqun Feng 	return atomic64_add_negative_relaxed(i, v);
1001*fdd7c7e0SBoqun Feng }
1002*fdd7c7e0SBoqun Feng 
1003*fdd7c7e0SBoqun Feng __rust_helper s64
1004*fdd7c7e0SBoqun Feng rust_helper_atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u)
1005*fdd7c7e0SBoqun Feng {
1006*fdd7c7e0SBoqun Feng 	return atomic64_fetch_add_unless(v, a, u);
1007*fdd7c7e0SBoqun Feng }
1008*fdd7c7e0SBoqun Feng 
1009*fdd7c7e0SBoqun Feng __rust_helper bool
1010*fdd7c7e0SBoqun Feng rust_helper_atomic64_add_unless(atomic64_t *v, s64 a, s64 u)
1011*fdd7c7e0SBoqun Feng {
1012*fdd7c7e0SBoqun Feng 	return atomic64_add_unless(v, a, u);
1013*fdd7c7e0SBoqun Feng }
1014*fdd7c7e0SBoqun Feng 
1015*fdd7c7e0SBoqun Feng __rust_helper bool
1016*fdd7c7e0SBoqun Feng rust_helper_atomic64_inc_not_zero(atomic64_t *v)
1017*fdd7c7e0SBoqun Feng {
1018*fdd7c7e0SBoqun Feng 	return atomic64_inc_not_zero(v);
1019*fdd7c7e0SBoqun Feng }
1020*fdd7c7e0SBoqun Feng 
1021*fdd7c7e0SBoqun Feng __rust_helper bool
1022*fdd7c7e0SBoqun Feng rust_helper_atomic64_inc_unless_negative(atomic64_t *v)
1023*fdd7c7e0SBoqun Feng {
1024*fdd7c7e0SBoqun Feng 	return atomic64_inc_unless_negative(v);
1025*fdd7c7e0SBoqun Feng }
1026*fdd7c7e0SBoqun Feng 
1027*fdd7c7e0SBoqun Feng __rust_helper bool
1028*fdd7c7e0SBoqun Feng rust_helper_atomic64_dec_unless_positive(atomic64_t *v)
1029*fdd7c7e0SBoqun Feng {
1030*fdd7c7e0SBoqun Feng 	return atomic64_dec_unless_positive(v);
1031*fdd7c7e0SBoqun Feng }
1032*fdd7c7e0SBoqun Feng 
1033*fdd7c7e0SBoqun Feng __rust_helper s64
1034*fdd7c7e0SBoqun Feng rust_helper_atomic64_dec_if_positive(atomic64_t *v)
1035*fdd7c7e0SBoqun Feng {
1036*fdd7c7e0SBoqun Feng 	return atomic64_dec_if_positive(v);
1037*fdd7c7e0SBoqun Feng }
1038*fdd7c7e0SBoqun Feng 
1039*fdd7c7e0SBoqun Feng #endif /* _RUST_ATOMIC_API_H */
1040*fdd7c7e0SBoqun Feng // 615a0e0c98b5973a47fe4fa65e92935051ca00ed
1041