From mboxrd@z Thu Jan 1 00:00:00 1970 From: paulmck@linux.vnet.ibm.com (Paul E. McKenney) Date: Wed, 16 Jun 2010 14:32:04 -0700 Subject: [ltt-dev] [PATCH 3/4] Add native ARM port for armv7l In-Reply-To: <20100616212315.GB12980@Krystal> References: <20100616210420.GA2973@linux.vnet.ibm.com> <1276722309-3043-3-git-send-email-paulmck@linux.vnet.ibm.com> <20100616212315.GB12980@Krystal> Message-ID: <20100616213204.GH2457@linux.vnet.ibm.com> On Wed, Jun 16, 2010 at 05:23:15PM -0400, Mathieu Desnoyers wrote: > * Paul E. McKenney (paulmck at linux.vnet.ibm.com) wrote: > > Add native support for armv7l. Other variants of ARM will likely require > > separate ports. > > > > Signed-off-by: Paul E. McKenney > > --- > > configure.ac | 4 +++ > > urcu/arch_armv7l.h | 59 ++++++++++++++++++++++++++++++++++++++++++++ > > urcu/uatomic_arch_armv7l.h | 48 +++++++++++++++++++++++++++++++++++ [ . . . ] > > +#ifdef __cplusplus > > +extern "C" { > > +#endif > > + > > +/* xchg */ > > +#define uatomic_xchg(addr, v) __sync_lock_test_and_set(addr, v) > > + > > +/* cmpxchg */ > > +#define uatomic_cmpxchg(addr, old, _new) \ > > + __sync_val_compare_and_swap(addr, old, _new) > > + > > +/* uatomic_add_return */ > > +#define uatomic_add_return(addr, v) __sync_add_and_fetch(addr, v) > > So, do we end up trusting that gcc got the memory barriers right in the ARM > __sync_() primitives ? That sounds unlikely. > > I'd vote for surrounding these primitives with smp_mb(). On ARM, my current belief is that the primitives other than __sync_synchronize() and __sync_lock_release() are set up correctly. However, I must defer to Paolo and Uli on this. Thanx, Paul > Thanks, > > Mathieu > > > + > > +#ifdef __cplusplus > > +} > > +#endif > > + > > +#include > > + > > +#endif /* _URCU_ARCH_UATOMIC_ARMV7L_H */ > > -- > > 1.7.0.6 > > > > -- > Mathieu Desnoyers > Operating System Efficiency R&D Consultant > EfficiOS Inc. > http://www.efficios.com