• Will Deacon's avatar
    arm64: percpu: Rewrite per-cpu ops to allow use of LSE atomics · 959bf2fd
    Will Deacon authored
    Our percpu code is a bit of an inconsistent mess:
    
      * It rolls its own xchg(), but reuses cmpxchg_local()
      * It uses various different flavours of preempt_{enable,disable}()
      * It returns values even for the non-returning RmW operations
      * It makes no use of LSE atomics outside of the cmpxchg() ops
      * There are individual macros for different sizes of access, but these
        are all funneled through a switch statement rather than dispatched
        directly to the relevant case
    
    This patch rewrites the per-cpu operations to address these shortcomings.
    Whilst the new code is a lot cleaner, the big advantage is that we can
    use the non-returning ST- atomic instructions when we have LSE.
    Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
    959bf2fd
percpu.h 7.67 KB