s390/cmpxchg: use compiler builtins
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 29 Oct 2014 11:50:31 +0000 (12:50 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 3 Nov 2014 12:29:47 +0000 (13:29 +0100)
commitf318a1229bd8d377282ddb37158812073701a22b
tree219bafc41a398e6286d4cf5c99e3ca448439e1f6
parentfcbe08d66f57c368e77ca729dd01e6b539ffb3ff
s390/cmpxchg: use compiler builtins

The kernel build for s390 fails for gcc compilers with version 3.x,
set the minimum required version of gcc to version 4.3.

As the atomic builtins are available with all gcc 4.x compilers,
use the __sync_val_compare_and_swap and __sync_bool_compare_and_swap
functions to replace the complex macro and inline assembler magic
in include/asm/cmpxchg.h. The compiler can just-do-it and generates
better code with the builtins.

While we are at it use __sync_bool_compare_and_swap for the
_raw_compare_and_swap function in the spinlock code as well.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/cmpxchg.h
arch/s390/include/asm/spinlock.h
arch/s390/kernel/asm-offsets.c