[PATCH v4 10/21] arm64: gpr-num: Add wxN aliases for wN registers

Vladimir Murzin vladimir.murzin at arm.com
Fri Sep 11 05:43:06 PDT 2026


On 9/8/26 16:17, Mark Rutland wrote:
> Some A64 instructions require a W register name for specific register
> arguments, and will not accept an X register name. For example:
> 
> 	STRH <Wt>, [<Xn|SP>, (<Wm>|<Xm>){, <extend> {<amount>}}]
> 
> This is painful when writing macros for inline assembly, especially
> where a single register is used as both an X register and a W register.
> 
> We solved this for plain assembly by adding a wxN alias for each xN
> register in commit:
> 
>   4c4dcd3541f83d21 ("arm64: assembler: introduce wxN aliases for wN registers")
> 
> Add the same facility for inline assembly, with a new
> __DEFINE_ASM_GPR_ALIASES macro.
> 
> As with the other macros in gpr-num.h, different escaping is necessary
> for inline vs non-inline assembly, so we can't share a single definition
> that we stringify().
> 
> Signed-off-by: Mark Rutland <mark.rutland at arm.com>
> Tested-by: Muhammad Usama Anjum <usama.anjum at arm.com>
> Cc: Ada Couprie Diaz <ada.coupriediaz at arm.com>
> Cc: Ard Biesheuvel <ardb at kernel.org>
> Cc: Catalin Marinas <catalin.marinas at arm.com>
> Cc: James Morse <james.morse at arm.com>
> Cc: Jinjie Ruan <ruanjinjie at huawei.com>
> Cc: Marc Zyngier <maz at kernel.org>
> Cc: Peter Zijlstra <peterz at infradead.org>
> Cc: Vladimir Murzin <vladimir.murzin at arm.com>
> Cc: Will Deacon <will at kernel.org>
> Cc: Yang Shi <yang at os.amperecomputing.com>
> ---
>  arch/arm64/include/asm/gpr-num.h | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/arch/arm64/include/asm/gpr-num.h b/arch/arm64/include/asm/gpr-num.h
> index a114e4f8209b0..240cd25d55c5a 100644
> --- a/arch/arm64/include/asm/gpr-num.h
> +++ b/arch/arm64/include/asm/gpr-num.h
> @@ -21,6 +21,11 @@
>  "	.equ	.L__gpr_num_xzr, 31\n"				\
>  "	.equ	.L__gpr_num_wzr, 31\n"
>  
> +#define __DEFINE_ASM_GPR_ALIASES									\
> +"	.irp	n,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30\n"	\
> +"	wx\\n	.req	w\\n\n"										\
> +"	.endr\n"
> +
>  #endif /* __ASSEMBLER__ */
>  
>  #endif /* __ASM_GPR_NUM_H */
> -- 2.30.2
> 

FWIW,

Reviewed-by: Vladimir Murzin <vladimir.murzin at arm.com>




More information about the linux-arm-kernel mailing list