1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2c5e63197SJiri Olsa #ifndef _LINUX_PERF_REGS_H 3c5e63197SJiri Olsa #define _LINUX_PERF_REGS_H 4c5e63197SJiri Olsa 568db0cf1SIngo Molnar #include <linux/sched/task_stack.h> 668db0cf1SIngo Molnar 788a7c26aSAndy Lutomirski struct perf_regs { 888a7c26aSAndy Lutomirski __u64 abi; 988a7c26aSAndy Lutomirski struct pt_regs *regs; 1088a7c26aSAndy Lutomirski }; 1188a7c26aSAndy Lutomirski 12c5e63197SJiri Olsa #ifdef CONFIG_HAVE_PERF_REGS 13c5e63197SJiri Olsa #include <asm/perf_regs.h> 14e321d02dSKan Liang 15e321d02dSKan Liang #ifndef PERF_REG_EXTENDED_MASK 16e321d02dSKan Liang #define PERF_REG_EXTENDED_MASK 0 17e321d02dSKan Liang #endif 18e321d02dSKan Liang 19c5e63197SJiri Olsa u64 perf_reg_value(struct pt_regs *regs, int idx); 20c5e63197SJiri Olsa int perf_reg_validate(u64 mask); 214018994fSJiri Olsa u64 perf_reg_abi(struct task_struct *task); 2288a7c26aSAndy Lutomirski void perf_get_regs_user(struct perf_regs *regs_user, 2376a4efa8SPeter Zijlstra struct pt_regs *regs); 24c5e63197SJiri Olsa #else 25e321d02dSKan Liang 26e321d02dSKan Liang #define PERF_REG_EXTENDED_MASK 0 27e321d02dSKan Liang perf_reg_value(struct pt_regs * regs,int idx)28c5e63197SJiri Olsastatic inline u64 perf_reg_value(struct pt_regs *regs, int idx) 29c5e63197SJiri Olsa { 30c5e63197SJiri Olsa return 0; 31c5e63197SJiri Olsa } 32c5e63197SJiri Olsa perf_reg_validate(u64 mask)33c5e63197SJiri Olsastatic inline int perf_reg_validate(u64 mask) 34c5e63197SJiri Olsa { 35c5e63197SJiri Olsa return mask ? -ENOSYS : 0; 36c5e63197SJiri Olsa } 374018994fSJiri Olsa perf_reg_abi(struct task_struct * task)384018994fSJiri Olsastatic inline u64 perf_reg_abi(struct task_struct *task) 394018994fSJiri Olsa { 404018994fSJiri Olsa return PERF_SAMPLE_REGS_ABI_NONE; 414018994fSJiri Olsa } 4288a7c26aSAndy Lutomirski perf_get_regs_user(struct perf_regs * regs_user,struct pt_regs * regs)4388a7c26aSAndy Lutomirskistatic inline void perf_get_regs_user(struct perf_regs *regs_user, 4476a4efa8SPeter Zijlstra struct pt_regs *regs) 4588a7c26aSAndy Lutomirski { 4688a7c26aSAndy Lutomirski regs_user->regs = task_pt_regs(current); 4788a7c26aSAndy Lutomirski regs_user->abi = perf_reg_abi(current); 4888a7c26aSAndy Lutomirski } 49c5e63197SJiri Olsa #endif /* CONFIG_HAVE_PERF_REGS */ 50c5e63197SJiri Olsa #endif /* _LINUX_PERF_REGS_H */ 51