On Wed, Jun 07, 2017 at 02:06:13PM +0200, Peter Zijlstra wrote: > On Tue, Jun 06, 2017 at 04:00:03PM -0700, Palmer Dabbelt wrote: > > +static inline int atomic_fetch_sub(unsigned int mask, atomic_t *v) > > +{ > > + int out; > > + > > + __asm__ __volatile__ ( > > + "amosub.w %2, %1, %0" > > + : "+A" (v->counter), "=r" (out) > > + : "r" (mask)); > > + return out; > > +} Your instruction manual does not list AMOSUB as a valid instruction. So either it is wrong or this code never compiled. Please clarify.