1 /* 2 * Copyright (c) 1988 University of Utah. 3 * Copyright (c) 1982, 1986, 1990 The Regents of the University of California. 4 * All rights reserved. 5 * 6 * This code is derived from software contributed to Berkeley by 7 * the Systems Programming Group of the University of Utah Computer 8 * Science Department. 9 * 10 * %sccs.include.redist.c% 11 * 12 * from: Utah $Hdr: pcb.h 1.13 89/04/23$ 13 * 14 * @(#)pcb.h 7.2 (Berkeley) 12/05/90 15 */ 16 17 #ifdef KERNEL 18 #include "frame.h" 19 #else 20 #include <hp300/frame.h> 21 #endif 22 23 /* 24 * HP300 process control block 25 */ 26 struct pcb 27 { 28 short pcb_flags; /* misc. process flags (+0) */ 29 short pcb_ps; /* processor status word (+2) */ 30 int pcb_ustp; /* user segment table pointer (+4) */ 31 int pcb_usp; /* user stack pointer (+8) */ 32 int pcb_regs[12]; /* D0-D7, A0-A7 (+C) */ 33 int pcb_pad[5]; 34 int pcb_cmap2; /* temporary copy PTE (+50) */ 35 int *pcb_sswap; /* saved context for swap return (+54) */ 36 short pcb_sigc[12]; /* signal trampoline code (+58) */ 37 caddr_t pcb_onfault; /* for copyin/out faults (+70) */ 38 struct fpframe pcb_fpregs; /* 68881/2 context save area (+74) */ 39 int pcb_exec[16]; /* exec structure for core dumps (+1B8) */ 40 int pcb_res[2]; /* reserved for future expansion (+1F8) */ 41 }; 42 43 /* flags */ 44 45 #define PCB_AST 0x0001 /* async trap pending */ 46 #define PCB_HPUXMMAP 0x0010 /* VA space is multiple mapped */ 47 #define PCB_HPUXTRACE 0x0020 /* being traced by an HPUX process */ 48 #define PCB_HPUXBIN 0x0040 /* loaded from an HPUX format binary */ 49 /* note: does NOT imply SHPUX */ 50 51 #define aston() \ 52 { \ 53 u.u_pcb.pcb_flags |= PCB_AST; \ 54 } 55 56 #define astoff() \ 57 { \ 58 u.u_pcb.pcb_flags &= ~PCB_AST; \ 59 } 60 61 #define astpend() \ 62 (u.u_pcb.pcb_flags & PCB_AST) 63