/** * @file atomics.h * @brief AArch64 atomic operations. * @author plutoo * @copyright libnx Authors */ #pragma once #include "../types.h" /// Atomically increments a 32-bit value. static inline u32 atomicIncrement32(u32* p) { return __atomic_fetch_add(p, 1, __ATOMIC_SEQ_CST); } /// Atomically decrements a 32-bit value. static inline u32 atomicDecrement32(u32* p) { return __atomic_sub_fetch(p, 1, __ATOMIC_SEQ_CST); } /// Atomically increments a 64-bit value. static inline u64 atomicIncrement64(u64* p) { return __atomic_fetch_add(p, 1, __ATOMIC_SEQ_CST); } /// Atomically decrements a 64-bit value. static inline u64 atomicDecrement64(u64* p) { return __atomic_sub_fetch(p, 1, __ATOMIC_SEQ_CST); }