1436aa749SJiri Olsa 
2436aa749SJiri Olsa #include <errno.h>
3436aa749SJiri Olsa #include <libunwind.h>
4436aa749SJiri Olsa #include "perf_regs.h"
5436aa749SJiri Olsa #include "../../util/unwind.h"
629a3ce31SStephane Eranian #include "../../util/debug.h"
7436aa749SJiri Olsa 
8ea3da69dSJiri Olsa int libunwind__arch_reg_id(int regnum)
9436aa749SJiri Olsa {
10436aa749SJiri Olsa 	switch (regnum) {
11436aa749SJiri Olsa 	case UNW_ARM_R0:
12436aa749SJiri Olsa 		return PERF_REG_ARM_R0;
13436aa749SJiri Olsa 	case UNW_ARM_R1:
14436aa749SJiri Olsa 		return PERF_REG_ARM_R1;
15436aa749SJiri Olsa 	case UNW_ARM_R2:
16436aa749SJiri Olsa 		return PERF_REG_ARM_R2;
17436aa749SJiri Olsa 	case UNW_ARM_R3:
18436aa749SJiri Olsa 		return PERF_REG_ARM_R3;
19436aa749SJiri Olsa 	case UNW_ARM_R4:
20436aa749SJiri Olsa 		return PERF_REG_ARM_R4;
21436aa749SJiri Olsa 	case UNW_ARM_R5:
22436aa749SJiri Olsa 		return PERF_REG_ARM_R5;
23436aa749SJiri Olsa 	case UNW_ARM_R6:
24436aa749SJiri Olsa 		return PERF_REG_ARM_R6;
25436aa749SJiri Olsa 	case UNW_ARM_R7:
26436aa749SJiri Olsa 		return PERF_REG_ARM_R7;
27436aa749SJiri Olsa 	case UNW_ARM_R8:
28436aa749SJiri Olsa 		return PERF_REG_ARM_R8;
29436aa749SJiri Olsa 	case UNW_ARM_R9:
30436aa749SJiri Olsa 		return PERF_REG_ARM_R9;
31436aa749SJiri Olsa 	case UNW_ARM_R10:
32436aa749SJiri Olsa 		return PERF_REG_ARM_R10;
33436aa749SJiri Olsa 	case UNW_ARM_R11:
34436aa749SJiri Olsa 		return PERF_REG_ARM_FP;
35436aa749SJiri Olsa 	case UNW_ARM_R12:
36436aa749SJiri Olsa 		return PERF_REG_ARM_IP;
37436aa749SJiri Olsa 	case UNW_ARM_R13:
38436aa749SJiri Olsa 		return PERF_REG_ARM_SP;
39436aa749SJiri Olsa 	case UNW_ARM_R14:
40436aa749SJiri Olsa 		return PERF_REG_ARM_LR;
41436aa749SJiri Olsa 	case UNW_ARM_R15:
42436aa749SJiri Olsa 		return PERF_REG_ARM_PC;
43436aa749SJiri Olsa 	default:
44436aa749SJiri Olsa 		pr_err("unwind: invalid reg id %d\n", regnum);
45436aa749SJiri Olsa 		return -EINVAL;
46436aa749SJiri Olsa 	}
47436aa749SJiri Olsa 
48436aa749SJiri Olsa 	return -EINVAL;
49436aa749SJiri Olsa }
50