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