1/*	$NetBSD: tss.h,v 1.12 2018/07/07 21:35:16 kamil 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 *	@(#)tss.h	5.4 (Berkeley) 1/18/91
35 */
36
37#ifndef _I386_TSS_H_
38#define _I386_TSS_H_
39
40/*
41 * Intel 386 Context Data Type
42 */
43
44struct i386tss {
45	int	__tss_link;
46	int	tss_esp0; 	/* kernel stack pointer at privilege level 0 */
47	int	tss_ss0;	/* kernel stack segment at privilege level 0 */
48	int	__tss_esp1;
49	int	__tss_ss1;
50	int	__tss_esp2;
51	int	__tss_ss2;
52	int	tss_cr3;	/* page directory paddr */
53	int	__tss_eip;
54	int	__tss_eflags;
55	int	__tss_eax; 
56	int	__tss_ecx; 
57	int	__tss_edx; 
58	int	__tss_ebx; 
59	int	tss_esp;	/* saved stack pointer */
60	int	tss_ebp;	/* saved frame pointer */
61	int	__tss_esi; 
62	int	__tss_edi; 
63	int	__tss_es;
64	int	__tss_cs;
65	int	__tss_ss;
66	int	__tss_ds;
67	int	tss_fs;		/* saved segment register */
68	int	tss_gs;		/* saved segment register */
69	int	tss_ldt;	/* LDT selector */
70	int	tss_iobase;	/* options and I/O permission map offset */
71};
72
73/*
74 * I/O bitmap offset beyond TSS's segment limit means no bitmaps.
75 * (i.e. any I/O attempt generates an exception.)
76 */
77#define	IOMAP_INVALOFF	0xffffu
78
79/*
80 * If we have an I/O bitmap, there is only one valid offset.
81 */
82#define	IOMAP_VALIDOFF	sizeof(struct i386tss)
83
84#endif /* #ifndef _I386_TSS_H_ */