1 #ifndef _ASM_SCORE_PTRACE_H 2 #define _ASM_SCORE_PTRACE_H 3 4 #define PTRACE_GETREGS 12 5 #define PTRACE_SETREGS 13 6 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 17 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 */ 22 23 /* Define instruction mask */ 24 #define INSN32_MASK 0x80008000 25 26 #define J32 0x88008000 /* 1_00010_0000000000_1_000000000000000 */ 27 #define J32M 0xFC008000 /* 1_11111_0000000000_1_000000000000000 */ 28 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 37 38 #define B32_SET (J32 | B32 | BL32 | BR32 | BRL32) 39 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) 47 48 49 /* 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. 52 */ 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; 58 59 unsigned long regs[32]; 60 61 unsigned long cel; 62 unsigned long ceh; 63 64 unsigned long sr0; /* cnt */ 65 unsigned long sr1; /* lcr */ 66 unsigned long sr2; /* scr */ 67 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; 73 }; 74 75 #ifdef __KERNEL__ 76 77 struct task_struct; 78 79 /* 80 * Does the process account for user or for system time? 81 */ 82 #define user_mode(regs) ((regs->cp0_psr & 8) == 8) 83 84 #define instruction_pointer(regs) ((unsigned long)(regs)->cp0_epc) 85 #define profile_pc(regs) instruction_pointer(regs) 86 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 *); 91 92 #define arch_has_single_step() (1) 93 94 #endif /* __KERNEL__ */ 95 96 #endif /* _ASM_SCORE_PTRACE_H */ 97