162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci#include <errno.h>
462306a36Sopenharmony_ci#include <libunwind.h>
562306a36Sopenharmony_ci#include "perf_regs.h"
662306a36Sopenharmony_ci#include "../../../util/unwind.h"
762306a36Sopenharmony_ci#include "../../../util/debug.h"
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciint libunwind__arch_reg_id(int regnum)
1062306a36Sopenharmony_ci{
1162306a36Sopenharmony_ci	switch (regnum) {
1262306a36Sopenharmony_ci	case UNW_ARM_R0:
1362306a36Sopenharmony_ci		return PERF_REG_ARM_R0;
1462306a36Sopenharmony_ci	case UNW_ARM_R1:
1562306a36Sopenharmony_ci		return PERF_REG_ARM_R1;
1662306a36Sopenharmony_ci	case UNW_ARM_R2:
1762306a36Sopenharmony_ci		return PERF_REG_ARM_R2;
1862306a36Sopenharmony_ci	case UNW_ARM_R3:
1962306a36Sopenharmony_ci		return PERF_REG_ARM_R3;
2062306a36Sopenharmony_ci	case UNW_ARM_R4:
2162306a36Sopenharmony_ci		return PERF_REG_ARM_R4;
2262306a36Sopenharmony_ci	case UNW_ARM_R5:
2362306a36Sopenharmony_ci		return PERF_REG_ARM_R5;
2462306a36Sopenharmony_ci	case UNW_ARM_R6:
2562306a36Sopenharmony_ci		return PERF_REG_ARM_R6;
2662306a36Sopenharmony_ci	case UNW_ARM_R7:
2762306a36Sopenharmony_ci		return PERF_REG_ARM_R7;
2862306a36Sopenharmony_ci	case UNW_ARM_R8:
2962306a36Sopenharmony_ci		return PERF_REG_ARM_R8;
3062306a36Sopenharmony_ci	case UNW_ARM_R9:
3162306a36Sopenharmony_ci		return PERF_REG_ARM_R9;
3262306a36Sopenharmony_ci	case UNW_ARM_R10:
3362306a36Sopenharmony_ci		return PERF_REG_ARM_R10;
3462306a36Sopenharmony_ci	case UNW_ARM_R11:
3562306a36Sopenharmony_ci		return PERF_REG_ARM_FP;
3662306a36Sopenharmony_ci	case UNW_ARM_R12:
3762306a36Sopenharmony_ci		return PERF_REG_ARM_IP;
3862306a36Sopenharmony_ci	case UNW_ARM_R13:
3962306a36Sopenharmony_ci		return PERF_REG_ARM_SP;
4062306a36Sopenharmony_ci	case UNW_ARM_R14:
4162306a36Sopenharmony_ci		return PERF_REG_ARM_LR;
4262306a36Sopenharmony_ci	case UNW_ARM_R15:
4362306a36Sopenharmony_ci		return PERF_REG_ARM_PC;
4462306a36Sopenharmony_ci	default:
4562306a36Sopenharmony_ci		pr_err("unwind: invalid reg id %d\n", regnum);
4662306a36Sopenharmony_ci		return -EINVAL;
4762306a36Sopenharmony_ci	}
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci	return -EINVAL;
5062306a36Sopenharmony_ci}
51