On Thu, Jul 09, 2015 at 07:29:14PM +0200, Peter Zijlstra wrote: > Implement atomic logic ops -- atomic_{or,xor,and}. > > These will replace the atomic_{set,clear}_mask functions that are > available on some archs. > > Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> > --- > arch/s390/include/asm/atomic.h | 45 ++++++++++++++++++++++++++++------------- > 1 file changed, 31 insertions(+), 14 deletions(-) > > --- a/arch/s390/include/asm/atomic.h > +++ b/arch/s390/include/asm/atomic.h > @@ -28,6 +28,7 @@ > #define __ATOMIC_AND "lan" > #define __ATOMIC_ADD "laa" > #define __ATOMIC_BARRIER "bcr 14,0\n" > +#define __ATOMIC_XOR "lax" > > #define __ATOMIC_LOOP(ptr, op_val, op_string, __barrier) \ > ({ \ > @@ -50,6 +51,7 @@ > #define __ATOMIC_AND "nr" > #define __ATOMIC_ADD "ar" > #define __ATOMIC_BARRIER "\n" > +#define __ATOMIC_XOR "xr" Would you mind moving the two XOR define above the BARRIER? Just to keep it consistent with ATOMIC64 stuff within this patch ;) > #define __ATOMIC_LOOP(ptr, op_val, op_string, __barrier) \ > ({ \ > @@ -118,14 +120,26 @@ static inline void atomic_add(int i, ato > #define atomic_dec_return(_v) atomic_sub_return(1, _v) > #define atomic_dec_and_test(_v) (atomic_sub_return(1, _v) == 0) > > -static inline void atomic_clear_mask(unsigned int mask, atomic_t *v) > +#define ATOMIC_OP(op, OP) \ > +static inline void atomic_##op(int i, atomic_t *v) \ > +{ \ > + __ATOMIC_LOOP(v, i, __ATOMIC_##OP, __ATOMIC_NO_BARRIER); \ > +} > + > +ATOMIC_OP(and, AND) > +ATOMIC_OP(or, OR) > +ATOMIC_OP(xor, XOR) > + > +#undef ATOMIC_OP > + > +static inline __deprecated void atomic_clear_mask(unsigned int mask, atomic_t *v) > { > - __ATOMIC_LOOP(v, ~mask, __ATOMIC_AND, __ATOMIC_NO_BARRIER); > + atomic_and(~mask, v); > } > > -static inline void atomic_set_mask(unsigned int mask, atomic_t *v) > +static inline __deprecated void atomic_set_mask(unsigned int mask, atomic_t *v) > { > - __ATOMIC_LOOP(v, mask, __ATOMIC_OR, __ATOMIC_NO_BARRIER); > + atomic_or(mask, v); > } If you insist on the __deprecated (no problem with that), I'd like to apply your patch to the s390 tree so I can convert all users. I would like to avoid to see tons of warnings. Besides that: Acked-by: Heiko Carstens <heiko.carstens@xxxxxxxxxx> -- 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