mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 20:42:44 +02:00
29 lines
729 B
C
29 lines
729 B
C
/**
|
|
* @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);
|
|
}
|