• R
    arm64: Remove redundant mov from LL/SC cmpxchg · 8df728e1
    Robin Murphy 提交于
    The cmpxchg implementation introduced by commit c342f782 ("arm64:
    cmpxchg: patch in lse instructions when supported by the CPU") performs
    an apparently redundant register move of [old] to [oldval] in the
    success case - it always uses the same register width as [oldval] was
    originally loaded with, and is only executed when [old] and [oldval] are
    known to be equal anyway.
    
    The only effect it seemingly does have is to take up a surprising amount
    of space in the kernel text, as removing it reveals:
    
       text	   data	    bss	    dec	    hex	filename
    12426658	1348614	4499749	18275021	116dacd	vmlinux.o.new
    12429238	1348614	4499749	18277601	116e4e1	vmlinux.o.old
    Reviewed-by: NWill Deacon <will.deacon@arm.com>
    Signed-off-by: NRobin Murphy <robin.murphy@arm.com>
    Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
    8df728e1
atomic_ll_sc.h 10.2 KB