• Mark Rutland's avatar
    arm64: uaccess: permit __smp_store_release() to use zero register · 39c8275d
    Mark Rutland authored
    Currently the asm constraints for __smp_store_release() require that the
    value is placed in a "real" GPR (i.e. one other than [XW]ZR or SP).
    This means that for cases such as:
    
        __smp_store_release(ptr, 0)
    
    ... the compiler has to move '0' into "real" GPR, e.g.
    
        mov     xN, #0
        stlr    xN, [<addr>]
    
    This is unfortunate, as using the zero register would require fewer
    instructions and save a "real" GPR for other usage, allowing the
    compiler to generate:
    
        stlr    xzr, [<addr>]
    
    Modify the asm constaints for __smp_store_release() to permit the use of
    the zero register for the value.
    
    There should be no functional change as a result of this patch.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Robin Murphy <robin.murphy@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20230314153700.787701-3-mark.rutland@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    39c8275d
barrier.h 5.73 KB