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