1 /*- 2 * Copyright (c) 1990 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * William Jolitz. 7 * 8 * %sccs.include.noredist.c% 9 * 10 * @(#)tss.h 5.2 (Berkeley) 11/14/90 11 */ 12 13 /* 14 * Intel 386 Context Data Type 15 */ 16 17 18 struct i386tss { 19 long tss_link; /* actually 16 bits: top 16 bits must be zero */ 20 long tss_esp0; /* kernel stack pointer priviledge level 0 */ 21 #define tss_ksp tss_esp0 22 long tss_ss0; /* actually 16 bits: top 16 bits must be zero */ 23 long tss_esp1; /* kernel stack pointer priviledge level 1 */ 24 long tss_ss1; /* actually 16 bits: top 16 bits must be zero */ 25 long tss_esp2; /* kernel stack pointer priviledge level 2 */ 26 long tss_ss2; /* actually 16 bits: top 16 bits must be zero */ 27 long tss_cr3; /* page table directory physical address */ 28 #define tss_ptd tss_cr3 29 long tss_eip; /* program counter */ 30 #define tss_pc tss_eip 31 long tss_eflags; /* program status longword */ 32 #define tss_psl tss_eflags 33 long tss_eax; 34 long tss_ecx; 35 long tss_edx; 36 long tss_ebx; 37 long tss_esp; /* user stack pointer */ 38 #define tss_usp tss_esp 39 long tss_ebp; /* user frame pointer */ 40 #define tss_fp tss_ebp 41 long tss_esi; 42 long tss_edi; 43 long tss_es; /* actually 16 bits: top 16 bits must be zero */ 44 long tss_cs; /* actually 16 bits: top 16 bits must be zero */ 45 long tss_ss; /* actually 16 bits: top 16 bits must be zero */ 46 long tss_ds; /* actually 16 bits: top 16 bits must be zero */ 47 long tss_fs; /* actually 16 bits: top 16 bits must be zero */ 48 long tss_gs; /* actually 16 bits: top 16 bits must be zero */ 49 long tss_ldt; /* actually 16 bits: top 16 bits must be zero */ 50 long tss_ioopt; /* options & io offset bitmap: currently zero */ 51 /* XXX unimplemented .. i/o permission bitmap */ 52 }; 53