On Fri, Apr 22, 2016 at 11:04:17AM +0200, Peter Zijlstra wrote: > Implement FETCH-OP atomic primitives, these are very similar to the > existing OP-RETURN primitives we already have, except they return the > value of the atomic variable _before_ modification. > > This is especially useful for irreversible operations -- such as > bitops (because it becomes impossible to reconstruct the state prior > to modification). > > Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> > --- > arch/arm/include/asm/atomic.h | 108 ++++++++++++++++++++++++++++++++++++++---- > 1 file changed, 98 insertions(+), 10 deletions(-) > > --- a/arch/arm/include/asm/atomic.h > +++ b/arch/arm/include/asm/atomic.h > @@ -77,8 +77,36 @@ static inline int atomic_##op##_return_r > return result; \ > } [...] > +static inline long long \ > +atomic64_fetch_##op##_relaxed(long long i, atomic64_t *v) \ > +{ \ > + long long result, val; \ > + unsigned long tmp; \ > + \ > + prefetchw(&v->counter); \ > + \ > + __asm__ __volatile__("@ atomic64_fetch_" #op "\n" \ > +"1: ldrexd %0, %H0, [%4]\n" \ > +" " #op1 " %Q1, %Q0, %Q5\n" \ > +" " #op2 " %R1, %R0, %R5\n" \ > +" strexd %2, %1, %H0, [%4]\n" \ You want %H1 here. With that: Acked-by: Will Deacon <will.deacon@xxxxxxx> Will -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html