[rtems-libbsd commit] atomic.h: Add atomic_load_32()

Sebastian Huber sebh at rtems.org
Mon Feb 11 08:37:54 UTC 2019


Module:    rtems-libbsd
Branch:    5-freebsd-12
Commit:    d7504f837286619ae5a7d9dea2c36d739b420875
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=d7504f837286619ae5a7d9dea2c36d739b420875

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Feb  5 14:15:47 2019 +0100

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 052df5a..eb9e3cc 100644
--- a/rtemsbsd/include/machine/atomic.h
+++ b/rtemsbsd/include/machine/atomic.h
@@ -997,6 +997,27 @@ atomic_readandclear_32(volatile uint32_t *p)
 }
 
 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)
 {
 	uint32_t tmp;



More information about the vc mailing list