diff options
Diffstat (limited to 'arch/sparc/include/asm/ptrace.h')
-rw-r--r-- | arch/sparc/include/asm/ptrace.h | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/arch/sparc/include/asm/ptrace.h b/arch/sparc/include/asm/ptrace.h index 0c6f6b068289..bdfafd7af46f 100644 --- a/arch/sparc/include/asm/ptrace.h +++ b/arch/sparc/include/asm/ptrace.h | |||
@@ -32,6 +32,9 @@ static inline bool pt_regs_clear_syscall(struct pt_regs *regs) | |||
32 | #define arch_ptrace_stop(exit_code, info) \ | 32 | #define arch_ptrace_stop(exit_code, info) \ |
33 | synchronize_user_stack() | 33 | synchronize_user_stack() |
34 | 34 | ||
35 | #define current_pt_regs() \ | ||
36 | ((struct pt_regs *)((unsigned long)current_thread_info() + THREAD_SIZE) - 1) | ||
37 | |||
35 | struct global_reg_snapshot { | 38 | struct global_reg_snapshot { |
36 | unsigned long tstate; | 39 | unsigned long tstate; |
37 | unsigned long tpc; | 40 | unsigned long tpc; |
@@ -42,11 +45,20 @@ struct global_reg_snapshot { | |||
42 | struct thread_info *thread; | 45 | struct thread_info *thread; |
43 | unsigned long pad1; | 46 | unsigned long pad1; |
44 | }; | 47 | }; |
45 | extern struct global_reg_snapshot global_reg_snapshot[NR_CPUS]; | ||
46 | 48 | ||
47 | #define force_successful_syscall_return() \ | 49 | struct global_pmu_snapshot { |
48 | do { current_thread_info()->syscall_noerror = 1; \ | 50 | unsigned long pcr[4]; |
49 | } while (0) | 51 | unsigned long pic[4]; |
52 | }; | ||
53 | |||
54 | union global_cpu_snapshot { | ||
55 | struct global_reg_snapshot reg; | ||
56 | struct global_pmu_snapshot pmu; | ||
57 | }; | ||
58 | |||
59 | extern union global_cpu_snapshot global_cpu_snapshot[NR_CPUS]; | ||
60 | |||
61 | #define force_successful_syscall_return() set_thread_noerror(1) | ||
50 | #define user_mode(regs) (!((regs)->tstate & TSTATE_PRIV)) | 62 | #define user_mode(regs) (!((regs)->tstate & TSTATE_PRIV)) |
51 | #define instruction_pointer(regs) ((regs)->tpc) | 63 | #define instruction_pointer(regs) ((regs)->tpc) |
52 | #define instruction_pointer_set(regs, val) ((regs)->tpc = (val)) | 64 | #define instruction_pointer_set(regs, val) ((regs)->tpc = (val)) |
@@ -89,6 +101,9 @@ static inline bool pt_regs_clear_syscall(struct pt_regs *regs) | |||
89 | #define arch_ptrace_stop(exit_code, info) \ | 101 | #define arch_ptrace_stop(exit_code, info) \ |
90 | synchronize_user_stack() | 102 | synchronize_user_stack() |
91 | 103 | ||
104 | #define current_pt_regs() \ | ||
105 | ((struct pt_regs *)((unsigned long)current_thread_info() + THREAD_SIZE) - 1) | ||
106 | |||
92 | #define user_mode(regs) (!((regs)->psr & PSR_PS)) | 107 | #define user_mode(regs) (!((regs)->psr & PSR_PS)) |
93 | #define instruction_pointer(regs) ((regs)->pc) | 108 | #define instruction_pointer(regs) ((regs)->pc) |
94 | #define user_stack_pointer(regs) ((regs)->u_regs[UREG_FP]) | 109 | #define user_stack_pointer(regs) ((regs)->u_regs[UREG_FP]) |