1 /* SPDX-License-Identifier: GPL-2.0 */
2 #include <linux/linkage.h>
3 
4 .text
5 .type perf_regs_load,%function
6 #define STR_REG(r)	str x##r, [x0, 8 * r]
7 #define LDR_REG(r)	ldr x##r, [x0, 8 * r]
8 #define SP	(8 * 31)
9 #define PC	(8 * 32)
10 SYM_FUNC_START(perf_regs_load)
11 	STR_REG(0)
12 	STR_REG(1)
13 	STR_REG(2)
14 	STR_REG(3)
15 	STR_REG(4)
16 	STR_REG(5)
17 	STR_REG(6)
18 	STR_REG(7)
19 	STR_REG(8)
20 	STR_REG(9)
21 	STR_REG(10)
22 	STR_REG(11)
23 	STR_REG(12)
24 	STR_REG(13)
25 	STR_REG(14)
26 	STR_REG(15)
27 	STR_REG(16)
28 	STR_REG(17)
29 	STR_REG(18)
30 	STR_REG(19)
31 	STR_REG(20)
32 	STR_REG(21)
33 	STR_REG(22)
34 	STR_REG(23)
35 	STR_REG(24)
36 	STR_REG(25)
37 	STR_REG(26)
38 	STR_REG(27)
39 	STR_REG(28)
40 	STR_REG(29)
41 	STR_REG(30)
42 	mov x1, sp
43 	str x1, [x0, #SP]
44 	str x30, [x0, #PC]
45 	LDR_REG(1)
46 	ret
47 SYM_FUNC_END(perf_regs_load)
48