diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2013-09-17 09:48:44 +0200 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-10-24 17:16:53 +0200 |
commit | 4ae803253e4649803dc6e972bb5e59fc107cf474 (patch) | |
tree | 62aa7337c3b93b3e548557ac0202d072a598f460 /arch/s390/include/asm/debug.h | |
parent | s390/bitops: remove CONFIG_SMP / simplify non-atomic bitops (diff) | |
download | linux-4ae803253e4649803dc6e972bb5e59fc107cf474.tar.xz linux-4ae803253e4649803dc6e972bb5e59fc107cf474.zip |
s390/bitops: optimize set_bit() for constant values
Since zEC12 we have the interlocked-access facility 2 which allows to
use the instructions ni/oi/xi to update a single byte in storage with
compare-and-swap semantics.
So change set_bit(), clear_bit() and change_bit() to generate such code
instead of a compare-and-swap loop (or using the load-and-* instruction
family), if possible.
This reduces the text segment by yet another 8KB (defconfig).
Alternatively the long displacement variants niy/oiy/xiy could have
been used, but the extended displacement field is usually not needed
and therefore would only increase the size of the text segment again.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/include/asm/debug.h')
0 files changed, 0 insertions, 0 deletions