frame.h revision 1.12 1 /* $NetBSD: frame.h,v 1.12 2003/11/23 23:13:11 uwe Exp $ */
2
3 /*-
4 * Copyright (c) 1990 The Regents of the University of California.
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to Berkeley by
8 * William Jolitz.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 * 3. Neither the name of the University nor the names of its contributors
19 * may be used to endorse or promote products derived from this software
20 * without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 *
34 * @(#)frame.h 5.2 (Berkeley) 1/18/91
35 */
36
37 /*-
38 * Copyright (c) 2002 The NetBSD Foundation, Inc. All rights reserved.
39 * Copyright (c) 1995 Charles M. Hannum. All rights reserved.
40 *
41 * This code is derived from software contributed to Berkeley by
42 * William Jolitz.
43 *
44 * Redistribution and use in source and binary forms, with or without
45 * modification, are permitted provided that the following conditions
46 * are met:
47 * 1. Redistributions of source code must retain the above copyright
48 * notice, this list of conditions and the following disclaimer.
49 * 2. Redistributions in binary form must reproduce the above copyright
50 * notice, this list of conditions and the following disclaimer in the
51 * documentation and/or other materials provided with the distribution.
52 * 3. All advertising materials mentioning features or use of this software
53 * must display the following acknowledgement:
54 * This product includes software developed by the University of
55 * California, Berkeley and its contributors.
56 * 4. Neither the name of the University nor the names of its contributors
57 * may be used to endorse or promote products derived from this software
58 * without specific prior written permission.
59 *
60 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
61 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
62 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
63 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
64 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
65 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
66 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
67 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
68 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
69 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
70 * SUCH DAMAGE.
71 *
72 * @(#)frame.h 5.2 (Berkeley) 1/18/91
73 */
74
75 #ifndef _SH3_FRAME_H_
76 #define _SH3_FRAME_H_
77
78 #include <sys/signal.h>
79 #include <sys/sa.h>
80
81 /*
82 * Exception Stack Frame
83 */
84 struct trapframe {
85 /* software member */
86 int tf_expevt;
87 int tf_ubc;
88 /* hardware registers */
89 int tf_spc;
90 int tf_ssr;
91 int tf_macl;
92 int tf_mach;
93 int tf_pr;
94 int tf_r13;
95 int tf_r12;
96 int tf_r11;
97 int tf_r10;
98 int tf_r9;
99 int tf_r8;
100 int tf_r7;
101 int tf_r6;
102 int tf_r5;
103 int tf_r4;
104 int tf_r3;
105 int tf_r2;
106 int tf_r1;
107 int tf_r0;
108 int tf_r15;
109 int tf_r14;
110 };
111
112 /*
113 * Stack frame inside cpu_switch()
114 */
115 struct switchframe {
116 int sf_r15;
117 int sf_r14;
118 int sf_r13;
119 int sf_r12;
120 int sf_r11;
121 int sf_r10;
122 int sf_r9;
123 int sf_r8;
124 int sf_pr;
125 int sf_r6_bank;
126 int sf_sr;
127 int sf_r7_bank;
128 };
129
130 /*
131 * Signal frame.
132 *
133 * NB: The order of sf_uc and sf_si is different from what other ports
134 * use (siginfo at the top of the stack), because we want to avoid
135 * wasting two instructions in __sigtramp_siginfo_2 to skip to the
136 * ucontext. Not that this order really matters, but I think this
137 * inconsistency deserves an explanation.
138 */
139 struct sigframe_siginfo {
140 #if 0 /* in registers on entry to signal trampoline */
141 int sf_signum; /* r4 - "signum" argument for handler */
142 siginfo_t *sf_sip; /* r5 - "sip" argument for handler */
143 ucontext_t *sf_ucp; /* r6 - "ucp" argument for handler */
144 #endif
145 ucontext_t sf_uc; /* actual saved ucontext */
146 siginfo_t sf_si; /* actual saved siginfo */
147 };
148
149 #if defined(COMPAT_16) && defined(_KERNEL)
150 /*
151 * Old signal frame format.
152 */
153 struct sigframe_sigcontext {
154 #if 0 /* in registers on entry to signal trampoline */
155 int sf_signum; /* r4 - "signum" argument for handler */
156 int sf_code; /* r5 - "code" argument for handler */
157 struct sigcontext *sf_scp; /* r6 - "scp" argument for handler */
158 #endif
159 struct sigcontext sf_sc; /* actual saved context */
160 };
161 #endif
162
163 /*
164 * Scheduler activations upcall frame
165 */
166 struct saframe {
167 #if 0 /* in registers on entry to upcallcode */
168 int sa_type; /* r4 */
169 struct sa_t ** sa_sas; /* r5 */
170 int sa_events; /* r6 */
171 int sa_interrupted; /* r7 */
172 #endif
173 void * sa_arg;
174 };
175
176 #endif /* !_SH3_FRAME_H_ */
177