Skip to content
  • Robin Murphy's avatar
    arm64: Remove redundant mov from LL/SC cmpxchg · 8df728e1
    Robin Murphy authored
    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: default avatarWill Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarRobin Murphy <robin.murphy@arm.com>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    8df728e1