Commit | Line | Data |
---|---|---|
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 |
7 | struct 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 |
19 | u64 perf_reg_value(struct pt_regs *regs, int idx); |
20 | int perf_reg_validate(u64 mask); | |
4018994f | 21 | u64 perf_reg_abi(struct task_struct *task); |
88a7c26a AL |
22 | void 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 |
29 | static inline u64 perf_reg_value(struct pt_regs *regs, int idx) |
30 | { | |
31 | return 0; | |
32 | } | |
33 | ||
34 | static inline int perf_reg_validate(u64 mask) | |
35 | { | |
36 | return mask ? -ENOSYS : 0; | |
37 | } | |
4018994f JO |
38 | |
39 | static inline u64 perf_reg_abi(struct task_struct *task) | |
40 | { | |
41 | return PERF_SAMPLE_REGS_ABI_NONE; | |
42 | } | |
88a7c26a AL |
43 | |
44 | static 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 */ |