1#
2# This file and its contents are supplied under the terms of the
3# Common Development and Distribution License ("CDDL"), version 1.0.
4# You may only use this file in accordance with the terms of version
5# 1.0 of the CDDL.
6#
7# A full copy of the text of the CDDL should have accompanied this
8# source.  A copy of the CDDL is also available via the Internet at
9# http://www.illumos.org/license/CDDL.
10#
11
12#
13# Copyright 2022 Oxide Computer Company
14#
15
16#
17# Definitions found in sys/atomic.h. Note, this is a non-standard header
18# so including it means that everything will always be visible. This is
19# included as part of regression tests for #14329. We are currently
20# assuming the following here:
21#
22#  o _ASM_INLINES is not defined (this is generally only used in the
23#    kernel)
24#
25
26#
27# Types
28#
29
30#
31# Values.
32#
33
34#
35# Defines
36#
37
38#
39# Functions
40#
41func | atomic_inc_8					|\
42	void						|\
43	volatile uint8_t *				|\
44	sys/atomic.h | +ALL
45
46func | atomic_inc_uchar					|\
47	void						|\
48	volatile uchar_t *				|\
49	sys/atomic.h | +ALL
50
51func | atomic_inc_16					|\
52	void						|\
53	volatile uint16_t *				|\
54	sys/atomic.h | +ALL
55
56func | atomic_inc_ushort				|\
57	void						|\
58	volatile ushort_t *				|\
59	sys/atomic.h | +ALL
60
61func | atomic_inc_32					|\
62	void						|\
63	volatile uint32_t *				|\
64	sys/atomic.h | +ALL
65
66func | atomic_inc_uint					|\
67	void						|\
68	volatile uint_t *				|\
69	sys/atomic.h | +ALL
70
71func | atomic_inc_ulong					|\
72	void						|\
73	volatile ulong_t *				|\
74	sys/atomic.h | +ALL
75
76func | atomic_inc_64					|\
77	void						|\
78	volatile uint64_t *				|\
79	sys/atomic.h | +ALL
80
81func | atomic_dec_8					|\
82	void						|\
83	volatile uint8_t *				|\
84	sys/atomic.h | +ALL
85
86func | atomic_dec_uchar					|\
87	void						|\
88	volatile uchar_t *				|\
89	sys/atomic.h | +ALL
90
91func | atomic_dec_16					|\
92	void						|\
93	volatile uint16_t *				|\
94	sys/atomic.h | +ALL
95
96func | atomic_dec_ushort				|\
97	void						|\
98	volatile ushort_t *				|\
99	sys/atomic.h | +ALL
100
101func | atomic_dec_32					|\
102	void						|\
103	volatile uint32_t *				|\
104	sys/atomic.h | +ALL
105
106func | atomic_dec_uint					|\
107	void						|\
108	volatile uint_t *				|\
109	sys/atomic.h | +ALL
110
111func | atomic_dec_ulong					|\
112	void						|\
113	volatile ulong_t *				|\
114	sys/atomic.h | +ALL
115
116func | atomic_dec_64					|\
117	void						|\
118	volatile uint64_t *				|\
119	sys/atomic.h | +ALL
120
121func | atomic_add_8					|\
122	void						|\
123	volatile uint8_t *; int8_t			|\
124	sys/atomic.h | +ALL
125
126func | atomic_add_char					|\
127	void						|\
128	volatile uchar_t *; signed char			|\
129	sys/atomic.h | +ALL
130
131func | atomic_add_16					|\
132	void						|\
133	volatile uint16_t *; int16_t			|\
134	sys/atomic.h | +ALL
135
136func | atomic_add_short					|\
137	void						|\
138	volatile ushort_t *; short			|\
139	sys/atomic.h | +ALL
140
141func | atomic_add_32					|\
142	void						|\
143	volatile uint32_t *; int32_t			|\
144	sys/atomic.h | +ALL
145
146func | atomic_add_int					|\
147	void						|\
148	volatile uint_t *; int				|\
149	sys/atomic.h | +ALL
150
151func | atomic_add_ptr					|\
152	void						|\
153	volatile void *; ssize_t			|\
154	sys/atomic.h | +ALL
155
156func | atomic_add_long					|\
157	void						|\
158	volatile ulong_t *; long			|\
159	sys/atomic.h | +ALL
160
161func | atomic_add_64					|\
162	void						|\
163	volatile uint64_t *; int64_t			|\
164	sys/atomic.h | +ALL
165
166func | atomic_or_8					|\
167	void						|\
168	volatile uint8_t *; uint8_t			|\
169	sys/atomic.h | +ALL
170
171func | atomic_or_uchar					|\
172	void						|\
173	volatile uchar_t *; uchar_t			|\
174	sys/atomic.h | +ALL
175
176func | atomic_or_16					|\
177	void						|\
178	volatile uint16_t *; uint16_t			|\
179	sys/atomic.h | +ALL
180
181func | atomic_or_ushort					|\
182	void						|\
183	volatile ushort_t *; ushort_t			|\
184	sys/atomic.h | +ALL
185
186func | atomic_or_32					|\
187	void						|\
188	volatile uint32_t *; uint32_t			|\
189	sys/atomic.h | +ALL
190
191func | atomic_or_uint					|\
192	void						|\
193	volatile uint_t *; uint_t			|\
194	sys/atomic.h | +ALL
195
196func | atomic_or_ulong					|\
197	void						|\
198	volatile ulong_t *; ulong_t			|\
199	sys/atomic.h | +ALL
200
201func | atomic_or_64					|\
202	void						|\
203	volatile uint64_t *; uint64_t			|\
204	sys/atomic.h | +ALL
205
206func | atomic_and_8					|\
207	void						|\
208	volatile uint8_t *; uint8_t			|\
209	sys/atomic.h | +ALL
210
211func | atomic_and_uchar					|\
212	void						|\
213	volatile uchar_t *; uchar_t			|\
214	sys/atomic.h | +ALL
215
216func | atomic_and_16					|\
217	void						|\
218	volatile uint16_t *; uint16_t			|\
219	sys/atomic.h | +ALL
220
221func | atomic_and_ushort				|\
222	void						|\
223	volatile ushort_t *; ushort_t			|\
224	sys/atomic.h | +ALL
225
226func | atomic_and_32					|\
227	void						|\
228	volatile uint32_t *; uint32_t			|\
229	sys/atomic.h | +ALL
230
231func | atomic_and_uint					|\
232	void						|\
233	volatile uint_t *; uint_t			|\
234	sys/atomic.h | +ALL
235
236func | atomic_and_ulong					|\
237	void						|\
238	volatile ulong_t *; ulong_t			|\
239	sys/atomic.h | +ALL
240
241func | atomic_and_64					|\
242	void						|\
243	volatile uint64_t *; uint64_t			|\
244	sys/atomic.h | +ALL
245
246func | atomic_inc_8_nv					|\
247	uint8_t						|\
248	volatile uint8_t *				|\
249	sys/atomic.h | +ALL
250
251func | atomic_inc_uchar_nv				|\
252	uchar_t						|\
253	volatile uchar_t *				|\
254	sys/atomic.h | +ALL
255
256func | atomic_inc_16_nv					|\
257	uint16_t					|\
258	volatile uint16_t *				|\
259	sys/atomic.h | +ALL
260
261func | atomic_inc_ushort_nv				|\
262	ushort_t					|\
263	volatile ushort_t *				|\
264	sys/atomic.h | +ALL
265
266func | atomic_inc_32_nv					|\
267	uint32_t					|\
268	volatile uint32_t *				|\
269	sys/atomic.h | +ALL
270
271func | atomic_inc_uint_nv				|\
272	uint_t						|\
273	volatile uint_t *				|\
274	sys/atomic.h | +ALL
275
276func | atomic_inc_ulong_nv				|\
277	ulong_t						|\
278	volatile ulong_t *				|\
279	sys/atomic.h | +ALL
280
281func | atomic_inc_64_nv					|\
282	uint64_t					|\
283	volatile uint64_t *				|\
284	sys/atomic.h | +ALL
285
286func | atomic_dec_8_nv					|\
287	uint8_t						|\
288	volatile uint8_t *				|\
289	sys/atomic.h | +ALL
290
291func | atomic_dec_uchar_nv				|\
292	uchar_t						|\
293	volatile uchar_t *				|\
294	sys/atomic.h | +ALL
295
296func | atomic_dec_16_nv					|\
297	uint16_t					|\
298	volatile uint16_t *				|\
299	sys/atomic.h | +ALL
300
301func | atomic_dec_ushort_nv				|\
302	ushort_t					|\
303	volatile ushort_t *				|\
304	sys/atomic.h | +ALL
305
306func | atomic_dec_32_nv					|\
307	uint32_t					|\
308	volatile uint32_t *				|\
309	sys/atomic.h | +ALL
310
311func | atomic_dec_uint_nv				|\
312	uint_t						|\
313	volatile uint_t *				|\
314	sys/atomic.h | +ALL
315
316func | atomic_dec_ulong_nv				|\
317	ulong_t						|\
318	volatile ulong_t *				|\
319	sys/atomic.h | +ALL
320
321func | atomic_dec_64_nv					|\
322	uint64_t					|\
323	volatile uint64_t *				|\
324	sys/atomic.h | +ALL
325
326func | atomic_add_8_nv					|\
327	uint8_t						|\
328	volatile uint8_t *; int8_t			|\
329	sys/atomic.h | +ALL
330
331func | atomic_add_char_nv				|\
332	uchar_t						|\
333	volatile uchar_t *; signed char			|\
334	sys/atomic.h | +ALL
335
336func | atomic_add_16_nv					|\
337	uint16_t					|\
338	volatile uint16_t *; int16_t			|\
339	sys/atomic.h | +ALL
340
341func | atomic_add_short_nv				|\
342	ushort_t					|\
343	volatile ushort_t *; short			|\
344	sys/atomic.h | +ALL
345
346func | atomic_add_32_nv					|\
347	uint32_t					|\
348	volatile uint32_t *; int32_t			|\
349	sys/atomic.h | +ALL
350
351func | atomic_add_int_nv				|\
352	uint_t						|\
353	volatile uint_t *; int				|\
354	sys/atomic.h | +ALL
355
356func | atomic_add_ptr_nv				|\
357	void *						|\
358	volatile void *; ssize_t			|\
359	sys/atomic.h | +ALL
360
361func | atomic_add_long_nv				|\
362	ulong_t						|\
363	volatile ulong_t *; long			|\
364	sys/atomic.h | +ALL
365
366func | atomic_add_64_nv					|\
367	uint64_t					|\
368	volatile uint64_t *; int64_t			|\
369	sys/atomic.h | +ALL
370
371func | atomic_or_8_nv					|\
372	uint8_t						|\
373	volatile uint8_t *; uint8_t			|\
374	sys/atomic.h | +ALL
375
376func | atomic_or_uchar_nv				|\
377	uchar_t						|\
378	volatile uchar_t *; uchar_t			|\
379	sys/atomic.h | +ALL
380
381func | atomic_or_16_nv					|\
382	uint16_t					|\
383	volatile uint16_t *; uint16_t			|\
384	sys/atomic.h | +ALL
385
386func | atomic_or_ushort_nv				|\
387	ushort_t					|\
388	volatile ushort_t *; ushort_t			|\
389	sys/atomic.h | +ALL
390
391func | atomic_or_32_nv					|\
392	uint32_t					|\
393	volatile uint32_t *; uint32_t			|\
394	sys/atomic.h | +ALL
395
396func | atomic_or_uint_nv				|\
397	uint_t						|\
398	volatile uint_t *; uint_t			|\
399	sys/atomic.h | +ALL
400
401func | atomic_or_ulong_nv				|\
402	ulong_t						|\
403	volatile ulong_t *; ulong_t			|\
404	sys/atomic.h | +ALL
405
406func | atomic_or_64_nv					|\
407	uint64_t					|\
408	volatile uint64_t *; uint64_t			|\
409	sys/atomic.h | +ALL
410
411func | atomic_and_8_nv					|\
412	uint8_t						|\
413	volatile uint8_t *; uint8_t			|\
414	sys/atomic.h | +ALL
415
416func | atomic_and_uchar_nv				|\
417	uchar_t						|\
418	volatile uchar_t *; uchar_t			|\
419	sys/atomic.h | +ALL
420
421func | atomic_and_16_nv					|\
422	uint16_t					|\
423	volatile uint16_t *; uint16_t			|\
424	sys/atomic.h | +ALL
425
426func | atomic_and_ushort_nv				|\
427	ushort_t					|\
428	volatile ushort_t *; ushort_t			|\
429	sys/atomic.h | +ALL
430
431func | atomic_and_32_nv					|\
432	uint32_t					|\
433	volatile uint32_t *; uint32_t			|\
434	sys/atomic.h | +ALL
435
436func | atomic_and_uint_nv				|\
437	uint_t						|\
438	volatile uint_t *; uint_t			|\
439	sys/atomic.h | +ALL
440
441func | atomic_and_ulong_nv				|\
442	ulong_t						|\
443	volatile ulong_t *; ulong_t			|\
444	sys/atomic.h | +ALL
445
446func | atomic_and_64_nv					|\
447	uint64_t					|\
448	volatile uint64_t *; uint64_t			|\
449	sys/atomic.h | +ALL
450
451func | atomic_cas_8					|\
452	void						|\
453	volatile uint8_t *; uint8_t; uint8_t		|\
454	sys/atomic.h | +ALL
455
456func | atomic_cas_uchar					|\
457	void						|\
458	volatile uchar_t *; uchar_t; uchar_t		|\
459	sys/atomic.h | +ALL
460
461func | atomic_cas_16					|\
462	void						|\
463	volatile uint16_t *; uint16_t; uint16_t		|\
464	sys/atomic.h | +ALL
465
466func | atomic_cas_ushort				|\
467	void						|\
468	volatile ushort_t *; ushort_t; ushort_t		|\
469	sys/atomic.h | +ALL
470
471func | atomic_cas_32					|\
472	void						|\
473	volatile uint32_t *; uint32_t; uint32_t		|\
474	sys/atomic.h | +ALL
475
476func | atomic_cas_uint					|\
477	void						|\
478	volatile uint_t *; uint_t; uint_t		|\
479	sys/atomic.h | +ALL
480
481func | atomic_cas_ptr					|\
482	void						|\
483	volatile void *; void *; void *			|\
484	sys/atomic.h | +ALL
485
486func | atomic_cas_ulong					|\
487	void						|\
488	volatile ulong_t *; ulong_t; ulong_t		|\
489	sys/atomic.h | +ALL
490
491func | atomic_cas_64					|\
492	void						|\
493	volatile uint64_t *; uint64_t; uint64_t		|\
494	sys/atomic.h | +ALL
495
496func | atomic_swap_8					|\
497	void						|\
498	volatile uint8_t *; uint8_t			|\
499	sys/atomic.h | +ALL
500
501func | atomic_swap_uchar				|\
502	void						|\
503	volatile uchar_t *; uchar_t			|\
504	sys/atomic.h | +ALL
505
506func | atomic_swap_16					|\
507	void						|\
508	volatile uint16_t *; uint16_t			|\
509	sys/atomic.h | +ALL
510
511func | atomic_swap_ushort				|\
512	void						|\
513	volatile ushort_t *; ushort_t			|\
514	sys/atomic.h | +ALL
515
516func | atomic_swap_32					|\
517	void						|\
518	volatile uint32_t *; uint32_t			|\
519	sys/atomic.h | +ALL
520
521func | atomic_swap_uint					|\
522	void						|\
523	volatile uint_t *; uint_t			|\
524	sys/atomic.h | +ALL
525
526func | atomic_swap_ptr					|\
527	void						|\
528	volatile void *; void *				|\
529	sys/atomic.h | +ALL
530
531func | atomic_swap_ulong				|\
532	void						|\
533	volatile ulong_t *; ulong_t			|\
534	sys/atomic.h | +ALL
535
536func | atomic_swap_64					|\
537	void						|\
538	volatile uint64_t *; uint64_t			|\
539	sys/atomic.h | +ALL
540
541func | atomic_set_long_excl				|\
542	int						|\
543	volatile ulong_t *; uint_t			|\
544	sys/atomic.h | +ALL
545
546func | atomic_clear_long_excl				|\
547	int						|\
548	volatile ulong_t *; uint_t			|\
549	sys/atomic.h | +ALL
550
551func | membar_enter					|\
552	void						|\
553	void						|\
554	sys/atomic.h | +ALL
555
556func | membar_exit					|\
557	void						|\
558	void						|\
559	sys/atomic.h | +ALL
560
561func | membar_producer					|\
562	void						|\
563	void						|\
564	sys/atomic.h | +ALL
565
566func | membar_consumer					|\
567	void						|\
568	void						|\
569	sys/atomic.h | +ALL
570