atomic.h: Add atomic_load_32()

This commit is contained in:
Sebastian Huber 2019-02-05 14:15:47 +01:00
parent 5770bab70b
commit 4c8a1addeb

View File

@ -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<std::atomic_uint_least32_t *>(const_cast<uint32_t *>(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)
{