diff options
Diffstat (limited to 'kernel/include/linux/perf_regs.h')
-rw-r--r-- | kernel/include/linux/perf_regs.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/kernel/include/linux/perf_regs.h b/kernel/include/linux/perf_regs.h new file mode 100644 index 000000000..a5f98d53d --- /dev/null +++ b/kernel/include/linux/perf_regs.h @@ -0,0 +1,41 @@ +#ifndef _LINUX_PERF_REGS_H +#define _LINUX_PERF_REGS_H + +struct perf_regs { + __u64 abi; + struct pt_regs *regs; +}; + +#ifdef CONFIG_HAVE_PERF_REGS +#include <asm/perf_regs.h> +u64 perf_reg_value(struct pt_regs *regs, int idx); +int perf_reg_validate(u64 mask); +u64 perf_reg_abi(struct task_struct *task); +void perf_get_regs_user(struct perf_regs *regs_user, + struct pt_regs *regs, + struct pt_regs *regs_user_copy); +#else +static inline u64 perf_reg_value(struct pt_regs *regs, int idx) +{ + return 0; +} + +static inline int perf_reg_validate(u64 mask) +{ + return mask ? -ENOSYS : 0; +} + +static inline u64 perf_reg_abi(struct task_struct *task) +{ + return PERF_SAMPLE_REGS_ABI_NONE; +} + +static inline void perf_get_regs_user(struct perf_regs *regs_user, + struct pt_regs *regs, + struct pt_regs *regs_user_copy) +{ + regs_user->regs = task_pt_regs(current); + regs_user->abi = perf_reg_abi(current); +} +#endif /* CONFIG_HAVE_PERF_REGS */ +#endif /* _LINUX_PERF_REGS_H */ |