18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ci#include <errno.h>
48c2ecf20Sopenharmony_ci#include <libunwind.h>
58c2ecf20Sopenharmony_ci#include "perf_regs.h"
68c2ecf20Sopenharmony_ci#include "../../util/unwind.h"
78c2ecf20Sopenharmony_ci#include "../../util/debug.h"
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ciint libunwind__arch_reg_id(int regnum)
108c2ecf20Sopenharmony_ci{
118c2ecf20Sopenharmony_ci	switch (regnum) {
128c2ecf20Sopenharmony_ci	case UNW_ARM_R0:
138c2ecf20Sopenharmony_ci		return PERF_REG_ARM_R0;
148c2ecf20Sopenharmony_ci	case UNW_ARM_R1:
158c2ecf20Sopenharmony_ci		return PERF_REG_ARM_R1;
168c2ecf20Sopenharmony_ci	case UNW_ARM_R2:
178c2ecf20Sopenharmony_ci		return PERF_REG_ARM_R2;
188c2ecf20Sopenharmony_ci	case UNW_ARM_R3:
198c2ecf20Sopenharmony_ci		return PERF_REG_ARM_R3;
208c2ecf20Sopenharmony_ci	case UNW_ARM_R4:
218c2ecf20Sopenharmony_ci		return PERF_REG_ARM_R4;
228c2ecf20Sopenharmony_ci	case UNW_ARM_R5:
238c2ecf20Sopenharmony_ci		return PERF_REG_ARM_R5;
248c2ecf20Sopenharmony_ci	case UNW_ARM_R6:
258c2ecf20Sopenharmony_ci		return PERF_REG_ARM_R6;
268c2ecf20Sopenharmony_ci	case UNW_ARM_R7:
278c2ecf20Sopenharmony_ci		return PERF_REG_ARM_R7;
288c2ecf20Sopenharmony_ci	case UNW_ARM_R8:
298c2ecf20Sopenharmony_ci		return PERF_REG_ARM_R8;
308c2ecf20Sopenharmony_ci	case UNW_ARM_R9:
318c2ecf20Sopenharmony_ci		return PERF_REG_ARM_R9;
328c2ecf20Sopenharmony_ci	case UNW_ARM_R10:
338c2ecf20Sopenharmony_ci		return PERF_REG_ARM_R10;
348c2ecf20Sopenharmony_ci	case UNW_ARM_R11:
358c2ecf20Sopenharmony_ci		return PERF_REG_ARM_FP;
368c2ecf20Sopenharmony_ci	case UNW_ARM_R12:
378c2ecf20Sopenharmony_ci		return PERF_REG_ARM_IP;
388c2ecf20Sopenharmony_ci	case UNW_ARM_R13:
398c2ecf20Sopenharmony_ci		return PERF_REG_ARM_SP;
408c2ecf20Sopenharmony_ci	case UNW_ARM_R14:
418c2ecf20Sopenharmony_ci		return PERF_REG_ARM_LR;
428c2ecf20Sopenharmony_ci	case UNW_ARM_R15:
438c2ecf20Sopenharmony_ci		return PERF_REG_ARM_PC;
448c2ecf20Sopenharmony_ci	default:
458c2ecf20Sopenharmony_ci		pr_err("unwind: invalid reg id %d\n", regnum);
468c2ecf20Sopenharmony_ci		return -EINVAL;
478c2ecf20Sopenharmony_ci	}
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci	return -EINVAL;
508c2ecf20Sopenharmony_ci}
51