1*41058Swilliam /*- 2*41058Swilliam * Copyright (c) 1990 The Regents of the University of California. 3*41058Swilliam * All rights reserved. 4*41058Swilliam * 5*41058Swilliam * This code is derived from software contributed to Berkeley by 6*41058Swilliam * William Jolitz. 7*41058Swilliam * 8*41058Swilliam * %sccs.include.noredist.c% 9*41058Swilliam * 10*41058Swilliam * @(#)tss.h 5.1 (Berkeley) 04/24/90 11*41058Swilliam */ 12*41058Swilliam 1340472Sbill /* 1440472Sbill * Intel 386 Context Data Type 1540472Sbill */ 1640472Sbill 1740472Sbill 1840472Sbill struct i386tss { 1940472Sbill int tss_link; /* actually 16 bits: top 16 bits must be zero */ 2040472Sbill int tss_esp0; /* kernel stack pointer priviledge level 0 */ 2140472Sbill #define tss_ksp tss_esp0 2240472Sbill int tss_ss0; /* actually 16 bits: top 16 bits must be zero */ 2340472Sbill int tss_esp1; /* kernel stack pointer priviledge level 1 */ 2440472Sbill int tss_ss1; /* actually 16 bits: top 16 bits must be zero */ 2540472Sbill int tss_esp2; /* kernel stack pointer priviledge level 2 */ 2640472Sbill int tss_ss2; /* actually 16 bits: top 16 bits must be zero */ 2740472Sbill struct ptd *tss_cr3; /* page table directory */ 2840472Sbill #define tss_ptd tss_cr3 2940472Sbill int tss_eip; /* program counter */ 3040472Sbill #define tss_pc tss_eip 3140472Sbill int tss_eflags; /* program status longword */ 3240472Sbill #define tss_psl tss_eflags 3340472Sbill int tss_eax; 3440472Sbill int tss_ecx; 3540472Sbill int tss_edx; 3640472Sbill int tss_ebx; 3740472Sbill int tss_esp; /* user stack pointer */ 3840472Sbill #define tss_usp tss_esp 3940472Sbill int tss_ebp; /* user frame pointer */ 4040472Sbill #define tss_fp tss_ebp 4140472Sbill int tss_esi; 4240472Sbill int tss_edi; 4340472Sbill int tss_es; /* actually 16 bits: top 16 bits must be zero */ 4440472Sbill int tss_cs; /* actually 16 bits: top 16 bits must be zero */ 4540472Sbill int tss_ss; /* actually 16 bits: top 16 bits must be zero */ 4640472Sbill int tss_ds; /* actually 16 bits: top 16 bits must be zero */ 4740472Sbill int tss_fs; /* actually 16 bits: top 16 bits must be zero */ 4840472Sbill int tss_gs; /* actually 16 bits: top 16 bits must be zero */ 4940472Sbill int tss_ldt; /* actually 16 bits: top 16 bits must be zero */ 5040472Sbill int tss_ioopt; /* options & io offset bitmap: currently zero */ 5140472Sbill /* XXX unimplemented .. i/o permission bitmap */ 5240472Sbill }; 53