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