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.3 (Berkeley) 12/16/90 15 */ 16 17 #include <hp300/include/frame.h> 18 19 /* 20 * HP300 process control block 21 */ 22 struct pcb 23 { 24 short pcb_flags; /* misc. process flags (+0) */ 25 short pcb_ps; /* processor status word (+2) */ 26 int pcb_ustp; /* user segment table pointer (+4) */ 27 int pcb_usp; /* user stack pointer (+8) */ 28 int pcb_regs[12]; /* D0-D7, A0-A7 (+C) */ 29 int pcb_pad[5]; 30 int pcb_cmap2; /* temporary copy PTE (+50) */ 31 int *pcb_sswap; /* saved context for swap return (+54) */ 32 short pcb_sigc[12]; /* signal trampoline code (+58) */ 33 caddr_t pcb_onfault; /* for copyin/out faults (+70) */ 34 struct fpframe pcb_fpregs; /* 68881/2 context save area (+74) */ 35 int pcb_exec[16]; /* exec structure for core dumps (+1B8) */ 36 int pcb_res[2]; /* reserved for future expansion (+1F8) */ 37 }; 38 39 /* flags */ 40 41 #define PCB_AST 0x0001 /* async trap pending */ 42 #define PCB_HPUXMMAP 0x0010 /* VA space is multiple mapped */ 43 #define PCB_HPUXTRACE 0x0020 /* being traced by an HPUX process */ 44 #define PCB_HPUXBIN 0x0040 /* loaded from an HPUX format binary */ 45 /* note: does NOT imply SHPUX */ 46 47 #define aston() \ 48 { \ 49 u.u_pcb.pcb_flags |= PCB_AST; \ 50 } 51 52 #define astoff() \ 53 { \ 54 u.u_pcb.pcb_flags &= ~PCB_AST; \ 55 } 56 57 #define astpend() \ 58 (u.u_pcb.pcb_flags & PCB_AST) 59