xref: /csrg-svn/sys/vax/include/pcb.h (revision 2447)
1*2447Swnj /*	pcb.h	4.2	02/15/81	*/
264Sbill 
364Sbill /*
464Sbill  * VAX process control block
564Sbill  *
664Sbill  * THE SIZE OF THE pcb, AS INFLUENCED BY THE SIZE OF THE SOFTWARE
764Sbill  * EXTENSION, IS KNOWN IN THE #ifdef FASTVAX'ed DEFINITIONS OF THE
864Sbill  * OFFSETS OF U_ARG and U_QSAV IN THE FILE user.h.
964Sbill  */
1064Sbill 
1164Sbill struct pcb
1264Sbill {
1364Sbill 	int	pcb_ksp; 	/* kernel stack pointer */
1464Sbill 	int	pcb_esp; 	/* exec stack pointer */
1564Sbill 	int	pcb_ssp; 	/* supervisor stack pointer */
1664Sbill 	int	pcb_usp; 	/* user stack pointer */
1764Sbill 	int	pcb_r0;
1864Sbill 	int	pcb_r1;
1964Sbill 	int	pcb_r2;
2064Sbill 	int	pcb_r3;
2164Sbill 	int	pcb_r4;
2264Sbill 	int	pcb_r5;
2364Sbill 	int	pcb_r6;
2464Sbill 	int	pcb_r7;
2564Sbill 	int	pcb_r8;
2664Sbill 	int	pcb_r9;
2764Sbill 	int	pcb_r10;
2864Sbill 	int	pcb_r11;
2964Sbill 	int	pcb_r12;
3064Sbill 	int	pcb_r13;
3164Sbill 	int	pcb_pc; 	/* program counter */
3264Sbill 	int	pcb_psl; 	/* program status longword */
3364Sbill 	struct  pte *pcb_p0br; 	/* seg 0 base register */
3464Sbill 	int	pcb_p0lr; 	/* seg 0 length register and astlevel */
3564Sbill 	struct  pte *pcb_p1br; 	/* seg 1 base register */
3664Sbill 	int	pcb_p1lr; 	/* seg 1 length register and pme */
3764Sbill /*
3864Sbill  * Software pcb (extension)
3964Sbill  */
4064Sbill 	int	pcb_szpt; 	/* number of pages of user page table */
4164Sbill 	int	pcb_cmap2;
4264Sbill 	int	*pcb_sswap;
4364Sbill 	int	pcb_sigc[3];
4464Sbill };
45*2447Swnj 
46*2447Swnj #define	AST_NONE	0x04000000	/* ast level */
47*2447Swnj #define	AST_USER	0x03000000	/* ast for user mode */
48*2447Swnj 
49*2447Swnj #define	ASTLVL_NONE	4
50*2447Swnj #define	ASTLVL_USER	3
51*2447Swnj 
52*2447Swnj #define	AST_CLR		0x07000000
53*2447Swnj 
54*2447Swnj #define	aston() \
55*2447Swnj 	{ \
56*2447Swnj 		u.u_pcb.pcb_p0lr = (u.u_pcb.pcb_p0lr &~ AST_CLR) | AST_USER; \
57*2447Swnj 		mtpr(ASTLVL, ASTLVL_USER); \
58*2447Swnj 	}
59*2447Swnj 
60*2447Swnj #define	astoff() \
61*2447Swnj 	{ \
62*2447Swnj 		u.u_pcb.pcb_p0lr = (u.u_pcb.pcb_p0lr &~ AST_CLR) | AST_NONE; \
63*2447Swnj 		mtpr(ASTLVL, ASTLVL_NONE); \
64*2447Swnj 	}
65