xref: /linux/arch/arm64/include/asm/gpr-num.h (revision bb29b957eaaa15be33243550d9ee576c2d601669)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 #ifndef __ASM_GPR_NUM_H
3 #define __ASM_GPR_NUM_H
4 
5 #ifdef __ASSEMBLER__
6 
7 	.irp	num,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
8 	.equ	.L__gpr_num_x\num, \num
9 	.equ	.L__gpr_num_w\num, \num
10 	.endr
11 	.equ	.L__gpr_num_xzr, 31
12 	.equ	.L__gpr_num_wzr, 31
13 
14 #define __GPR_NUM(gpr)		(.L__gpr_num_##gpr)
15 
16 #else /* __ASSEMBLER__ */
17 
18 #define __DEFINE_ASM_GPR_NUMS					\
19 "	.irp	num,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" \
20 "	.equ	.L__gpr_num_x\\num, \\num\n"			\
21 "	.equ	.L__gpr_num_w\\num, \\num\n"			\
22 "	.endr\n"						\
23 "	.equ	.L__gpr_num_xzr, 31\n"				\
24 "	.equ	.L__gpr_num_wzr, 31\n"
25 
26 #define __DEFINE_ASM_GPR_ALIASES									\
27 "	.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"	\
28 "	wx\\n	.req	w\\n\n"										\
29 "	.endr\n"
30 
31 #define __GPR_NUM(gpr)		"(.L__gpr_num_" gpr ")"
32 
33 #endif /* __ASSEMBLER__ */
34 
35 #endif /* __ASM_GPR_NUM_H */
36