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