|
Message-Id: <1459113619-24090-2-git-send-email-koorogi@koorogi.info> Date: Sun, 27 Mar 2016 16:20:18 -0500 From: Bobby Bingham <koorogi@...rogi.info> To: musl@...ts.openwall.com Subject: [PATCH 1/2] add 64bit atomics on top of 64bit ll/sc primitives --- src/internal/atomic.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/internal/atomic.h b/src/internal/atomic.h index 6f37d25..43a8a00 100644 --- a/src/internal/atomic.h +++ b/src/internal/atomic.h @@ -99,6 +99,34 @@ static inline void *a_cas_p(volatile void *p, void *t, void *s) #endif +#ifdef a_ll_64 + +#ifndef a_and_64 +#define a_and_64 a_and_64 +static inline void a_and_64(volatile uint64_t *p, uint64_t v) +{ + uint64_t old; + a_pre_llsc(); + do old = a_ll_64(p); + while (!a_sc_64(p, old & v)); + a_post_llsc(); +} +#endif + +#ifndef a_or_64 +#define a_or_64 a_or_64 +static inline void a_or_64(volatile uint64_t *p, uint64_t v) +{ + uint64_t old; + a_pre_llsc(); + do old = a_ll_64(p); + while (!a_sc_64(p, old | v)); + a_post_llsc(); +} +#endif + +#endif + #ifndef a_cas #error missing definition of a_cas #endif -- 2.7.4
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.