|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: * Copyright (c) 1992 NeXT Computer, Inc.
24: *
25: * Intel386 Family: Segment descriptors.
26: *
27: * HISTORY
28: *
29: * 29 March 1992 ? at NeXT
30: * Created.
31: */
32:
33: /*
34: * Code segment descriptor.
35: */
36:
37: typedef struct code_desc {
38: unsigned short limit00;
39: unsigned short base00;
40: unsigned char base16;
41: unsigned char type :5,
42: #define DESC_CODE_EXEC 0x18
43: #define DESC_CODE_READ 0x1a
44: dpl :2,
45: present :1;
46: unsigned char limit16 :4,
47: :2,
48: opsz :1,
49: #define DESC_CODE_16B 0
50: #define DESC_CODE_32B 1
51: granular:1;
52: #define DESC_GRAN_BYTE 0
53: #define DESC_GRAN_PAGE 1
54: unsigned char base24;
55: } code_desc_t;
56:
57: /*
58: * Data segment descriptor.
59: */
60:
61: typedef struct data_desc {
62: unsigned short limit00;
63: unsigned short base00;
64: unsigned char base16;
65: unsigned char type :5,
66: #define DESC_DATA_RONLY 0x10
67: #define DESC_DATA_WRITE 0x12
68: dpl :2,
69: present :1;
70: unsigned char limit16 :4,
71: :2,
72: stksz :1,
73: #define DESC_DATA_16B 0
74: #define DESC_DATA_32B 1
75: granular:1;
76: unsigned char base24;
77: } data_desc_t;
78:
79: /*
80: * LDT segment descriptor.
81: */
82:
83: typedef struct ldt_desc {
84: unsigned short limit00;
85: unsigned short base00;
86: unsigned char base16;
87: unsigned char type :5,
88: #define DESC_LDT 0x02
89: :2,
90: present :1;
91: unsigned char limit16 :4,
92: :3,
93: granular:1;
94: unsigned char base24;
95: } ldt_desc_t;
96:
97: #import <architecture/i386/sel.h>
98:
99: /*
100: * Call gate descriptor.
101: */
102:
103: typedef struct call_gate {
104: unsigned short offset00;
105: sel_t seg;
106: unsigned int argcnt :5,
107: :3,
108: type :5,
109: #define DESC_CALL_GATE 0x0c
110: dpl :2,
111: present :1,
112: offset16:16;
113: } call_gate_t;
114:
115: /*
116: * Trap gate descriptor.
117: */
118:
119: typedef struct trap_gate {
120: unsigned short offset00;
121: sel_t seg;
122: unsigned int :8,
123: type :5,
124: #define DESC_TRAP_GATE 0x0f
125: dpl :2,
126: present :1,
127: offset16:16;
128: } trap_gate_t;
129:
130:
131: /*
132: * Interrupt gate descriptor.
133: */
134:
135: typedef struct intr_gate {
136: unsigned short offset00;
137: sel_t seg;
138: unsigned int :8,
139: type :5,
140: #define DESC_INTR_GATE 0x0e
141: dpl :2,
142: present :1,
143: offset16:16;
144: } intr_gate_t;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.