From d7504f837286619ae5a7d9dea2c36d739b420875 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 5 Feb 2019 14:15:47 +0100 Subject: atomic.h: Add atomic_load_32() --- rtemsbsd/include/machine/atomic.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/rtemsbsd/include/machine/atomic.h b/rtemsbsd/include/machine/atomic.h index 052df5a7..eb9e3ccb 100644 --- a/rtemsbsd/include/machine/atomic.h +++ b/rtemsbsd/include/machine/atomic.h @@ -996,6 +996,27 @@ atomic_readandclear_32(volatile uint32_t *p) return (tmp); } +static inline uint32_t +atomic_load_32(volatile uint32_t *p) +{ + uint32_t tmp; + +#if defined(_RTEMS_BSD_MACHINE_ATOMIC_USE_ATOMIC) + std::atomic_int *q = + reinterpret_cast(const_cast(p)); + + tmp = q->load(std::memory_order_relaxed); +#elif defined(_RTEMS_BSD_MACHINE_ATOMIC_USE_STDATOMIC) + atomic_uint_least32_t *q = (atomic_uint_least32_t *)RTEMS_DEVOLATILE(uint32_t *, p); + + tmp = atomic_load_explicit(q, memory_order_relaxed); +#else + tmp = *p; +#endif + + return (tmp); +} + static inline uint32_t atomic_load_acq_32(volatile uint32_t *p) { -- cgit v1.2.3