• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef _LINUX_PERF_REGS_H
2 #define _LINUX_PERF_REGS_H
3 
4 struct perf_regs {
5 	__u64		abi;
6 	struct pt_regs	*regs;
7 };
8 
9 #ifdef CONFIG_HAVE_PERF_REGS
10 #include <asm/perf_regs.h>
11 u64 perf_reg_value(struct pt_regs *regs, int idx);
12 int perf_reg_validate(u64 mask);
13 u64 perf_reg_abi(struct task_struct *task);
14 void perf_get_regs_user(struct perf_regs *regs_user,
15 			struct pt_regs *regs,
16 			struct pt_regs *regs_user_copy);
17 #else
perf_reg_value(struct pt_regs * regs,int idx)18 static inline u64 perf_reg_value(struct pt_regs *regs, int idx)
19 {
20 	return 0;
21 }
22 
perf_reg_validate(u64 mask)23 static inline int perf_reg_validate(u64 mask)
24 {
25 	return mask ? -ENOSYS : 0;
26 }
27 
perf_reg_abi(struct task_struct * task)28 static inline u64 perf_reg_abi(struct task_struct *task)
29 {
30 	return PERF_SAMPLE_REGS_ABI_NONE;
31 }
32 
perf_get_regs_user(struct perf_regs * regs_user,struct pt_regs * regs,struct pt_regs * regs_user_copy)33 static inline void perf_get_regs_user(struct perf_regs *regs_user,
34 				      struct pt_regs *regs,
35 				      struct pt_regs *regs_user_copy)
36 {
37 	regs_user->regs = task_pt_regs(current);
38 	regs_user->abi = perf_reg_abi(current);
39 }
40 #endif /* CONFIG_HAVE_PERF_REGS */
41 #endif /* _LINUX_PERF_REGS_H */
42