]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
bc3966bf JH |
2 | #ifndef _METAG_PTRACE_H |
3 | #define _METAG_PTRACE_H | |
4 | ||
5 | #include <linux/compiler.h> | |
6 | #include <uapi/asm/ptrace.h> | |
7 | #include <asm/tbx.h> | |
8 | ||
9 | #ifndef __ASSEMBLY__ | |
10 | ||
11 | /* this struct defines the way the registers are stored on the | |
12 | stack during a system call. */ | |
13 | ||
14 | struct pt_regs { | |
15 | TBICTX ctx; | |
16 | TBICTXEXTCB0 extcb0[5]; | |
17 | }; | |
18 | ||
19 | #define user_mode(regs) (((regs)->ctx.SaveMask & TBICTX_PRIV_BIT) > 0) | |
20 | ||
21 | #define instruction_pointer(regs) ((unsigned long)(regs)->ctx.CurrPC) | |
22 | #define profile_pc(regs) instruction_pointer(regs) | |
23 | ||
24 | #define task_pt_regs(task) \ | |
25 | ((struct pt_regs *)(task_stack_page(task) + \ | |
26 | sizeof(struct thread_info))) | |
27 | ||
28 | #define current_pt_regs() \ | |
29 | ((struct pt_regs *)((char *)current_thread_info() + \ | |
30 | sizeof(struct thread_info))) | |
31 | ||
32 | int syscall_trace_enter(struct pt_regs *regs); | |
33 | void syscall_trace_leave(struct pt_regs *regs); | |
34 | ||
35 | /* copy a struct user_gp_regs out to user */ | |
36 | int metag_gp_regs_copyout(const struct pt_regs *regs, | |
37 | unsigned int pos, unsigned int count, | |
38 | void *kbuf, void __user *ubuf); | |
39 | /* copy a struct user_gp_regs in from user */ | |
40 | int metag_gp_regs_copyin(struct pt_regs *regs, | |
41 | unsigned int pos, unsigned int count, | |
42 | const void *kbuf, const void __user *ubuf); | |
43 | /* copy a struct user_cb_regs out to user */ | |
44 | int metag_cb_regs_copyout(const struct pt_regs *regs, | |
45 | unsigned int pos, unsigned int count, | |
46 | void *kbuf, void __user *ubuf); | |
47 | /* copy a struct user_cb_regs in from user */ | |
48 | int metag_cb_regs_copyin(struct pt_regs *regs, | |
49 | unsigned int pos, unsigned int count, | |
50 | const void *kbuf, const void __user *ubuf); | |
51 | /* copy a struct user_rp_state out to user */ | |
52 | int metag_rp_state_copyout(const struct pt_regs *regs, | |
53 | unsigned int pos, unsigned int count, | |
54 | void *kbuf, void __user *ubuf); | |
55 | /* copy a struct user_rp_state in from user */ | |
56 | int metag_rp_state_copyin(struct pt_regs *regs, | |
57 | unsigned int pos, unsigned int count, | |
58 | const void *kbuf, const void __user *ubuf); | |
59 | ||
60 | #endif /* __ASSEMBLY__ */ | |
61 | #endif /* _METAG_PTRACE_H */ |