First Support on Ginger and OMAP TI
[linux-ginger.git] / arch / score / include / asm / ptrace.h
blobd40e691f23e2a7b9b1e325940a9d797173b7d865
1 #ifndef _ASM_SCORE_PTRACE_H
2 #define _ASM_SCORE_PTRACE_H
4 #define PTRACE_GETREGS 12
5 #define PTRACE_SETREGS 13
7 #define PC 32
8 #define CONDITION 33
9 #define ECR 34
10 #define EMA 35
11 #define CEH 36
12 #define CEL 37
13 #define COUNTER 38
14 #define LDCR 39
15 #define STCR 40
16 #define PSR 41
18 #define SINGLESTEP16_INSN 0x7006
19 #define SINGLESTEP32_INSN 0x840C8000
20 #define BREAKPOINT16_INSN 0x7002 /* work on SPG300 */
21 #define BREAKPOINT32_INSN 0x84048000 /* work on SPG300 */
23 /* Define instruction mask */
24 #define INSN32_MASK 0x80008000
26 #define J32 0x88008000 /* 1_00010_0000000000_1_000000000000000 */
27 #define J32M 0xFC008000 /* 1_11111_0000000000_1_000000000000000 */
29 #define B32 0x90008000 /* 1_00100_0000000000_1_000000000000000 */
30 #define B32M 0xFC008000
31 #define BL32 0x90008001 /* 1_00100_0000000000_1_000000000000001 */
32 #define BL32M B32
33 #define BR32 0x80008008 /* 1_00000_0000000000_1_00000000_000100_0 */
34 #define BR32M 0xFFE0807E
35 #define BRL32 0x80008009 /* 1_00000_0000000000_1_00000000_000100_1 */
36 #define BRL32M BR32M
38 #define B32_SET (J32 | B32 | BL32 | BR32 | BRL32)
40 #define J16 0x3000 /* 0_011_....... */
41 #define J16M 0xF000
42 #define B16 0x4000 /* 0_100_....... */
43 #define B16M 0xF000
44 #define BR16 0x0004 /* 0_000.......0100 */
45 #define BR16M 0xF00F
46 #define B16_SET (J16 | B16 | BR16)
50 * This struct defines the way the registers are stored on the stack during a
51 * system call/exception. As usual the registers k0/k1 aren't being saved.
53 struct pt_regs {
54 unsigned long pad0[6]; /* stack arguments */
55 unsigned long orig_r4;
56 unsigned long orig_r7;
57 long is_syscall;
59 unsigned long regs[32];
61 unsigned long cel;
62 unsigned long ceh;
64 unsigned long sr0; /* cnt */
65 unsigned long sr1; /* lcr */
66 unsigned long sr2; /* scr */
68 unsigned long cp0_epc;
69 unsigned long cp0_ema;
70 unsigned long cp0_psr;
71 unsigned long cp0_ecr;
72 unsigned long cp0_condition;
75 #ifdef __KERNEL__
77 struct task_struct;
80 * Does the process account for user or for system time?
82 #define user_mode(regs) ((regs->cp0_psr & 8) == 8)
84 #define instruction_pointer(regs) ((unsigned long)(regs)->cp0_epc)
85 #define profile_pc(regs) instruction_pointer(regs)
87 extern void do_syscall_trace(struct pt_regs *regs, int entryexit);
88 extern int read_tsk_long(struct task_struct *, unsigned long, unsigned long *);
89 extern int read_tsk_short(struct task_struct *, unsigned long,
90 unsigned short *);
92 #define arch_has_single_step() (1)
93 extern void user_enable_single_step(struct task_struct *);
94 extern void user_disable_single_step(struct task_struct *);
95 #endif /* __KERNEL__ */
97 #endif /* _ASM_SCORE_PTRACE_H */