Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / i386 / pcb.h @ 14

History | View | Annotate | Download (4.45 KB)

1 13 up20180614
/*        $NetBSD: pcb.h,v 1.54 2014/04/21 19:13:22 christos Exp $        */
2
3
/*-
4
 * Copyright (c) 1998, 2009 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, and by Andrew Doran.
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
 *
19
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
 * POSSIBILITY OF SUCH DAMAGE.
30
 */
31
32
/*-
33
 * Copyright (c) 1990 The Regents of the University of California.
34
 * All rights reserved.
35
 *
36
 * This code is derived from software contributed to Berkeley by
37
 * William Jolitz.
38
 *
39
 * Redistribution and use in source and binary forms, with or without
40
 * modification, are permitted provided that the following conditions
41
 * are met:
42
 * 1. Redistributions of source code must retain the above copyright
43
 *    notice, this list of conditions and the following disclaimer.
44
 * 2. Redistributions in binary form must reproduce the above copyright
45
 *    notice, this list of conditions and the following disclaimer in the
46
 *    documentation and/or other materials provided with the distribution.
47
 * 3. Neither the name of the University nor the names of its contributors
48
 *    may be used to endorse or promote products derived from this software
49
 *    without specific prior written permission.
50
 *
51
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
52
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
53
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
54
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
55
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
56
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
57
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
58
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
59
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
60
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
61
 * SUCH DAMAGE.
62
 *
63
 *        @(#)pcb.h        5.10 (Berkeley) 5/12/91
64
 */
65
66
/*
67
 * Intel 386 process control block
68
 */
69
70
#ifndef _I386_PCB_H_
71
#define _I386_PCB_H_
72
73
#if defined(_KERNEL_OPT)
74
#include "opt_multiprocessor.h"
75
#endif
76
77
#include <machine/segments.h>
78
#include <x86/cpu_extended_state.h>
79
80
struct pcb {
81
        int        pcb_esp0;                /* ring0 esp */
82
        int        pcb_esp;                /* kernel esp */
83
        int        pcb_ebp;                /* kernel ebp */
84
        int        pcb_cr0;                /* saved image of CR0 */
85
        int        pcb_cr2;                /* page fault address (CR2) */
86
        int        pcb_cr3;                /* page directory pointer */
87
        int        pcb_iopl;                /* i/o privilege level */
88
89
        struct segment_descriptor pcb_fsd;        /* %fs descriptor */
90
        struct segment_descriptor pcb_gsd;         /* %gs descriptor */
91
        void         *pcb_onfault;                /* copyin/out fault recovery */
92
        int        vm86_eflags;                /* virtual eflags for vm86 mode */
93
        int        vm86_flagmask;                /* flag mask for vm86 mode */
94
        void        *vm86_userp;                /* XXX performance hack */
95
        char        *pcb_iomap;                /* I/O permission bitmap */
96
97
        int        not_used[15];
98
99
        /* floating point state */
100
        struct cpu_info        *pcb_fpcpu;        /* cpu holding our fp state. */
101
        union savefpu        pcb_savefpu __aligned(64);
102
        /* **** DO NOT ADD ANYTHING HERE **** */
103
104
};
105
#ifndef __lint__
106
/* This doesn't really matter, but there is a lot of implied padding */
107
__CTASSERT(sizeof(struct pcb) - sizeof (union savefpu) == 128);
108
#endif
109
110
#endif /* _I386_PCB_H_ */