xref: /original-bsd/sys/vax/include/pcb.h (revision 7748387a)
1 /*-
2  * Copyright (c) 1982, 1986 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * %sccs.include.proprietary.c%
6  *
7  *	@(#)pcb.h	7.2 (Berkeley) 05/08/91
8  */
9 
10 /*
11  * VAX process control block
12  */
13 
14 struct pcb
15 {
16 	int	pcb_ksp; 	/* kernel stack pointer */
17 	int	pcb_esp; 	/* exec stack pointer */
18 	int	pcb_ssp; 	/* supervisor stack pointer */
19 	int	pcb_usp; 	/* user stack pointer */
20 	int	pcb_r0;
21 	int	pcb_r1;
22 	int	pcb_r2;
23 	int	pcb_r3;
24 	int	pcb_r4;
25 	int	pcb_r5;
26 	int	pcb_r6;
27 	int	pcb_r7;
28 	int	pcb_r8;
29 	int	pcb_r9;
30 	int	pcb_r10;
31 	int	pcb_r11;
32 	int	pcb_r12;
33 #define	pcb_ap pcb_r12
34 	int	pcb_r13;
35 #define	pcb_fp pcb_r13
36 	int	pcb_pc; 	/* program counter */
37 	int	pcb_psl; 	/* program status longword */
38 	struct  pte *pcb_p0br; 	/* seg 0 base register */
39 	int	pcb_p0lr; 	/* seg 0 length register and astlevel */
40 	struct  pte *pcb_p1br; 	/* seg 1 base register */
41 	int	pcb_p1lr; 	/* seg 1 length register and pme */
42 /*
43  * Software pcb (extension)
44  */
45 	int	pcb_szpt; 	/* number of pages of user page table */
46 	int	pcb_cmap2;
47 	int	*pcb_sswap;
48 	int	pcb_sigc[5];
49 };
50 
51 #define	AST_NONE	0x04000000	/* ast level */
52 #define	AST_USER	0x03000000	/* ast for user mode */
53 
54 #define	ASTLVL_NONE	4
55 #define	ASTLVL_USER	3
56 
57 #define	AST_CLR		0x07000000
58 #define	PME_CLR		0x80000000
59 
60 #define	aston() \
61 	{ \
62 		mtpr(ASTLVL, ASTLVL_USER); \
63 	}
64 
65 #define	astoff() \
66 	{ \
67 		mtpr(ASTLVL, ASTLVL_NONE); \
68 	}
69