xref: /csrg-svn/sys/vax/include/pcb.h (revision 23270)
1*23270Smckusick /*
2*23270Smckusick  * Copyright (c) 1982 Regents of the University of California.
3*23270Smckusick  * All rights reserved.  The Berkeley software License Agreement
4*23270Smckusick  * specifies the terms and conditions for redistribution.
5*23270Smckusick  *
6*23270Smckusick  *	@(#)pcb.h	6.4 (Berkeley) 06/08/85
7*23270Smckusick  */
864Sbill 
964Sbill /*
1064Sbill  * VAX process control block
1164Sbill  */
1264Sbill 
1364Sbill struct pcb
1464Sbill {
1564Sbill 	int	pcb_ksp; 	/* kernel stack pointer */
1664Sbill 	int	pcb_esp; 	/* exec stack pointer */
1764Sbill 	int	pcb_ssp; 	/* supervisor stack pointer */
1864Sbill 	int	pcb_usp; 	/* user stack pointer */
1964Sbill 	int	pcb_r0;
2064Sbill 	int	pcb_r1;
2164Sbill 	int	pcb_r2;
2264Sbill 	int	pcb_r3;
2364Sbill 	int	pcb_r4;
2464Sbill 	int	pcb_r5;
2564Sbill 	int	pcb_r6;
2664Sbill 	int	pcb_r7;
2764Sbill 	int	pcb_r8;
2864Sbill 	int	pcb_r9;
2964Sbill 	int	pcb_r10;
3064Sbill 	int	pcb_r11;
3164Sbill 	int	pcb_r12;
323776Sroot #define	pcb_ap pcb_r12
3364Sbill 	int	pcb_r13;
343776Sroot #define	pcb_fp pcb_r13
3564Sbill 	int	pcb_pc; 	/* program counter */
3664Sbill 	int	pcb_psl; 	/* program status longword */
3764Sbill 	struct  pte *pcb_p0br; 	/* seg 0 base register */
3864Sbill 	int	pcb_p0lr; 	/* seg 0 length register and astlevel */
3964Sbill 	struct  pte *pcb_p1br; 	/* seg 1 base register */
4064Sbill 	int	pcb_p1lr; 	/* seg 1 length register and pme */
4164Sbill /*
4264Sbill  * Software pcb (extension)
4364Sbill  */
4464Sbill 	int	pcb_szpt; 	/* number of pages of user page table */
4564Sbill 	int	pcb_cmap2;
4664Sbill 	int	*pcb_sswap;
4718270Smckusick 	int	pcb_sigc[5];
4864Sbill };
492447Swnj 
502447Swnj #define	AST_NONE	0x04000000	/* ast level */
512447Swnj #define	AST_USER	0x03000000	/* ast for user mode */
522447Swnj 
532447Swnj #define	ASTLVL_NONE	4
542447Swnj #define	ASTLVL_USER	3
552447Swnj 
562447Swnj #define	AST_CLR		0x07000000
579004Sroot #define	PME_CLR		0x80000000
582447Swnj 
592447Swnj #define	aston() \
602447Swnj 	{ \
612447Swnj 		mtpr(ASTLVL, ASTLVL_USER); \
622447Swnj 	}
632447Swnj 
642447Swnj #define	astoff() \
652447Swnj 	{ \
662447Swnj 		mtpr(ASTLVL, ASTLVL_NONE); \
672447Swnj 	}
68