xref: /original-bsd/sys/i386/include/pcb.h (revision 333da485)
1 /*-
2  * Copyright (c) 1993
3  *	The Regents of the University of California.  All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * William Jolitz.
7  *
8  * %sccs.include.redist.c%
9  *
10  *	@(#)pcb.h	8.2 (Berkeley) 01/21/94
11  */
12 
13 /*
14  * Intel 386 process control block
15  */
16 #include <machine/tss.h>
17 #include <machine/npx.h>
18 
19 struct pcb {
20 	struct	i386tss pcb_tss;
21 #define	pcb_ksp	pcb_tss.tss_esp0
22 #define	pcb_ptd	pcb_tss.tss_cr3
23 #define	pcb_cr3	pcb_ptd
24 #define	pcb_pc	pcb_tss.tss_eip
25 #define	pcb_psl	pcb_tss.tss_eflags
26 #define	pcb_usp	pcb_tss.tss_esp
27 #define	pcb_fp	pcb_tss.tss_ebp
28 #ifdef	notyet
29 	u_char	pcb_iomap[NPORT/sizeof(u_char)]; /* i/o port bitmap */
30 #endif
31 	struct	save87	pcb_savefpu;	/* floating point state for 287/387 */
32 	struct	emcsts	pcb_saveemc;	/* Cyrix EMC state */
33 /*
34  * Software pcb (extension)
35  */
36 	int	pcb_flags;
37 #define	FP_WASUSED	0x01	/* floating point has been used in this proc */
38 #define	FP_NEEDSSAVE	0x02	/* needs save on next context switch */
39 #define	FP_NEEDSRESTORE	0x04	/* need restore on next DNA fault */
40 #define	FP_USESEMC	0x08	/* process uses EMC memory-mapped mode */
41 #define	FM_TRAP		0x10	/* process entered kernel on a trap frame */
42 	short	pcb_iml;	/* interrupt mask level */
43 	caddr_t	pcb_onfault;	/* copyin/out fault recovery */
44 	long	pcb_sigc[8];	/* XXX signal code trampoline */
45 	int	pcb_cmap2;	/* XXX temporary PTE - will prefault instead */
46 };
47 
48 /*
49  * The pcb is augmented with machine-dependent additional data for
50  * core dumps. For the i386: ???
51  */
52 struct md_coredump {
53         int     pad;		/* XXX? -- cgd */
54 };
55 
56 #ifdef KERNEL
57 struct pcb *curpcb;		/* our current running pcb */
58 #endif
59