1/* SPDX-License-Identifier: GPL-2.0 */
2// Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd.
3
4#ifndef ARCH_PERF_REGS_H
5#define ARCH_PERF_REGS_H
6
7#include <stdlib.h>
8#include <linux/types.h>
9#include <asm/perf_regs.h>
10
11#define PERF_REGS_MASK	((1ULL << PERF_REG_CSKY_MAX) - 1)
12#define PERF_REGS_MAX	PERF_REG_CSKY_MAX
13#define PERF_SAMPLE_REGS_ABI	PERF_SAMPLE_REGS_ABI_32
14
15#define PERF_REG_IP	PERF_REG_CSKY_PC
16#define PERF_REG_SP	PERF_REG_CSKY_SP
17
18static inline const char *__perf_reg_name(int id)
19{
20	switch (id) {
21	case PERF_REG_CSKY_A0:
22		return "a0";
23	case PERF_REG_CSKY_A1:
24		return "a1";
25	case PERF_REG_CSKY_A2:
26		return "a2";
27	case PERF_REG_CSKY_A3:
28		return "a3";
29	case PERF_REG_CSKY_REGS0:
30		return "regs0";
31	case PERF_REG_CSKY_REGS1:
32		return "regs1";
33	case PERF_REG_CSKY_REGS2:
34		return "regs2";
35	case PERF_REG_CSKY_REGS3:
36		return "regs3";
37	case PERF_REG_CSKY_REGS4:
38		return "regs4";
39	case PERF_REG_CSKY_REGS5:
40		return "regs5";
41	case PERF_REG_CSKY_REGS6:
42		return "regs6";
43	case PERF_REG_CSKY_REGS7:
44		return "regs7";
45	case PERF_REG_CSKY_REGS8:
46		return "regs8";
47	case PERF_REG_CSKY_REGS9:
48		return "regs9";
49	case PERF_REG_CSKY_SP:
50		return "sp";
51	case PERF_REG_CSKY_LR:
52		return "lr";
53	case PERF_REG_CSKY_PC:
54		return "pc";
55#if defined(__CSKYABIV2__)
56	case PERF_REG_CSKY_EXREGS0:
57		return "exregs0";
58	case PERF_REG_CSKY_EXREGS1:
59		return "exregs1";
60	case PERF_REG_CSKY_EXREGS2:
61		return "exregs2";
62	case PERF_REG_CSKY_EXREGS3:
63		return "exregs3";
64	case PERF_REG_CSKY_EXREGS4:
65		return "exregs4";
66	case PERF_REG_CSKY_EXREGS5:
67		return "exregs5";
68	case PERF_REG_CSKY_EXREGS6:
69		return "exregs6";
70	case PERF_REG_CSKY_EXREGS7:
71		return "exregs7";
72	case PERF_REG_CSKY_EXREGS8:
73		return "exregs8";
74	case PERF_REG_CSKY_EXREGS9:
75		return "exregs9";
76	case PERF_REG_CSKY_EXREGS10:
77		return "exregs10";
78	case PERF_REG_CSKY_EXREGS11:
79		return "exregs11";
80	case PERF_REG_CSKY_EXREGS12:
81		return "exregs12";
82	case PERF_REG_CSKY_EXREGS13:
83		return "exregs13";
84	case PERF_REG_CSKY_EXREGS14:
85		return "exregs14";
86	case PERF_REG_CSKY_TLS:
87		return "tls";
88	case PERF_REG_CSKY_HI:
89		return "hi";
90	case PERF_REG_CSKY_LO:
91		return "lo";
92#endif
93	default:
94		return NULL;
95	}
96
97	return NULL;
98}
99
100#endif /* ARCH_PERF_REGS_H */
101