xref: /netbsd-src/external/mpl/bind/include/isc/lint-atomic.h (revision d2a0e8de4b44051c90597cb7bda2d7fcd99127e0)
1 /*	 $NetBSD: lint-atomic.h,v 1.1 2025/01/26 16:31:40 christos Exp $	*/
2 
3 /*
4  * Definitions for clang's atomic builtins
5  */
6 
7 #ifdef __clang__
8 
9 #define __c11_atomic_init(a, b)	(*(a) = (b))
10 
11 #define __c11_atomic_load(a, m) (*(a))
12 #define __c11_atomic_store(a, b, m) (*(a) = (b))
13 
14 #define __c11_atomic_fetch_add(a, b, m) (*(a) += (b))
15 #define __c11_atomic_fetch_sub(a, b, m) (*(a) -= (b))
16 #define __c11_atomic_fetch_or(a, b, m) (*(a) |= (b))
17 #define __c11_atomic_fetch_and(a, b, m) (*(a) &= (b))
18 
19 #define __c11_atomic_exchange(a, b, m) (*(a) = (b))
20 
21 #define __c11_atomic_compare_exchange_strong(a, b, e, d, m) \
22     ((*(a) == (e)) ? (*(b) = (d)) : 0)
23 #define __c11_atomic_compare_exchange_weak(a, b, e, d, m) \
24     ((*(a) == (e)) ? (*(b) = (d)) : 0)
25 
26 #endif
27