xref: /csrg-svn/sys/i386/include/pcb.h (revision 49523)
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*49523Swilliam  *	@(#)pcb.h	5.9 (Berkeley) 05/09/91
1141058Swilliam  */
1241058Swilliam 
1340463Sbill /*
1440463Sbill  * Intel 386 process control block
1540463Sbill  */
1649520Swilliam #include "machine/tss.h"
1749520Swilliam #include "machine/npx.h"
1840463Sbill 
1940463Sbill struct pcb {
20*49523Swilliam 	struct	i386tss pcb_tss;
21*49523Swilliam #define	pcb_ksp	pcb_tss.tss_esp0
22*49523Swilliam #define	pcb_ptd	pcb_tss.tss_cr3
2345964Swilliam #define	pcb_cr3	pcb_ptd
24*49523Swilliam #define	pcb_pc	pcb_tss.tss_eip
25*49523Swilliam #define	pcb_psl	pcb_tss.tss_eflags
26*49523Swilliam #define	pcb_usp	pcb_tss.tss_esp
27*49523Swilliam #define	pcb_fp	pcb_tss.tss_ebp
28*49523Swilliam #ifdef	notyet
29*49523Swilliam 	u_char	pcb_iomap[NPORT/sizeof(u_char)]; /* i/o port bitmap */
30*49523Swilliam #endif
31*49523Swilliam 	struct	save87	pcb_savefpu;	/* floating point state for 287/387 */
32*49523Swilliam 	struct	emcsts	pcb_saveemc;	/* Cyrix EMC state */
3340463Sbill /*
3440463Sbill  * Software pcb (extension)
3540463Sbill  */
3645964Swilliam 	int	pcb_flags;
37*49523Swilliam #define	FP_WASUSED	0x01	/* floating point has been used in this proc */
38*49523Swilliam #define	FP_NEEDSSAVE	0x02	/* needs save on next context switch */
39*49523Swilliam #define	FP_NEEDSRESTORE	0x04	/* need restore on next DNA fault */
40*49523Swilliam #define	FP_USESEMC	0x08	/* process uses EMC memory-mapped mode */
41*49523Swilliam #define	FM_TRAP		0x10	/* process entered kernel on a trap frame */
42*49523Swilliam 	short	pcb_iml;	/* interrupt mask level */
43*49523Swilliam 	caddr_t	pcb_onfault;	/* copyin/out fault recovery */
44*49523Swilliam 	long	pcb_sigc[8];	/* XXX signal code trampoline */
45*49523Swilliam 	int	pcb_cmap2;	/* XXX temporary PTE - will prefault instead */
4640463Sbill };
47*49523Swilliam 
48*49523Swilliam struct pcb *curpcb;		/* our current running pcb */
49