1/* 2 * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23/* 24 * Copyright (c) 1992 NeXT Computer, Inc. 25 * 26 * Intel386 Family: Descriptor tables. 27 * 28 * HISTORY 29 * 30 * 30 March 1992 ? at NeXT 31 * Created. 32 */ 33 34#ifndef _ARCH_I386_TABLE_H_ 35#define _ARCH_I386_TABLE_H_ 36 37#include <architecture/i386/desc.h> 38#include <architecture/i386/tss.h> 39 40/* 41 * A totally generic descriptor 42 * table entry. 43 */ 44 45typedef union dt_entry { 46 code_desc_t code; 47 data_desc_t data; 48 ldt_desc_t ldt; 49 tss_desc_t task_state; 50 call_gate_t call_gate; 51 trap_gate_t trap_gate; 52 intr_gate_t intr_gate; 53 task_gate_t task_gate; 54} dt_entry_t; 55 56#define DESC_TBL_MAX 8192 57 58/* 59 * Global descriptor table. 60 */ 61 62typedef union gdt_entry { 63 code_desc_t code; 64 data_desc_t data; 65 ldt_desc_t ldt; 66 call_gate_t call_gate; 67 task_gate_t task_gate; 68 tss_desc_t task_state; 69} gdt_entry_t; 70 71typedef gdt_entry_t gdt_t; 72 73/* 74 * Interrupt descriptor table. 75 */ 76 77typedef union idt_entry { 78 trap_gate_t trap_gate; 79 intr_gate_t intr_gate; 80 task_gate_t task_gate; 81} idt_entry_t; 82 83typedef idt_entry_t idt_t; 84 85/* 86 * Local descriptor table. 87 */ 88 89typedef union ldt_entry { 90 code_desc_t code; 91 data_desc_t data; 92 call_gate_t call_gate; 93 task_gate_t task_gate; 94} ldt_entry_t; 95 96typedef ldt_entry_t ldt_t; 97 98#endif /* _ARCH_I386_TABLE_H_ */ 99