141058Swilliam /*- 241058Swilliam * Copyright (c) 1990 The Regents of the University of California. 341058Swilliam * All rights reserved. 441058Swilliam * 541058Swilliam * This code is derived from software contributed to Berkeley by 641058Swilliam * William Jolitz. 741058Swilliam * 841058Swilliam * %sccs.include.noredist.c% 941058Swilliam * 10*45964Swilliam * @(#)tss.h 5.3 (Berkeley) 01/15/91 1141058Swilliam */ 1241058Swilliam 1340472Sbill /* 1440472Sbill * Intel 386 Context Data Type 1540472Sbill */ 1640472Sbill 1740472Sbill struct i386tss { 18*45964Swilliam int tss_link; /* actually 16 bits: top 16 bits must be zero */ 19*45964Swilliam int tss_esp0; /* kernel stack pointer priviledge level 0 */ 2040472Sbill #define tss_ksp tss_esp0 21*45964Swilliam int tss_ss0; /* actually 16 bits: top 16 bits must be zero */ 22*45964Swilliam int tss_esp1; /* kernel stack pointer priviledge level 1 */ 23*45964Swilliam int tss_ss1; /* actually 16 bits: top 16 bits must be zero */ 24*45964Swilliam int tss_esp2; /* kernel stack pointer priviledge level 2 */ 25*45964Swilliam int tss_ss2; /* actually 16 bits: top 16 bits must be zero */ 26*45964Swilliam /* struct ptd *tss_cr3; /* page table directory */ 27*45964Swilliam int tss_cr3; /* page table directory */ 2840472Sbill #define tss_ptd tss_cr3 29*45964Swilliam int tss_eip; /* program counter */ 3040472Sbill #define tss_pc tss_eip 31*45964Swilliam int tss_eflags; /* program status longword */ 3240472Sbill #define tss_psl tss_eflags 33*45964Swilliam int tss_eax; 34*45964Swilliam int tss_ecx; 35*45964Swilliam int tss_edx; 36*45964Swilliam int tss_ebx; 37*45964Swilliam int tss_esp; /* user stack pointer */ 3840472Sbill #define tss_usp tss_esp 39*45964Swilliam int tss_ebp; /* user frame pointer */ 4040472Sbill #define tss_fp tss_ebp 41*45964Swilliam int tss_esi; 42*45964Swilliam int tss_edi; 43*45964Swilliam int tss_es; /* actually 16 bits: top 16 bits must be zero */ 44*45964Swilliam int tss_cs; /* actually 16 bits: top 16 bits must be zero */ 45*45964Swilliam int tss_ss; /* actually 16 bits: top 16 bits must be zero */ 46*45964Swilliam int tss_ds; /* actually 16 bits: top 16 bits must be zero */ 47*45964Swilliam int tss_fs; /* actually 16 bits: top 16 bits must be zero */ 48*45964Swilliam int tss_gs; /* actually 16 bits: top 16 bits must be zero */ 49*45964Swilliam int tss_ldt; /* actually 16 bits: top 16 bits must be zero */ 50*45964Swilliam int tss_ioopt; /* options & io offset bitmap: currently zero */ 5140472Sbill /* XXX unimplemented .. i/o permission bitmap */ 5240472Sbill }; 53