[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