xref: /linux/tools/perf/util/perf-regs-arch/perf_regs_csky.c (revision c7decec2f2d2ab0366567f9e30c0e1418cece43f)
1 // SPDX-License-Identifier: GPL-2.0
2 #include <elf.h>
3 #ifndef EF_CSKY_ABIMASK
4 #define EF_CSKY_ABIMASK	0XF0000000
5 #endif
6 #ifndef EF_CSKY_ABIV2
7 #define EF_CSKY_ABIV2	0X20000000
8 #endif
9 #include "../perf_regs.h"
10 #undef __CSKYABIV2__
11 #define __CSKYABIV2__ 1  // Always want the V2 register definitions.
12 #include "../../arch/csky/include/perf_regs.h"
13 
__perf_reg_mask_csky(bool intr __maybe_unused)14 uint64_t __perf_reg_mask_csky(bool intr __maybe_unused)
15 {
16 	return PERF_REGS_MASK;
17 }
18 
__perf_reg_name_csky(int id,uint32_t e_flags)19 const char *__perf_reg_name_csky(int id, uint32_t e_flags)
20 {
21 	if (id >= PERF_REG_CSKY_EXREGS0 && (e_flags & EF_CSKY_ABIMASK) == EF_CSKY_ABIV2)
22 		return NULL;
23 
24 	switch (id) {
25 	case PERF_REG_CSKY_A0:
26 		return "a0";
27 	case PERF_REG_CSKY_A1:
28 		return "a1";
29 	case PERF_REG_CSKY_A2:
30 		return "a2";
31 	case PERF_REG_CSKY_A3:
32 		return "a3";
33 	case PERF_REG_CSKY_REGS0:
34 		return "regs0";
35 	case PERF_REG_CSKY_REGS1:
36 		return "regs1";
37 	case PERF_REG_CSKY_REGS2:
38 		return "regs2";
39 	case PERF_REG_CSKY_REGS3:
40 		return "regs3";
41 	case PERF_REG_CSKY_REGS4:
42 		return "regs4";
43 	case PERF_REG_CSKY_REGS5:
44 		return "regs5";
45 	case PERF_REG_CSKY_REGS6:
46 		return "regs6";
47 	case PERF_REG_CSKY_REGS7:
48 		return "regs7";
49 	case PERF_REG_CSKY_REGS8:
50 		return "regs8";
51 	case PERF_REG_CSKY_REGS9:
52 		return "regs9";
53 	case PERF_REG_CSKY_SP:
54 		return "sp";
55 	case PERF_REG_CSKY_LR:
56 		return "lr";
57 	case PERF_REG_CSKY_PC:
58 		return "pc";
59 	case PERF_REG_CSKY_EXREGS0:
60 		return "exregs0";
61 	case PERF_REG_CSKY_EXREGS1:
62 		return "exregs1";
63 	case PERF_REG_CSKY_EXREGS2:
64 		return "exregs2";
65 	case PERF_REG_CSKY_EXREGS3:
66 		return "exregs3";
67 	case PERF_REG_CSKY_EXREGS4:
68 		return "exregs4";
69 	case PERF_REG_CSKY_EXREGS5:
70 		return "exregs5";
71 	case PERF_REG_CSKY_EXREGS6:
72 		return "exregs6";
73 	case PERF_REG_CSKY_EXREGS7:
74 		return "exregs7";
75 	case PERF_REG_CSKY_EXREGS8:
76 		return "exregs8";
77 	case PERF_REG_CSKY_EXREGS9:
78 		return "exregs9";
79 	case PERF_REG_CSKY_EXREGS10:
80 		return "exregs10";
81 	case PERF_REG_CSKY_EXREGS11:
82 		return "exregs11";
83 	case PERF_REG_CSKY_EXREGS12:
84 		return "exregs12";
85 	case PERF_REG_CSKY_EXREGS13:
86 		return "exregs13";
87 	case PERF_REG_CSKY_EXREGS14:
88 		return "exregs14";
89 	case PERF_REG_CSKY_TLS:
90 		return "tls";
91 	case PERF_REG_CSKY_HI:
92 		return "hi";
93 	case PERF_REG_CSKY_LO:
94 		return "lo";
95 	default:
96 		return NULL;
97 	}
98 }
99 
__perf_reg_ip_csky(void)100 uint64_t __perf_reg_ip_csky(void)
101 {
102 	return PERF_REG_CSKY_PC;
103 }
104 
__perf_reg_sp_csky(void)105 uint64_t __perf_reg_sp_csky(void)
106 {
107 	return PERF_REG_CSKY_SP;
108 }
109