xref: /f-stack/freebsd/mips/include/frame.h (revision 22ce4aff)
1 /*	$OpenBSD: frame.h,v 1.3 1998/09/15 10:50:12 pefo Exp $ */
2 
3 /*-
4  * SPDX-License-Identifier: BSD-4-Clause
5  *
6  * Copyright (c) 1998 Per Fogelstrom, Opsycon AB
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  * 3. All advertising materials mentioning features or use of this software
17  *    must display the following acknowledgement:
18  *	This product includes software developed under OpenBSD by
19  *	Per Fogelstrom, Opsycon AB, Sweden.
20  * 4. The name of the author may not be used to endorse or promote products
21  *    derived from this software without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
24  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
25  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
27  * 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  *	JNPR: frame.h,v 1.6.2.1 2007/09/10 08:14:57 girish
36  * $FreeBSD$
37  *
38  */
39 #ifndef _MACHINE_FRAME_H_
40 #define	_MACHINE_FRAME_H_
41 
42 /* Note: This must also match regnum.h and regdef.h */
43 
44 struct trapframe {
45 	register_t	zero;
46 	register_t	ast;
47 	register_t	v0;
48 	register_t	v1;
49 	register_t	a0;
50 	register_t	a1;
51 	register_t	a2;
52 	register_t	a3;
53 #if defined(__mips_n32) || defined(__mips_n64)
54 	register_t	a4;
55 	register_t	a5;
56 	register_t	a6;
57 	register_t	a7;
58 	register_t	t0;
59 	register_t	t1;
60 	register_t	t2;
61 	register_t	t3;
62 #else
63 	register_t	t0;
64 	register_t	t1;
65 	register_t	t2;
66 	register_t	t3;
67 	register_t	t4;
68 	register_t	t5;
69 	register_t	t6;
70 	register_t	t7;
71 #endif
72 	register_t	s0;
73 	register_t	s1;
74 	register_t	s2;
75 	register_t	s3;
76 	register_t	s4;
77 	register_t	s5;
78 	register_t	s6;
79 	register_t	s7;
80 	register_t	t8;
81 	register_t	t9;
82 	register_t	k0;
83 	register_t	k1;
84 	register_t	gp;
85 	register_t	sp;
86 	register_t	s8;
87 	register_t	ra;
88 	register_t	sr;
89 	register_t	mullo;
90 	register_t	mulhi;
91 	register_t	badvaddr;
92 	register_t	cause;
93 	register_t	pc;
94 	/*
95 	 * FREEBSD_DEVELOPERS_FIXME:
96 	 * Include any other registers which are CPU-Specific and
97 	 * need to be part of the frame here.
98 	 *
99 	 * Also, be sure this matches what is defined in regnum.h
100 	 */
101 	register_t	ic;	/* RM7k and RM9k specific */
102 	register_t	dummy;	/* Alignment for 32-bit case */
103 
104 /* From here and on, only saved user processes. */
105 
106 	f_register_t	f0;
107 	f_register_t	f1;
108 	f_register_t	f2;
109 	f_register_t	f3;
110 	f_register_t	f4;
111 	f_register_t	f5;
112 	f_register_t	f6;
113 	f_register_t	f7;
114 	f_register_t	f8;
115 	f_register_t	f9;
116 	f_register_t	f10;
117 	f_register_t	f11;
118 	f_register_t	f12;
119 	f_register_t	f13;
120 	f_register_t	f14;
121 	f_register_t	f15;
122 	f_register_t	f16;
123 	f_register_t	f17;
124 	f_register_t	f18;
125 	f_register_t	f19;
126 	f_register_t	f20;
127 	f_register_t	f21;
128 	f_register_t	f22;
129 	f_register_t	f23;
130 	f_register_t	f24;
131 	f_register_t	f25;
132 	f_register_t	f26;
133 	f_register_t	f27;
134 	f_register_t	f28;
135 	f_register_t	f29;
136 	f_register_t	f30;
137 	f_register_t	f31;
138 	register_t	fsr;
139         register_t	fir;
140 };
141 
142 #endif	/* !_MACHINE_FRAME_H_ */
143