From 4626177c3b055fdbab6344065d9b335a40ea1c1e Mon Sep 17 00:00:00 2001 From: Anton Staaf Date: Wed, 22 Jul 2015 09:11:46 -0700 Subject: Atomic: Mark the modified uint32_t volatile The atomic_* functions are often used in contexts where the data they will operate on are volatile (due to being shared between tasks or a task and an interrupt handler). Adding volatile here makes using the atomic_* functions a little easier in those cases and removes a cast from the call sites (which could be obscuring a bug, if for instance the variable was modified to be a uint16_t). Signed-off-by: Anton Staaf BRANCH=None BUG=None TEST=make buildall -j Change-Id: I71356eb3cf2c0506df38532eee767c7d78f9240e Reviewed-on: https://chromium-review.googlesource.com/287516 Trybot-Ready: Anton Staaf Tested-by: Anton Staaf Reviewed-by: Vincent Palatin Commit-Queue: Anton Staaf --- core/host/atomic.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'core/host') diff --git a/core/host/atomic.h b/core/host/atomic.h index 77e9cc6ba8..17721390f8 100644 --- a/core/host/atomic.h +++ b/core/host/atomic.h @@ -10,27 +10,27 @@ #include "common.h" -static inline void atomic_clear(uint32_t *addr, uint32_t bits) +static inline void atomic_clear(uint32_t volatile *addr, uint32_t bits) { __sync_and_and_fetch(addr, ~bits); } -static inline void atomic_or(uint32_t *addr, uint32_t bits) +static inline void atomic_or(uint32_t volatile *addr, uint32_t bits) { __sync_or_and_fetch(addr, bits); } -static inline void atomic_add(uint32_t *addr, uint32_t value) +static inline void atomic_add(uint32_t volatile *addr, uint32_t value) { __sync_add_and_fetch(addr, value); } -static inline void atomic_sub(uint32_t *addr, uint32_t value) +static inline void atomic_sub(uint32_t volatile *addr, uint32_t value) { __sync_sub_and_fetch(addr, value); } -static inline uint32_t atomic_read_clear(uint32_t *addr) +static inline uint32_t atomic_read_clear(uint32_t volatile *addr) { return __sync_fetch_and_and(addr, 0); } -- cgit v1.2.1