|
Message-ID: <52F2C1AF.8020903@nicta.com.au> Date: Thu, 6 Feb 2014 09:56:47 +1100 From: Matthew Fernandez <matthew.fernandez@...ta.com.au> To: <musl@...ts.openwall.com> Subject: 64-bit atomic ops on 32-bit ARM Hi all, The header atomic.h contains a couple of functions for operations on 64-bit types. Despite their name, these do not appear to be atomic to me. For example: static inline void a_and_64(volatile uint64_t *p, uint64_t v) { union { uint64_t v; uint32_t r[2]; } u = { v }; a_and((int *)p, u.r[0]); a_and((int *)p+1, u.r[1]); } Have I misunderstood something or is there some other reason behind their implementation? AIUI on certain ARM platforms there is actually no way to implement atomic 64-bit ops without kernel support. If replying, please CC me directly as I'm not on the list. Thanks, Matt ________________________________ The information in this e-mail may be confidential and subject to legal professional privilege and/or copyright. National ICT Australia Limited accepts no liability for any damage caused by this email or its attachments.
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.