diff options
Diffstat (limited to 'tools/perf/arch/arm/util/unwind-libunwind.c')
| -rw-r--r-- | tools/perf/arch/arm/util/unwind-libunwind.c | 48 | 
1 files changed, 48 insertions, 0 deletions
diff --git a/tools/perf/arch/arm/util/unwind-libunwind.c b/tools/perf/arch/arm/util/unwind-libunwind.c new file mode 100644 index 00000000000..729ed69a666 --- /dev/null +++ b/tools/perf/arch/arm/util/unwind-libunwind.c @@ -0,0 +1,48 @@ + +#include <errno.h> +#include <libunwind.h> +#include "perf_regs.h" +#include "../../util/unwind.h" + +int libunwind__arch_reg_id(int regnum) +{ +	switch (regnum) { +	case UNW_ARM_R0: +		return PERF_REG_ARM_R0; +	case UNW_ARM_R1: +		return PERF_REG_ARM_R1; +	case UNW_ARM_R2: +		return PERF_REG_ARM_R2; +	case UNW_ARM_R3: +		return PERF_REG_ARM_R3; +	case UNW_ARM_R4: +		return PERF_REG_ARM_R4; +	case UNW_ARM_R5: +		return PERF_REG_ARM_R5; +	case UNW_ARM_R6: +		return PERF_REG_ARM_R6; +	case UNW_ARM_R7: +		return PERF_REG_ARM_R7; +	case UNW_ARM_R8: +		return PERF_REG_ARM_R8; +	case UNW_ARM_R9: +		return PERF_REG_ARM_R9; +	case UNW_ARM_R10: +		return PERF_REG_ARM_R10; +	case UNW_ARM_R11: +		return PERF_REG_ARM_FP; +	case UNW_ARM_R12: +		return PERF_REG_ARM_IP; +	case UNW_ARM_R13: +		return PERF_REG_ARM_SP; +	case UNW_ARM_R14: +		return PERF_REG_ARM_LR; +	case UNW_ARM_R15: +		return PERF_REG_ARM_PC; +	default: +		pr_err("unwind: invalid reg id %d\n", regnum); +		return -EINVAL; +	} + +	return -EINVAL; +}  | 
