[PATCH 00/28] arch: Provide atomic logic ops

Peter Zijlstra
2015-07-16T17:33:14Z

Currently there is an incoherent mess of atomic_{set,clear}_mask() and
atomic_or() (but no atomic_{and,nand,xor}()) in the tree.

Those archs that implement atomic_{set,clear}_mask() are not even consistent on
its signature.

Implement atomic_{or,and,xor}() on all archs and deprecate
atomic_{set,clear}_mask().

The series has been compile tested by the build-bot, no known failures at this time.

I would like to take this through tip; I'll ask Ingo to put it in a separate
branch such that people can pull in that branch if there is conflicting work
elsewhere (Will has some for Argh64).

Changes since lst time:

- Quite a few build fails fixed, most notable would be that each arch
now defines CONFIG_ARCH_HAS_ATOMIC_OR for a little while -- we take it
out again later.

- FRV has some extra magic that allows the inline assembly to correctly
work as inline functions.

- TILE patch contributed by Chris -- Thanks!

- A little extention to lib/atomic64_test.c that compile tests the new
primitives.

- Alpha, fixed ASM due to fallout from actually trying to compile things.

- H8300, somehow I had overlooked it previously.

- Added atomic_andnot() to a few archs that have that instruction to test that.