|
|
1.1 root 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: * Redistribution is only permitted until one year after the first shipment
11: * of 4.4BSD by the Regents. Otherwise, redistribution and use in source and
12: * binary forms are permitted provided that: (1) source distributions retain
13: * this entire copyright notice and comment, and (2) distributions including
14: * binaries display the following acknowledgement: This product includes
15: * software developed by the University of California, Berkeley and its
16: * contributors'' in the documentation or other materials provided with the
17: * distribution and in all advertising materials mentioning features or use
18: * of this software. Neither the name of the University nor the names of
19: * its contributors may be used to endorse or promote products derived from
20: * this software without specific prior written permission.
21: * THIS SOFTWARE IS PROVIDED AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
22: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
23: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
24: *
25: * from: Utah $Hdr: pcb.h 1.13 89/04/23$
26: *
27: * @(#)pcb.h 7.1 (Berkeley) 5/8/90
28: */
29:
30: #ifdef KERNEL
31: #include "frame.h"
32: #else
33: #include <hp300/frame.h>
34: #endif
35:
36: /*
37: * HP300 process control block
38: */
39: struct pcb
40: {
41: short pcb_flags; /* misc. process flags (+0) */
42: short pcb_ps; /* processor status word (+2) */
43: int pcb_ustp; /* user segment table pointer (+4) */
44: int pcb_usp; /* user stack pointer (+8) */
45: int pcb_regs[12]; /* D0-D7, A0-A7 (+C) */
46: struct pte *pcb_p0br; /* P0 base register (+3C) */
47: int pcb_p0lr; /* P0 length register (+40) */
48: struct pte *pcb_p1br; /* P1 base register (+44) */
49: int pcb_p1lr; /* P1 length register (+48) */
50: int pcb_szpt; /* number of pages of user page table (+4C) */
51: int pcb_cmap2; /* temporary copy PTE (+50) */
52: int *pcb_sswap; /* saved context for swap return (+54) */
53: short pcb_sigc[12]; /* signal trampoline code (+58) */
54: caddr_t pcb_onfault; /* for copyin/out faults (+70) */
55: struct fpframe pcb_fpregs; /* 68881/2 context save area (+74) */
56: int pcb_exec[16]; /* exec structure for core dumps (+1B8) */
57: int pcb_res[2]; /* reserved for future expansion (+1F8) */
58: };
59:
60: /* flags */
61:
62: #define PCB_AST 0x0001 /* async trap pending */
63: #define PCB_HPUXMMAP 0x0010 /* VA space is multiple mapped */
64: #define PCB_HPUXTRACE 0x0020 /* being traced by an HPUX process */
65: #define PCB_HPUXBIN 0x0040 /* loaded from an HPUX format binary */
66: /* note: does NOT imply SHPUX */
67:
68: #define aston() \
69: { \
70: u.u_pcb.pcb_flags |= PCB_AST; \
71: }
72:
73: #define astoff() \
74: { \
75: u.u_pcb.pcb_flags &= ~PCB_AST; \
76: }
77:
78: #define astpend() \
79: (u.u_pcb.pcb_flags & PCB_AST)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.