18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef ARCH_PERF_REGS_H 38c2ecf20Sopenharmony_ci#define ARCH_PERF_REGS_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#include <stdlib.h> 68c2ecf20Sopenharmony_ci#include <linux/types.h> 78c2ecf20Sopenharmony_ci#include <asm/perf_regs.h> 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_civoid perf_regs_load(u64 *regs); 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#define PERF_REGS_MASK ((1ULL << PERF_REG_ARM_MAX) - 1) 128c2ecf20Sopenharmony_ci#define PERF_REGS_MAX PERF_REG_ARM_MAX 138c2ecf20Sopenharmony_ci#define PERF_SAMPLE_REGS_ABI PERF_SAMPLE_REGS_ABI_32 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci#define PERF_REG_IP PERF_REG_ARM_PC 168c2ecf20Sopenharmony_ci#define PERF_REG_SP PERF_REG_ARM_SP 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_cistatic inline const char *__perf_reg_name(int id) 198c2ecf20Sopenharmony_ci{ 208c2ecf20Sopenharmony_ci switch (id) { 218c2ecf20Sopenharmony_ci case PERF_REG_ARM_R0: 228c2ecf20Sopenharmony_ci return "r0"; 238c2ecf20Sopenharmony_ci case PERF_REG_ARM_R1: 248c2ecf20Sopenharmony_ci return "r1"; 258c2ecf20Sopenharmony_ci case PERF_REG_ARM_R2: 268c2ecf20Sopenharmony_ci return "r2"; 278c2ecf20Sopenharmony_ci case PERF_REG_ARM_R3: 288c2ecf20Sopenharmony_ci return "r3"; 298c2ecf20Sopenharmony_ci case PERF_REG_ARM_R4: 308c2ecf20Sopenharmony_ci return "r4"; 318c2ecf20Sopenharmony_ci case PERF_REG_ARM_R5: 328c2ecf20Sopenharmony_ci return "r5"; 338c2ecf20Sopenharmony_ci case PERF_REG_ARM_R6: 348c2ecf20Sopenharmony_ci return "r6"; 358c2ecf20Sopenharmony_ci case PERF_REG_ARM_R7: 368c2ecf20Sopenharmony_ci return "r7"; 378c2ecf20Sopenharmony_ci case PERF_REG_ARM_R8: 388c2ecf20Sopenharmony_ci return "r8"; 398c2ecf20Sopenharmony_ci case PERF_REG_ARM_R9: 408c2ecf20Sopenharmony_ci return "r9"; 418c2ecf20Sopenharmony_ci case PERF_REG_ARM_R10: 428c2ecf20Sopenharmony_ci return "r10"; 438c2ecf20Sopenharmony_ci case PERF_REG_ARM_FP: 448c2ecf20Sopenharmony_ci return "fp"; 458c2ecf20Sopenharmony_ci case PERF_REG_ARM_IP: 468c2ecf20Sopenharmony_ci return "ip"; 478c2ecf20Sopenharmony_ci case PERF_REG_ARM_SP: 488c2ecf20Sopenharmony_ci return "sp"; 498c2ecf20Sopenharmony_ci case PERF_REG_ARM_LR: 508c2ecf20Sopenharmony_ci return "lr"; 518c2ecf20Sopenharmony_ci case PERF_REG_ARM_PC: 528c2ecf20Sopenharmony_ci return "pc"; 538c2ecf20Sopenharmony_ci default: 548c2ecf20Sopenharmony_ci return NULL; 558c2ecf20Sopenharmony_ci } 568c2ecf20Sopenharmony_ci 578c2ecf20Sopenharmony_ci return NULL; 588c2ecf20Sopenharmony_ci} 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci#endif /* ARCH_PERF_REGS_H */ 61