• Mark Rutland's avatar
    atomics: Prepare for atomic64_fetch_add_unless() · 0ae1d994
    Mark Rutland authored
    Currently all architectures must implement atomic_fetch_add_unless(),
    with common code providing atomic_add_unless(). Architectures must also
    implement atomic64_add_unless() directly, with no corresponding
    atomic64_fetch_add_unless().
    
    This divergence is unfortunate, and means that the APIs for atomic_t,
    atomic64_t, and atomic_long_t differ.
    
    In preparation for unifying things, with architectures providing
    atomic64_fetch_add_unless, this patch adds a generic
    atomic64_add_unless() which will use atomic64_fetch_add_unless(). The
    instrumented atomics are updated to take this case into account.
    
    There should be no functional change as a result of this patch.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Reviewed-by: default avatarWill Deacon <will.deacon@arm.com>
    Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Albert Ou <albert@sifive.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Turner <mattst88@gmail.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Palmer Dabbelt <palmer@sifive.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vineet Gupta <vgupta@synopsys.com>
    Link: https://lore.kernel.org/lkml/20180621121321.4761-8-mark.rutland@arm.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    0ae1d994
atomic-instrumented.h 12.1 KB