• Heiko Carstens's avatar
    s390/bitops: optimize set_bit() for constant values · 4ae80325
    Heiko Carstens authored
    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: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    4ae80325
bitops.h 20.3 KB