xref: /linux/tools/perf/util/dwarf-regs-arch/dwarf-regs-s390.c (revision c7decec2f2d2ab0366567f9e30c0e1418cece43f)
1 // SPDX-License-Identifier: GPL-2.0
2 #include <errno.h>
3 #include <dwarf-regs.h>
4 #include "../../../arch/s390/include/uapi/asm/perf_regs.h"
5 
__get_dwarf_regnum_for_perf_regnum_s390(int perf_regnum)6 int __get_dwarf_regnum_for_perf_regnum_s390(int perf_regnum)
7 {
8 	static const int dwarf_s390_regnums[] = {
9 		[PERF_REG_S390_R0] = 0,
10 		[PERF_REG_S390_R1] = 1,
11 		[PERF_REG_S390_R2] = 2,
12 		[PERF_REG_S390_R3] = 3,
13 		[PERF_REG_S390_R4] = 4,
14 		[PERF_REG_S390_R5] = 5,
15 		[PERF_REG_S390_R6] = 6,
16 		[PERF_REG_S390_R7] = 7,
17 		[PERF_REG_S390_R8] = 8,
18 		[PERF_REG_S390_R9] = 9,
19 		[PERF_REG_S390_R10] = 10,
20 		[PERF_REG_S390_R11] = 11,
21 		[PERF_REG_S390_R12] = 12,
22 		[PERF_REG_S390_R13] = 13,
23 		[PERF_REG_S390_R14] = 14,
24 		[PERF_REG_S390_R15] = 15,
25 		[PERF_REG_S390_FP0] = 16,
26 		[PERF_REG_S390_FP1] = 20,
27 		[PERF_REG_S390_FP2] = 17,
28 		[PERF_REG_S390_FP3] = 21,
29 		[PERF_REG_S390_FP4] = 18,
30 		[PERF_REG_S390_FP5] = 22,
31 		[PERF_REG_S390_FP6] = 19,
32 		[PERF_REG_S390_FP7] = 23,
33 		[PERF_REG_S390_FP8] = 24,
34 		[PERF_REG_S390_FP9] = 28,
35 		[PERF_REG_S390_FP10] = 25,
36 		[PERF_REG_S390_FP11] = 29,
37 		[PERF_REG_S390_FP12] = 26,
38 		[PERF_REG_S390_FP13] = 30,
39 		[PERF_REG_S390_FP14] = 27,
40 		[PERF_REG_S390_FP15] = 31,
41 		[PERF_REG_S390_MASK] = 64,
42 		[PERF_REG_S390_PC] = 65,
43 	};
44 
45 	if (perf_regnum == 0)
46 		return 0;
47 
48 	if (perf_regnum <  0 || perf_regnum > (int)ARRAY_SIZE(dwarf_s390_regnums) ||
49 	    dwarf_s390_regnums[perf_regnum] == 0)
50 		return -ENOENT;
51 
52 	return dwarf_s390_regnums[perf_regnum];
53 }
54