// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright 2016 Chandan Kumar, IBM Corporation.
 */

#include <errno.h>
#include <libunwind.h>
#include <asm/perf_regs.h>
#include "../../util/unwind.h"
#include "../../util/debug.h"

int libunwind__arch_reg_id(int regnum)
{
	switch (regnum) {
	case UNW_PPC64_R0:
		return PERF_REG_POWERPC_R0;
	case UNW_PPC64_R1:
		return PERF_REG_POWERPC_R1;
	case UNW_PPC64_R2:
		return PERF_REG_POWERPC_R2;
	case UNW_PPC64_R3:
		return PERF_REG_POWERPC_R3;
	case UNW_PPC64_R4:
		return PERF_REG_POWERPC_R4;
	case UNW_PPC64_R5:
		return PERF_REG_POWERPC_R5;
	case UNW_PPC64_R6:
		return PERF_REG_POWERPC_R6;
	case UNW_PPC64_R7:
		return PERF_REG_POWERPC_R7;
	case UNW_PPC64_R8:
		return PERF_REG_POWERPC_R8;
	case UNW_PPC64_R9:
		return PERF_REG_POWERPC_R9;
	case UNW_PPC64_R10:
		return PERF_REG_POWERPC_R10;
	case UNW_PPC64_R11:
		return PERF_REG_POWERPC_R11;
	case UNW_PPC64_R12:
		return PERF_REG_POWERPC_R12;
	case UNW_PPC64_R13:
		return PERF_REG_POWERPC_R13;
	case UNW_PPC64_R14:
		return PERF_REG_POWERPC_R14;
	case UNW_PPC64_R15:
		return PERF_REG_POWERPC_R15;
	case UNW_PPC64_R16:
		return PERF_REG_POWERPC_R16;
	case UNW_PPC64_R17:
		return PERF_REG_POWERPC_R17;
	case UNW_PPC64_R18:
		return PERF_REG_POWERPC_R18;
	case UNW_PPC64_R19:
		return PERF_REG_POWERPC_R19;
	case UNW_PPC64_R20:
		return PERF_REG_POWERPC_R20;
	case UNW_PPC64_R21:
		return PERF_REG_POWERPC_R21;
	case UNW_PPC64_R22:
		return PERF_REG_POWERPC_R22;
	case UNW_PPC64_R23:
		return PERF_REG_POWERPC_R23;
	case UNW_PPC64_R24:
		return PERF_REG_POWERPC_R24;
	case UNW_PPC64_R25:
		return PERF_REG_POWERPC_R25;
	case UNW_PPC64_R26:
		return PERF_REG_POWERPC_R26;
	case UNW_PPC64_R27:
		return PERF_REG_POWERPC_R27;
	case UNW_PPC64_R28:
		return PERF_REG_POWERPC_R28;
	case UNW_PPC64_R29:
		return PERF_REG_POWERPC_R29;
	case UNW_PPC64_R30:
		return PERF_REG_POWERPC_R30;
	case UNW_PPC64_R31:
		return PERF_REG_POWERPC_R31;
	case UNW_PPC64_LR:
		return PERF_REG_POWERPC_LINK;
	case UNW_PPC64_CTR:
		return PERF_REG_POWERPC_CTR;
	case UNW_PPC64_XER:
		return PERF_REG_POWERPC_XER;
	case UNW_PPC64_NIP:
		return PERF_REG_POWERPC_NIP;
	default:
		pr_err("unwind: invalid reg id %d\n", regnum);
		return -EINVAL;
	}
	return -EINVAL;
}
