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