linux/arch/score/include/asm/ptrace.h
<<
>>
Prefs
   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 */
  53struct 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
  77struct 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
  87extern void do_syscall_trace(struct pt_regs *regs, int entryexit);
  88extern int read_tsk_long(struct task_struct *, unsigned long, unsigned long *);
  89extern int read_tsk_short(struct task_struct *, unsigned long,
  90                         unsigned short *);
  91
  92#define arch_has_single_step()  (1)
  93extern void user_enable_single_step(struct task_struct *);
  94extern void user_disable_single_step(struct task_struct *);
  95#endif /* __KERNEL__ */
  96
  97#endif /* _ASM_SCORE_PTRACE_H */
  98