frame.h revision 1.14 1 /* $NetBSD: frame.h,v 1.14 2000/12/11 11:39:06 tron Exp $ */
2
3 /*-
4 * Copyright (c) 1998 The NetBSD Foundation, Inc.
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Charles M. Hannum.
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. All advertising materials mentioning features or use of this software
19 * must display the following acknowledgement:
20 * This product includes software developed by the NetBSD
21 * Foundation, Inc. and its contributors.
22 * 4. Neither the name of The NetBSD Foundation nor the names of its
23 * contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
27 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
28 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
30 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36 * POSSIBILITY OF SUCH DAMAGE.
37 */
38
39 /*-
40 * Copyright (c) 1990 The Regents of the University of California.
41 * All rights reserved.
42 *
43 * This code is derived from software contributed to Berkeley by
44 * William Jolitz.
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 * @(#)frame.h 5.2 (Berkeley) 1/18/91
75 */
76
77 #ifndef _I386_FRAME_H_
78 #define _I386_FRAME_H_
79
80 #include <sys/signal.h>
81
82 /*
83 * System stack frames.
84 */
85
86 /*
87 * Exception/Trap Stack Frame
88 */
89 struct trapframe {
90 int tf_es;
91 int tf_ds;
92 int tf_edi;
93 int tf_esi;
94 int tf_ebp;
95 int tf_ebx;
96 int tf_edx;
97 int tf_ecx;
98 int tf_eax;
99 int tf_trapno;
100 /* below portion defined in 386 hardware */
101 int tf_err;
102 int tf_eip;
103 int tf_cs;
104 int tf_eflags;
105 /* below used when transitting rings (e.g. user to kernel) */
106 int tf_esp;
107 int tf_ss;
108 /* below used when switching out of VM86 mode */
109 int tf_vm86_es;
110 int tf_vm86_ds;
111 int tf_vm86_fs;
112 int tf_vm86_gs;
113 };
114
115 /*
116 * Interrupt stack frame
117 */
118 struct intrframe {
119 int if_ppl;
120 int if_es;
121 int if_ds;
122 int if_edi;
123 int if_esi;
124 int if_ebp;
125 int if_ebx;
126 int if_edx;
127 int if_ecx;
128 int if_eax;
129 int :32; /* for compat with trap frame - trapno */
130 int :32; /* for compat with trap frame - err */
131 /* below portion defined in 386 hardware */
132 int if_eip;
133 int if_cs;
134 int if_eflags;
135 /* below only when transitting rings (e.g. user to kernel) */
136 int if_esp;
137 int if_ss;
138 };
139
140 /*
141 * Stack frame inside cpu_switch()
142 */
143 struct switchframe {
144 int sf_ppl;
145 int sf_edi;
146 int sf_esi;
147 int sf_ebx;
148 int sf_eip;
149 };
150
151 /*
152 * Signal frame
153 */
154 struct sigframe {
155 int sf_signum;
156 int sf_code;
157 struct sigcontext *sf_scp;
158 sig_t sf_handler;
159 struct sigcontext sf_sc;
160 };
161
162 #endif /* _I386_FRAME_H_ */
163