Blame view

kernel/linux-rt-4.4.41/arch/cris/include/uapi/asm/ptrace_v32.h 3.1 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
  #ifndef _CRIS_ARCH_PTRACE_H
  #define _CRIS_ARCH_PTRACE_H
  
  /* Register numbers in the ptrace system call interface */
  
  #define PT_ORIG_R10  0
  #define PT_R0        1
  #define PT_R1        2
  #define PT_R2        3
  #define PT_R3        4
  #define PT_R4        5
  #define PT_R5        6
  #define PT_R6        7
  #define PT_R7        8
  #define PT_R8        9
  #define PT_R9        10
  #define PT_R10       11
  #define PT_R11       12
  #define PT_R12       13
  #define PT_R13       14
  #define PT_ACR       15
  #define PT_SRS       16
  #define PT_MOF       17
  #define PT_SPC       18
  #define PT_CCS       19
  #define PT_SRP       20
  #define PT_ERP       21    /* This is actually the debugged process' PC */
  #define PT_EXS       22
  #define PT_EDA       23
  #define PT_USP       24    /* special case - USP is not in the pt_regs */
  #define PT_PPC       25    /* special case - pseudo PC */
  #define PT_BP        26    /* Base number for BP registers. */
  #define PT_BP_CTRL   26    /* BP control register. */
  #define PT_MAX       40
  
  /* Condition code bit numbers. */
  #define C_CCS_BITNR 0
  #define V_CCS_BITNR 1
  #define Z_CCS_BITNR 2
  #define N_CCS_BITNR 3
  #define X_CCS_BITNR 4
  #define I_CCS_BITNR 5
  #define U_CCS_BITNR 6
  #define P_CCS_BITNR 7
  #define R_CCS_BITNR 8
  #define S_CCS_BITNR 9
  #define M_CCS_BITNR 30
  #define Q_CCS_BITNR 31
  #define CCS_SHIFT   10 /* Shift count for each level in CCS */
  
  /* pt_regs not only specifices the format in the user-struct during
   * ptrace but is also the frame format used in the kernel prologue/epilogues
   * themselves
   */
  
  struct pt_regs {
  	unsigned long orig_r10;
  	/* pushed by movem r13, [sp] in SAVE_ALL. */
  	unsigned long r0;
  	unsigned long r1;
  	unsigned long r2;
  	unsigned long r3;
  	unsigned long r4;
  	unsigned long r5;
  	unsigned long r6;
  	unsigned long r7;
  	unsigned long r8;
  	unsigned long r9;
  	unsigned long r10;
  	unsigned long r11;
  	unsigned long r12;
  	unsigned long r13;
  	unsigned long acr;
  	unsigned long srs;
  	unsigned long mof;
  	unsigned long spc;
  	unsigned long ccs;
  	unsigned long srp;
  	unsigned long erp; /* This is actually the debugged process' PC */
  	/* For debugging purposes; saved only when needed. */
  	unsigned long exs;
  	unsigned long eda;
  };
  
  /* switch_stack is the extra stuff pushed onto the stack in _resume (entry.S)
   * when doing a context-switch. it is used (apart from in resume) when a new
   * thread is made and we need to make _resume (which is starting it for the
   * first time) realise what is going on.
   *
   * Actually, the use is very close to the thread struct (TSS) in that both the
   * switch_stack and the TSS are used to keep thread stuff when switching in
   * _resume.
   */
  
  struct switch_stack {
  	unsigned long r0;
  	unsigned long r1;
  	unsigned long r2;
  	unsigned long r3;
  	unsigned long r4;
  	unsigned long r5;
  	unsigned long r6;
  	unsigned long r7;
  	unsigned long r8;
  	unsigned long r9;
  	unsigned long return_ip; /* ip that _resume will return to */
  };
  
  #ifdef __KERNEL__
  
  #define arch_has_single_step() (1)
  #define user_mode(regs) (((regs)->ccs & (1 << (U_CCS_BITNR + CCS_SHIFT))) != 0)
  #define instruction_pointer(regs) ((regs)->erp)
  #define profile_pc(regs) instruction_pointer(regs)
  
  #endif  /*  __KERNEL__  */
  
  #endif