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 * 846006Swilliam * %sccs.include.redist.c% 941058Swilliam * 10*56512Sbostic * @(#)pcb.h 5.11 (Berkeley) 10/11/92 1141058Swilliam */ 1241058Swilliam 1340463Sbill /* 1440463Sbill * Intel 386 process control block 1540463Sbill */ 16*56512Sbostic #include <machine/tss.h> 17*56512Sbostic #include <machine/npx.h> 1840463Sbill 1940463Sbill struct pcb { 2049523Swilliam struct i386tss pcb_tss; 2149523Swilliam #define pcb_ksp pcb_tss.tss_esp0 2249523Swilliam #define pcb_ptd pcb_tss.tss_cr3 2345964Swilliam #define pcb_cr3 pcb_ptd 2449523Swilliam #define pcb_pc pcb_tss.tss_eip 2549523Swilliam #define pcb_psl pcb_tss.tss_eflags 2649523Swilliam #define pcb_usp pcb_tss.tss_esp 2749523Swilliam #define pcb_fp pcb_tss.tss_ebp 2849523Swilliam #ifdef notyet 2949523Swilliam u_char pcb_iomap[NPORT/sizeof(u_char)]; /* i/o port bitmap */ 3049523Swilliam #endif 3149523Swilliam struct save87 pcb_savefpu; /* floating point state for 287/387 */ 3249523Swilliam struct emcsts pcb_saveemc; /* Cyrix EMC state */ 3340463Sbill /* 3440463Sbill * Software pcb (extension) 3540463Sbill */ 3645964Swilliam int pcb_flags; 3749523Swilliam #define FP_WASUSED 0x01 /* floating point has been used in this proc */ 3849523Swilliam #define FP_NEEDSSAVE 0x02 /* needs save on next context switch */ 3949523Swilliam #define FP_NEEDSRESTORE 0x04 /* need restore on next DNA fault */ 4049523Swilliam #define FP_USESEMC 0x08 /* process uses EMC memory-mapped mode */ 4149523Swilliam #define FM_TRAP 0x10 /* process entered kernel on a trap frame */ 4249523Swilliam short pcb_iml; /* interrupt mask level */ 4349523Swilliam caddr_t pcb_onfault; /* copyin/out fault recovery */ 4449523Swilliam long pcb_sigc[8]; /* XXX signal code trampoline */ 4549523Swilliam int pcb_cmap2; /* XXX temporary PTE - will prefault instead */ 4640463Sbill }; 4749523Swilliam 4849701Swilliam #ifdef KERNEL 4949523Swilliam struct pcb *curpcb; /* our current running pcb */ 5049701Swilliam #endif 51