Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux...
[cascardo/linux.git] / arch / nios2 / include / uapi / asm / ptrace.h
1 /*
2  * Copyright (C) 2010 Tobias Klauser <tklauser@distanz.ch>
3  * Copyright (C) 2004 Microtronix Datacom Ltd
4  *
5  * based on m68k asm/processor.h
6  *
7  * This file is subject to the terms and conditions of the GNU General Public
8  * License.  See the file "COPYING" in the main directory of this archive
9  * for more details.
10  */
11
12 #ifndef _UAPI_ASM_NIOS2_PTRACE_H
13 #define _UAPI_ASM_NIOS2_PTRACE_H
14
15 #ifndef __ASSEMBLY__
16
17 /*
18  * Register numbers used by 'ptrace' system call interface.
19  */
20
21 /* GP registers */
22 #define PTR_R0          0
23 #define PTR_R1          1
24 #define PTR_R2          2
25 #define PTR_R3          3
26 #define PTR_R4          4
27 #define PTR_R5          5
28 #define PTR_R6          6
29 #define PTR_R7          7
30 #define PTR_R8          8
31 #define PTR_R9          9
32 #define PTR_R10         10
33 #define PTR_R11         11
34 #define PTR_R12         12
35 #define PTR_R13         13
36 #define PTR_R14         14
37 #define PTR_R15         15
38 #define PTR_R16         16
39 #define PTR_R17         17
40 #define PTR_R18         18
41 #define PTR_R19         19
42 #define PTR_R20         20
43 #define PTR_R21         21
44 #define PTR_R22         22
45 #define PTR_R23         23
46 #define PTR_R24         24
47 #define PTR_R25         25
48 #define PTR_GP          26
49 #define PTR_SP          27
50 #define PTR_FP          28
51 #define PTR_EA          29
52 #define PTR_BA          30
53 #define PTR_RA          31
54 /* Control registers */
55 #define PTR_PC          32
56 #define PTR_STATUS      33
57 #define PTR_ESTATUS     34
58 #define PTR_BSTATUS     35
59 #define PTR_IENABLE     36
60 #define PTR_IPENDING    37
61 #define PTR_CPUID       38
62 #define PTR_CTL6        39
63 #define PTR_CTL7        40
64 #define PTR_PTEADDR     41
65 #define PTR_TLBACC      42
66 #define PTR_TLBMISC     43
67
68 #define NUM_PTRACE_REG (PTR_TLBMISC + 1)
69
70 /* this struct defines the way the registers are stored on the
71    stack during a system call.
72
73    There is a fake_regs in setup.c that has to match pt_regs.*/
74
75 struct pt_regs {
76         unsigned long  r8;              /* r8-r15 Caller-saved GP registers */
77         unsigned long  r9;
78         unsigned long  r10;
79         unsigned long  r11;
80         unsigned long  r12;
81         unsigned long  r13;
82         unsigned long  r14;
83         unsigned long  r15;
84         unsigned long  r1;              /* Assembler temporary */
85         unsigned long  r2;              /* Retval LS 32bits */
86         unsigned long  r3;              /* Retval MS 32bits */
87         unsigned long  r4;              /* r4-r7 Register arguments */
88         unsigned long  r5;
89         unsigned long  r6;
90         unsigned long  r7;
91         unsigned long  orig_r2;         /* Copy of r2 ?? */
92         unsigned long  ra;              /* Return address */
93         unsigned long  fp;              /* Frame pointer */
94         unsigned long  sp;              /* Stack pointer */
95         unsigned long  gp;              /* Global pointer */
96         unsigned long  estatus;
97         unsigned long  ea;              /* Exception return address (pc) */
98         unsigned long  orig_r7;
99 };
100
101 /*
102  * This is the extended stack used by signal handlers and the context
103  * switcher: it's pushed after the normal "struct pt_regs".
104  */
105 struct switch_stack {
106         unsigned long  r16;             /* r16-r23 Callee-saved GP registers */
107         unsigned long  r17;
108         unsigned long  r18;
109         unsigned long  r19;
110         unsigned long  r20;
111         unsigned long  r21;
112         unsigned long  r22;
113         unsigned long  r23;
114         unsigned long  fp;
115         unsigned long  gp;
116         unsigned long  ra;
117 };
118
119 #endif /* __ASSEMBLY__ */
120 #endif /* _UAPI_ASM_NIOS2_PTRACE_H */