xref: /linux/arch/nios2/include/uapi/asm/ptrace.h (revision 4949009eb8d40a441dcddcd96e101e77d31cf1b2)
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 */
121