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