xref: /netbsd-src/sys/arch/mips/include/regnum.h (revision b1c86f5f087524e68db12794ee9c3e3da1ab17a0)
1 /*	$NetBSD: regnum.h,v 1.9 2009/12/14 00:46:05 matt Exp $	*/
2 
3 /*
4  * Copyright (c) 1992, 1993
5  *	The Regents of the University of California.  All rights reserved.
6  *
7  * This code is derived from software contributed to Berkeley by
8  * the Systems Programming Group of the University of Utah Computer
9  * Science Department and Ralph Campbell.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright
17  *    notice, this list of conditions and the following disclaimer in the
18  *    documentation and/or other materials provided with the distribution.
19  * 3. Neither the name of the University nor the names of its contributors
20  *    may be used to endorse or promote products derived from this software
21  *    without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33  * SUCH DAMAGE.
34  *
35  * from: Utah Hdr: reg.h 1.1 90/07/09
36  *
37  *	@(#)reg.h	8.2 (Berkeley) 1/11/94
38  */
39 /*
40  * Copyright (c) 1988 University of Utah.
41  *
42  * This code is derived from software contributed to Berkeley by
43  * the Systems Programming Group of the University of Utah Computer
44  * Science Department and Ralph Campbell.
45  *
46  * Redistribution and use in source and binary forms, with or without
47  * modification, are permitted provided that the following conditions
48  * are met:
49  * 1. Redistributions of source code must retain the above copyright
50  *    notice, this list of conditions and the following disclaimer.
51  * 2. Redistributions in binary form must reproduce the above copyright
52  *    notice, this list of conditions and the following disclaimer in the
53  *    documentation and/or other materials provided with the distribution.
54  * 3. All advertising materials mentioning features or use of this software
55  *    must display the following acknowledgement:
56  *	This product includes software developed by the University of
57  *	California, Berkeley and its contributors.
58  * 4. Neither the name of the University nor the names of its contributors
59  *    may be used to endorse or promote products derived from this software
60  *    without specific prior written permission.
61  *
62  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
63  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
64  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
65  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
66  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
67  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
68  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
69  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
70  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
71  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
72  * SUCH DAMAGE.
73  *
74  * from: Utah Hdr: reg.h 1.1 90/07/09
75  *
76  *	@(#)reg.h	8.2 (Berkeley) 1/11/94
77  */
78 
79 /*
80  * Location of the users' stored
81  * registers relative to ZERO.
82  * Usage is p->p_regs[XX].
83  */
84 #define _R_ZERO		0		/* hardware zero */
85 #define _R_AST		1		/* caller-saved */
86 #define _R_V0		2		/* caller-saved */
87 #define _R_V1		3		/* caller-saved */
88 #define _R_A0		4		/* caller-saved */
89 #define _R_A1		5		/* caller-saved */
90 #define _R_A2		6		/* caller-saved */
91 #define _R_A3		7		/* caller-saved */
92 #if defined(__mips_n32) || defined(__mips_n64)
93 #define _R_A4		8		/* caller-saved */
94 #define _R_A5		9		/* caller-saved */
95 #define _R_A6		10		/* caller-saved */
96 #define _R_A7		11		/* caller-saved */
97 #define _R_T0		12		/* caller-saved */
98 #define _R_T1		13		/* caller-saved */
99 #define _R_T2		14		/* caller-saved */
100 #define _R_T3		15		/* caller-saved */
101 #else
102 #define _R_T0		8		/* caller-saved */
103 #define _R_T1		9		/* caller-saved */
104 #define _R_T2		10		/* caller-saved */
105 #define _R_T3		11		/* caller-saved */
106 #define _R_T4		12		/* caller-saved */
107 #define _R_T5		13		/* caller-saved */
108 #define _R_T6		14		/* caller-saved */
109 #define _R_T7		15		/* caller-saved */
110 #endif /* __mips_n32 || __mips_n64 */
111 #define _R_S0		16		/* CALLEE-saved */
112 #define _R_S1		17		/* CALLEE-saved */
113 #define _R_S2		18		/* CALLEE-saved */
114 #define _R_S3		19		/* CALLEE-saved */
115 #define _R_S4		20		/* CALLEE-saved */
116 #define _R_S5		21		/* CALLEE-saved */
117 #define _R_S6		22		/* CALLEE-saved */
118 #define _R_S7		23		/* CALLEE-saved */
119 #define _R_T8		24		/* caller-saved */
120 #define _R_T9		25		/* caller-saved */
121 #define _R_K0		26		/* kernel reserved */
122 #define _R_K1		27		/* kernel reserved */
123 #define _R_GP		28		/* CALLEE-saved */
124 #define _R_SP		29		/* CALLEE-saved */
125 #define _R_S8		30		/* CALLEE-saved */
126 #define _R_RA		31		/* caller-saved */
127 #define	_R_SR		32
128 #define	_R_PS		_R_SR	/* alias for SR */
129 
130 /* See <mips/regdef.h> for an explanation. */
131 #if defined(__mips_n32) || defined(__mips_n64)
132 #define	_R_TA0		8
133 #define	_R_TA1		9
134 #define	_R_TA2		10
135 #define	_R_TA3		11
136 #else
137 #define	_R_TA0		12
138 #define	_R_TA1		13
139 #define	_R_TA2		14
140 #define	_R_TA3		15
141 #endif /* __mips_n32 || __mips_n64 */
142 
143 #define _R_MULLO	33
144 #define _R_MULHI	34
145 #define _R_BADVADDR	35
146 #define _R_CAUSE	36
147 #define	_R_PC		37
148 
149 #define _FPBASE	38
150 #define _R_F0		(_FPBASE+0)
151 #define _R_F1		(_FPBASE+1)
152 #define _R_F2		(_FPBASE+2)
153 #define _R_F3		(_FPBASE+3)
154 #define _R_F4		(_FPBASE+4)
155 #define _R_F5		(_FPBASE+5)
156 #define _R_F6		(_FPBASE+6)
157 #define _R_F7		(_FPBASE+7)
158 #define _R_F8		(_FPBASE+8)
159 #define _R_F9		(_FPBASE+9)
160 #define _R_F10		(_FPBASE+10)
161 #define _R_F11		(_FPBASE+11)
162 #define _R_F12		(_FPBASE+12)
163 #define _R_F13		(_FPBASE+13)
164 #define _R_F14		(_FPBASE+14)
165 #define _R_F15		(_FPBASE+15)
166 #define _R_F16		(_FPBASE+16)
167 #define _R_F17		(_FPBASE+17)
168 #define _R_F18		(_FPBASE+18)
169 #define _R_F19		(_FPBASE+19)
170 #define _R_F20		(_FPBASE+20)
171 #define _R_F21		(_FPBASE+21)
172 #define _R_F22		(_FPBASE+22)
173 #define _R_F23		(_FPBASE+23)
174 #define _R_F24		(_FPBASE+24)
175 #define _R_F25		(_FPBASE+25)
176 #define _R_F26		(_FPBASE+26)
177 #define _R_F27		(_FPBASE+27)
178 #define _R_F28		(_FPBASE+28)
179 #define _R_F29		(_FPBASE+29)
180 #define _R_F30		(_FPBASE+30)
181 #define _R_F31		(_FPBASE+31)
182 #define	_R_FSR		(_FPBASE+32)
183