• Mark Rutland's avatar
    arm64: uaccess: permit put_{user,kernel} to use zero register · 4a3f806e
    Mark Rutland authored
    Currently the asm constraints for __put_mem_asm() 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:
    
    	__put_user(0, addr)
    
    ... the compiler has to move '0' into "real" GPR, e.g.
    
    	mov	xN, #0
    	sttr	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:
    
    	sttr	xzr, [<addr>]
    
    Modify the asm constaints for __put_mem_asm() 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-4-mark.rutland@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
    4a3f806e
uaccess.h 12.8 KB