Home | History | Annotate | Line # | Download | only in isc
      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