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