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