]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - sys/i386/include/frame.h
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / sys / i386 / include / frame.h
1 /*-
2  * Copyright (c) 1990 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * William Jolitz.
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  * 4. Neither the name of the University nor the names of its contributors
17  *    may be used to endorse or promote products derived from this software
18  *    without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30  * SUCH DAMAGE.
31  *
32  *      from: @(#)frame.h       5.2 (Berkeley) 1/18/91
33  * $FreeBSD$
34  */
35
36 #ifndef _MACHINE_FRAME_H_
37 #define _MACHINE_FRAME_H_ 1
38
39 /*
40  * System stack frames.
41  */
42
43 /*
44  * Exception/Trap Stack Frame
45  */
46
47 struct trapframe {
48         int     tf_fs;
49         int     tf_es;
50         int     tf_ds;
51         int     tf_edi;
52         int     tf_esi;
53         int     tf_ebp;
54         int     tf_isp;
55         int     tf_ebx;
56         int     tf_edx;
57         int     tf_ecx;
58         int     tf_eax;
59         int     tf_trapno;
60         /* below portion defined in 386 hardware */
61         int     tf_err;
62         int     tf_eip;
63         int     tf_cs;
64         int     tf_eflags;
65         /* below only when crossing rings (e.g. user to kernel) */
66         int     tf_esp;
67         int     tf_ss;
68 };
69
70 /* Superset of trap frame, for traps from virtual-8086 mode */
71
72 struct trapframe_vm86 {
73         int     tf_fs;
74         int     tf_es;
75         int     tf_ds;
76         int     tf_edi;
77         int     tf_esi;
78         int     tf_ebp;
79         int     tf_isp;
80         int     tf_ebx;
81         int     tf_edx;
82         int     tf_ecx;
83         int     tf_eax;
84         int     tf_trapno;
85         /* below portion defined in 386 hardware */
86         int     tf_err;
87         int     tf_eip;
88         int     tf_cs;
89         int     tf_eflags;
90         /* below only when crossing rings (e.g. user to kernel) */
91         int     tf_esp;
92         int     tf_ss;
93         /* below only when switching out of VM86 mode */
94         int     tf_vm86_es;
95         int     tf_vm86_ds;
96         int     tf_vm86_fs;
97         int     tf_vm86_gs;
98 };
99
100 #endif /* _MACHINE_FRAME_H_ */