1#ifndef _PARISC_PTRACE_H
2#define _PARISC_PTRACE_H
3
4
5
6
7
8#include <linux/types.h>
9
10
11
12
13
14
15
16
17
18struct pt_regs {
19 unsigned long gr[32];
20 __u64 fr[32];
21 unsigned long sr[ 8];
22 unsigned long iasq[2];
23 unsigned long iaoq[2];
24 unsigned long cr27;
25 unsigned long pad0;
26 unsigned long orig_r28;
27 unsigned long ksp;
28 unsigned long kpc;
29 unsigned long sar;
30 unsigned long iir;
31 unsigned long isr;
32 unsigned long ior;
33 unsigned long ipsw;
34};
35
36
37
38
39
40
41
42
43
44#define PTRACE_SINGLEBLOCK 12
45
46#ifdef __KERNEL__
47
48#define task_regs(task) ((struct pt_regs *) ((char *)(task) + TASK_REGS))
49
50struct task_struct;
51#define arch_has_single_step() 1
52void user_disable_single_step(struct task_struct *task);
53void user_enable_single_step(struct task_struct *task);
54
55#define arch_has_block_step() 1
56void user_enable_block_step(struct task_struct *task);
57
58
59#define user_mode(regs) (((regs)->iaoq[0] & 3) ? 1 : 0)
60#define user_space(regs) (((regs)->iasq[1] != 0) ? 1 : 0)
61#define instruction_pointer(regs) ((regs)->iaoq[0] & ~3)
62unsigned long profile_pc(struct pt_regs *);
63extern void show_regs(struct pt_regs *);
64#endif
65
66#endif
67