xref: /original-bsd/sys/tahoe/include/pcb.h (revision 97bd5884)
1 /*-
2  * Copyright (c) 1988 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * This code is derived from software contributed to Berkeley by
6  * Computer Consoles Inc.
7  *
8  * %sccs.include.redist.c%
9  *
10  *	@(#)pcb.h	7.2 (Berkeley) 05/08/91
11  */
12 
13 /*
14  * TAHOE process control block
15  */
16 struct pcb {
17 	int	pcb_ksp; 	/* kernel stack pointer */
18 	int	pcb_usp; 	/* user stack pointer */
19 	int	pcb_r0;
20 	int	pcb_r1;
21 	int	pcb_r2;
22 	int	pcb_r3;
23 	int	pcb_r4;
24 	int	pcb_r5;
25 	int	pcb_r6;
26 	int	pcb_r7;
27 	int	pcb_r8;
28 	int	pcb_r9;
29 	int	pcb_r10;
30 	int	pcb_r11;
31 	int	pcb_r12;
32 	int	pcb_r13;
33 #define	pcb_fp pcb_r13
34 	int	pcb_pc; 	/* program counter */
35 	int	pcb_psl; 	/* program status longword */
36 	struct  pte *pcb_p0br; 	/* seg 0 base register */
37 	int	pcb_p0lr; 	/* seg 0 length register and astlevel */
38 	struct  pte *pcb_p1br; 	/* seg 1 base register */
39 	int	pcb_p1lr; 	/* seg 1 length register and pme */
40 	struct  pte *pcb_p2br; 	/* seg 2 base register */
41 	int	pcb_p2lr; 	/* seg 2 length register and pme */
42 	int	pcb_ach;	/* accumulator - high order longword */
43 	int	pcb_acl;	/* accumulator - low order longword */
44 #define ACH	pcb_ach
45 #define ACL	pcb_acl
46 	int	pcb_hfs;	/* fp status register */
47 /*
48  * Software pcb (extension)
49  */
50 	union {
51 		float 	*faddr;	/* address of single precision accumulator */
52 		double	*daddr; /* address of double precision accumulator */
53 	} pcb_savacc;
54 #define FSAVACC	pcb_savacc.faddr
55 #define DSAVACC pcb_savacc.daddr
56 	int	pcb_szpt; 	/* number of pages of user page table */
57 	int	pcb_cmap2;
58 	int	*pcb_sswap;
59 	long	pcb_sigc[5];	/* sigcode actually 19 bytes */
60 };
61 
62 extern long	*user_psl;
63 
64 #define	aston() { \
65 	u.u_pcb.pcb_psl |= PSL_SFE; \
66 	if ((int)user_psl != 0) \
67 		*user_psl |= PSL_SFE; \
68 }
69 
70 #define	astoff() { \
71 	u.u_pcb.pcb_psl &= ~ PSL_SFE; \
72 	if ((int)user_psl != 0) \
73 		*user_psl &= ~PSL_SFE; \
74 }
75