|
|
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: Task State Segment. ! 26: * ! 27: * HISTORY ! 28: * ! 29: * 29 March 1992 ? at NeXT ! 30: * Created. ! 31: */ ! 32: ! 33: #import <architecture/i386/sel.h> ! 34: ! 35: /* ! 36: * Task State segment. ! 37: */ ! 38: ! 39: typedef struct tss { ! 40: sel_t oldtss; ! 41: unsigned int :0; ! 42: unsigned int esp0; ! 43: sel_t ss0; ! 44: unsigned int :0; ! 45: unsigned int esp1; ! 46: sel_t ss1; ! 47: unsigned int :0; ! 48: unsigned int esp2; ! 49: sel_t ss2; ! 50: unsigned int :0; ! 51: unsigned int cr3; ! 52: unsigned int eip; ! 53: unsigned int eflags; ! 54: unsigned int eax; ! 55: unsigned int ecx; ! 56: unsigned int edx; ! 57: unsigned int ebx; ! 58: unsigned int esp; ! 59: unsigned int ebp; ! 60: unsigned int esi; ! 61: unsigned int edi; ! 62: sel_t es; ! 63: unsigned int :0; ! 64: sel_t cs; ! 65: unsigned int :0; ! 66: sel_t ss; ! 67: unsigned int :0; ! 68: sel_t ds; ! 69: unsigned int :0; ! 70: sel_t fs; ! 71: unsigned int :0; ! 72: sel_t gs; ! 73: unsigned int :0; ! 74: sel_t ldt; ! 75: unsigned int :0; ! 76: unsigned int t :1, ! 77: :15, ! 78: io_bmap :16; ! 79: } tss_t; ! 80: ! 81: #define TSS_SIZE(n) (sizeof (struct tss) + (n)) ! 82: ! 83: /* ! 84: * Task State segment descriptor. ! 85: */ ! 86: ! 87: typedef struct tss_desc { ! 88: unsigned short limit00; ! 89: unsigned short base00; ! 90: unsigned char base16; ! 91: unsigned char type :5, ! 92: #define DESC_TSS 0x09 ! 93: dpl :2, ! 94: present :1; ! 95: unsigned char limit16 :4, ! 96: :3, ! 97: granular:1; ! 98: unsigned char base24; ! 99: } tss_desc_t; ! 100: ! 101: /* ! 102: * Task gate descriptor. ! 103: */ ! 104: ! 105: typedef struct task_gate { ! 106: unsigned short :16; ! 107: sel_t tss; ! 108: unsigned int :8, ! 109: type :5, ! 110: #define DESC_TASK_GATE 0x05 ! 111: dpl :2, ! 112: present :1, ! 113: :0; ! 114: } task_gate_t;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.