• Boqun Feng's avatar
    powerpc: atomic: Implement acquire/release/relaxed variants for cmpxchg · 56c08e6d
    Boqun Feng authored
    Implement cmpxchg{,64}_relaxed and atomic{,64}_cmpxchg_relaxed, based on
    which _release variants can be built.
    
    To avoid superfluous barriers in _acquire variants, we implement these
    operations with assembly code rather use __atomic_op_acquire() to build
    them automatically.
    
    For the same reason, we keep the assembly implementation of fully
    ordered cmpxchg operations.
    
    However, we don't do the similar for _release, because that will require
    putting barriers in the middle of ll/sc loops, which is probably a bad
    idea.
    
    Note cmpxchg{,64}_relaxed and atomic{,64}_cmpxchg_relaxed are not
    compiler barriers.
    Signed-off-by: default avatarBoqun Feng <boqun.feng@gmail.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    56c08e6d
cmpxchg.h 9.48 KB