__BEGIN_DECLS
extern uint32_t hw_atomic_add(
- uint32_t *dest,
+ volatile uint32_t *dest,
uint32_t delt);
extern uint32_t hw_atomic_sub(
- uint32_t *dest,
+ volatile uint32_t *dest,
uint32_t delt);
extern uint32_t hw_atomic_or(
- uint32_t *dest,
+ volatile uint32_t *dest,
uint32_t mask);
extern uint32_t hw_atomic_and(
- uint32_t *dest,
+ volatile uint32_t *dest,
+ uint32_t mask);
+
+/*
+ * Variant of hw_atomic_or which doesn't return a value; potentially
+ * more efficient on some platforms.
+ */
+extern void hw_atomic_or_noret(
+ volatile uint32_t *dest,
+ uint32_t mask);
+/*
+ * Variant of hw_atomic_and which doesn't return a value; potentially
+ * more efficient on some platforms.
+ */
+
+extern void hw_atomic_and_noret(
+ volatile uint32_t *dest,
uint32_t mask);
extern uint32_t hw_compare_and_store(
uint32_t oldval,
uint32_t newval,
- uint32_t *dest);
+ volatile uint32_t *dest);
extern void hw_queue_atomic(
unsigned int *anchor,