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 * @(#)pcb.h 5.3 (Berkeley) 11/14/90 11 */ 12 13 /* 14 * Intel 386 process control block 15 */ 16 #include "tss.h" 17 #include "../i386/npx.h" 18 19 struct pcb { 20 struct i386tss pcbtss; 21 #define pcb_ksp pcbtss.tss_esp0 22 #define pcb_ptd pcbtss.tss_cr3 23 #define pcb_pc pcbtss.tss_eip 24 #define pcb_psl pcbtss.tss_eflags 25 #define pcb_usp pcbtss.tss_esp 26 #define pcb_fp pcbtss.tss_ebp 27 /* 28 * Software pcb (extension) 29 */ 30 int pcb_fpsav; 31 #define FP_NEEDSAVE 0x1 /* need save on next context switch */ 32 #define FP_NEEDRESTORE 0x2 /* need restore on next DNA fault */ 33 #define FP_USESEMC 0x4 /* process uses EMC memory-mapped mode */ 34 struct save87 pcb_savefpu; 35 struct emcsts pcb_saveemc; 36 struct pte *pcb_p0br; 37 struct pte *pcb_p1br; 38 int pcb_p0lr; 39 int pcb_p1lr; 40 int pcb_szpt; /* number of pages of user page table */ 41 int pcb_cmap2; 42 int *pcb_sswap; 43 long pcb_sigc[8]; /* sigcode actually 19 bytes */ 44 int pcb_iml; /* interrupt mask level */ 45 }; 46