From 1d34db84978803d08e9f7fcb64ada5acab3e17b0 Mon Sep 17 00:00:00 2001 From: plutoo Date: Sat, 10 Mar 2018 14:41:06 +0100 Subject: [PATCH] Improve atomics --- nx/include/switch/arm/atomics.h | 19 +++++++++++++++---- nx/source/arm/atomics.c | 17 ----------------- 2 files changed, 15 insertions(+), 21 deletions(-) delete mode 100644 nx/source/arm/atomics.c diff --git a/nx/include/switch/arm/atomics.h b/nx/include/switch/arm/atomics.h index a1999104..c6714234 100644 --- a/nx/include/switch/arm/atomics.h +++ b/nx/include/switch/arm/atomics.h @@ -1,6 +1,17 @@ #include "../types.h" -u32 atomicIncrement32(u32* p); -u32 atomicDecrement32(u32* p); -u64 atomicIncrement64(u64* p); -u64 atomicDecrement64(u64* p); +static inline u32 atomicIncrement32(u32* p) { + return __atomic_fetch_add(p, 1, __ATOMIC_SEQ_CST); +} + +static inline u32 atomicDecrement32(u32* p) { + return __atomic_sub_fetch(p, 1, __ATOMIC_SEQ_CST); +} + +static inline u64 atomicIncrement64(u64* p) { + return __atomic_fetch_add(p, 1, __ATOMIC_SEQ_CST); +} + +static inline u64 atomicDecrement64(u64* p) { + return __atomic_sub_fetch(p, 1, __ATOMIC_SEQ_CST); +} diff --git a/nx/source/arm/atomics.c b/nx/source/arm/atomics.c deleted file mode 100644 index c05c863d..00000000 --- a/nx/source/arm/atomics.c +++ /dev/null @@ -1,17 +0,0 @@ -#include "types.h" - -u32 atomicIncrement32(u32* p) { - return __sync_fetch_and_add(p, 1); -} - -u32 atomicDecrement32(u32* p) { - return __sync_sub_and_fetch(p, 1); -} - -u64 atomicIncrement64(u64* p) { - return __sync_fetch_and_add(p, 1); -} - -u64 atomicDecrement64(u64* p) { - return __sync_sub_and_fetch(p, 1); -}