xref: /openbsd-src/sys/arch/mips64/include/frame.h (revision 4cab4d088292be52219d2bc81b319c8d49f72efd)
1*4cab4d08Svisa /*	$OpenBSD: frame.h,v 1.8 2021/04/29 12:49:19 visa Exp $ */
2f58c7388Spefo 
3f58c7388Spefo /*
4f58c7388Spefo  * Copyright (c) 1998-2003 Opsycon AB (www.opsycon.se)
5f58c7388Spefo  *
6f58c7388Spefo  * Redistribution and use in source and binary forms, with or without
7f58c7388Spefo  * modification, are permitted provided that the following conditions
8f58c7388Spefo  * are met:
9f58c7388Spefo  * 1. Redistributions of source code must retain the above copyright
10f58c7388Spefo  *    notice, this list of conditions and the following disclaimer.
11f58c7388Spefo  * 2. Redistributions in binary form must reproduce the above copyright
12f58c7388Spefo  *    notice, this list of conditions and the following disclaimer in the
13f58c7388Spefo  *    documentation and/or other materials provided with the distribution.
14f58c7388Spefo  *
15f58c7388Spefo  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
16f58c7388Spefo  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17f58c7388Spefo  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18f58c7388Spefo  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
19f58c7388Spefo  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20f58c7388Spefo  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21f58c7388Spefo  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22f58c7388Spefo  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23f58c7388Spefo  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24f58c7388Spefo  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25f58c7388Spefo  * SUCH DAMAGE.
26f58c7388Spefo  *
27f58c7388Spefo  */
28f58c7388Spefo #ifndef _MIPS64_FRAME_H_
29f58c7388Spefo #define	_MIPS64_FRAME_H_
30f58c7388Spefo 
31f58c7388Spefo /*
32f58c7388Spefo  *  The layout of this *must* match with regnum.h or bad things
33f58c7388Spefo  *  will happen. libc setjmp/longjmp depends on this as well.
34f58c7388Spefo  */
35b43ebd13Smpi struct trapframe {
36f58c7388Spefo 	register_t	zero;
37f58c7388Spefo 	register_t	ast;
38f58c7388Spefo 	register_t	v0;
39f58c7388Spefo 	register_t	v1;
40f58c7388Spefo 	register_t	a0;
41f58c7388Spefo 	register_t	a1;
42f58c7388Spefo 	register_t	a2;
43f58c7388Spefo 	register_t	a3;
44b37e871eSmiod 	register_t	a4; /* ta0 */
45b37e871eSmiod 	register_t	a5; /* ta1 */
46b37e871eSmiod 	register_t	a6; /* ta2 */
47b37e871eSmiod 	register_t	a7; /* ta3 */
48f58c7388Spefo 	register_t	t0;
49f58c7388Spefo 	register_t	t1;
50f58c7388Spefo 	register_t	t2;
51f58c7388Spefo 	register_t	t3;
52f58c7388Spefo 	register_t	s0;
53f58c7388Spefo 	register_t	s1;
54f58c7388Spefo 	register_t	s2;
55f58c7388Spefo 	register_t	s3;
56f58c7388Spefo 	register_t	s4;
57f58c7388Spefo 	register_t	s5;
58f58c7388Spefo 	register_t	s6;
59f58c7388Spefo 	register_t	s7;
60f58c7388Spefo 	register_t	t8;
61f58c7388Spefo 	register_t	t9;
62f58c7388Spefo 	register_t	k0;
63f58c7388Spefo 	register_t	k1;
64f58c7388Spefo 	register_t	gp;
65f58c7388Spefo 	register_t	sp;
66f58c7388Spefo 	register_t	s8;
67f58c7388Spefo 	register_t	ra;
68f58c7388Spefo 	register_t	sr;
69f58c7388Spefo 	register_t	mullo;
70f58c7388Spefo 	register_t	mulhi;
71f58c7388Spefo 	register_t	badvaddr;
72f58c7388Spefo 	register_t	cause;
73f58c7388Spefo 	register_t	pc;
74*4cab4d08Svisa 	register_t	ic; /* unused, was RM7000 ICR */
7591b9a95cSmiod 	register_t	ipl;
76f58c7388Spefo 
77f58c7388Spefo /* From here and on, only saved user processes. */
78f58c7388Spefo 
79f58c7388Spefo 	f_register_t	f0;
80f58c7388Spefo 	f_register_t	f1;
81f58c7388Spefo 	f_register_t	f2;
82f58c7388Spefo 	f_register_t	f3;
83f58c7388Spefo 	f_register_t	f4;
84f58c7388Spefo 	f_register_t	f5;
85f58c7388Spefo 	f_register_t	f6;
86f58c7388Spefo 	f_register_t	f7;
87f58c7388Spefo 	f_register_t	f8;
88f58c7388Spefo 	f_register_t	f9;
89f58c7388Spefo 	f_register_t	f10;
90f58c7388Spefo 	f_register_t	f11;
91f58c7388Spefo 	f_register_t	f12;
92f58c7388Spefo 	f_register_t	f13;
93f58c7388Spefo 	f_register_t	f14;
94f58c7388Spefo 	f_register_t	f15;
95f58c7388Spefo 	f_register_t	f16;
96f58c7388Spefo 	f_register_t	f17;
97f58c7388Spefo 	f_register_t	f18;
98f58c7388Spefo 	f_register_t	f19;
99f58c7388Spefo 	f_register_t	f20;
100f58c7388Spefo 	f_register_t	f21;
101f58c7388Spefo 	f_register_t	f22;
102f58c7388Spefo 	f_register_t	f23;
103f58c7388Spefo 	f_register_t	f24;
104f58c7388Spefo 	f_register_t	f25;
105f58c7388Spefo 	f_register_t	f26;
106f58c7388Spefo 	f_register_t	f27;
107f58c7388Spefo 	f_register_t	f28;
108f58c7388Spefo 	f_register_t	f29;
109f58c7388Spefo 	f_register_t	f30;
110f58c7388Spefo 	f_register_t	f31;
111f58c7388Spefo 	register_t	fsr;
112f58c7388Spefo };
113f58c7388Spefo 
114f58c7388Spefo #endif	/* !_MIPS64_FRAME_H_ */
115