]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blame - include/linux/perf_regs.h
perf/x86: Disable extended registers for non-supported PMUs
[mirror_ubuntu-jammy-kernel.git] / include / linux / perf_regs.h
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
c5e63197
JO
2#ifndef _LINUX_PERF_REGS_H
3#define _LINUX_PERF_REGS_H
4
68db0cf1
IM
5#include <linux/sched/task_stack.h>
6
88a7c26a
AL
7struct perf_regs {
8 __u64 abi;
9 struct pt_regs *regs;
10};
11
c5e63197
JO
12#ifdef CONFIG_HAVE_PERF_REGS
13#include <asm/perf_regs.h>
e321d02d
KL
14
15#ifndef PERF_REG_EXTENDED_MASK
16#define PERF_REG_EXTENDED_MASK 0
17#endif
18
c5e63197
JO
19u64 perf_reg_value(struct pt_regs *regs, int idx);
20int perf_reg_validate(u64 mask);
4018994f 21u64 perf_reg_abi(struct task_struct *task);
88a7c26a
AL
22void perf_get_regs_user(struct perf_regs *regs_user,
23 struct pt_regs *regs,
24 struct pt_regs *regs_user_copy);
c5e63197 25#else
e321d02d
KL
26
27#define PERF_REG_EXTENDED_MASK 0
28
c5e63197
JO
29static inline u64 perf_reg_value(struct pt_regs *regs, int idx)
30{
31 return 0;
32}
33
34static inline int perf_reg_validate(u64 mask)
35{
36 return mask ? -ENOSYS : 0;
37}
4018994f
JO
38
39static inline u64 perf_reg_abi(struct task_struct *task)
40{
41 return PERF_SAMPLE_REGS_ABI_NONE;
42}
88a7c26a
AL
43
44static inline void perf_get_regs_user(struct perf_regs *regs_user,
45 struct pt_regs *regs,
46 struct pt_regs *regs_user_copy)
47{
48 regs_user->regs = task_pt_regs(current);
49 regs_user->abi = perf_reg_abi(current);
50}
c5e63197
JO
51#endif /* CONFIG_HAVE_PERF_REGS */
52#endif /* _LINUX_PERF_REGS_H */