Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef _LINUX_PERF_REGS_H
0003 #define _LINUX_PERF_REGS_H
0004 
0005 #include <linux/sched/task_stack.h>
0006 
0007 struct perf_regs {
0008     __u64       abi;
0009     struct pt_regs  *regs;
0010 };
0011 
0012 #ifdef CONFIG_HAVE_PERF_REGS
0013 #include <asm/perf_regs.h>
0014 
0015 #ifndef PERF_REG_EXTENDED_MASK
0016 #define PERF_REG_EXTENDED_MASK  0
0017 #endif
0018 
0019 u64 perf_reg_value(struct pt_regs *regs, int idx);
0020 int perf_reg_validate(u64 mask);
0021 u64 perf_reg_abi(struct task_struct *task);
0022 void perf_get_regs_user(struct perf_regs *regs_user,
0023             struct pt_regs *regs);
0024 #else
0025 
0026 #define PERF_REG_EXTENDED_MASK  0
0027 
0028 static inline u64 perf_reg_value(struct pt_regs *regs, int idx)
0029 {
0030     return 0;
0031 }
0032 
0033 static inline int perf_reg_validate(u64 mask)
0034 {
0035     return mask ? -ENOSYS : 0;
0036 }
0037 
0038 static inline u64 perf_reg_abi(struct task_struct *task)
0039 {
0040     return PERF_SAMPLE_REGS_ABI_NONE;
0041 }
0042 
0043 static inline void perf_get_regs_user(struct perf_regs *regs_user,
0044                       struct pt_regs *regs)
0045 {
0046     regs_user->regs = task_pt_regs(current);
0047     regs_user->abi = perf_reg_abi(current);
0048 }
0049 #endif /* CONFIG_HAVE_PERF_REGS */
0050 #endif /* _LINUX_PERF_REGS_H */