1#ifndef _UAPI_ASM_SCORE_PTRACE_H
2#define _UAPI_ASM_SCORE_PTRACE_H
3
4#define PTRACE_GETREGS		12
5#define PTRACE_SETREGS		13
6
7#define SINGLESTEP16_INSN	0x7006
8#define SINGLESTEP32_INSN	0x840C8000
9#define BREAKPOINT16_INSN	0x7002		/* work on SPG300 */
10#define BREAKPOINT32_INSN	0x84048000	/* work on SPG300 */
11
12/* Define instruction mask */
13#define INSN32_MASK	0x80008000
14
15#define J32	0x88008000	/* 1_00010_0000000000_1_000000000000000 */
16#define J32M	0xFC008000	/* 1_11111_0000000000_1_000000000000000 */
17
18#define B32	0x90008000	/* 1_00100_0000000000_1_000000000000000 */
19#define B32M	0xFC008000
20#define BL32	0x90008001	/* 1_00100_0000000000_1_000000000000001 */
21#define BL32M	B32
22#define BR32	0x80008008	/* 1_00000_0000000000_1_00000000_000100_0 */
23#define BR32M	0xFFE0807E
24#define BRL32	0x80008009	/* 1_00000_0000000000_1_00000000_000100_1 */
25#define BRL32M	BR32M
26
27#define B32_SET	(J32 | B32 | BL32 | BR32 | BRL32)
28
29#define J16	0x3000		/* 0_011_....... */
30#define J16M	0xF000
31#define B16	0x4000		/* 0_100_....... */
32#define B16M	0xF000
33#define BR16	0x0004		/* 0_000.......0100 */
34#define BR16M	0xF00F
35#define B16_SET (J16 | B16 | BR16)
36
37
38/*
39 * This struct defines the way the registers are stored on the stack during a
40 * system call/exception. As usual the registers k0/k1 aren't being saved.
41 */
42struct pt_regs {
43	unsigned long pad0[6];	/* stack arguments */
44	unsigned long orig_r4;
45	unsigned long orig_r7;
46	long is_syscall;
47
48	unsigned long regs[32];
49
50	unsigned long cel;
51	unsigned long ceh;
52
53	unsigned long sr0;	/* cnt */
54	unsigned long sr1;	/* lcr */
55	unsigned long sr2;	/* scr */
56
57	unsigned long cp0_epc;
58	unsigned long cp0_ema;
59	unsigned long cp0_psr;
60	unsigned long cp0_ecr;
61	unsigned long cp0_condition;
62};
63
64
65#endif /* _UAPI_ASM_SCORE_PTRACE_H */
66