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)
10SYM_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
47SYM_FUNC_END(perf_regs_load)
48