|
|
1.1 root 1: /* pcb.h 6.1 83/07/29 */
2:
3: /*
4: * VAX process control block
5: */
6:
7: struct pcb
8: {
9: int pcb_ksp; /* kernel stack pointer */
10: int pcb_esp; /* exec stack pointer */
11: int pcb_ssp; /* supervisor stack pointer */
12: int pcb_usp; /* user stack pointer */
13: int pcb_r0;
14: int pcb_r1;
15: int pcb_r2;
16: int pcb_r3;
17: int pcb_r4;
18: int pcb_r5;
19: int pcb_r6;
20: int pcb_r7;
21: int pcb_r8;
22: int pcb_r9;
23: int pcb_r10;
24: int pcb_r11;
25: int pcb_r12;
26: #define pcb_ap pcb_r12
27: int pcb_r13;
28: #define pcb_fp pcb_r13
29: int pcb_pc; /* program counter */
30: int pcb_psl; /* program status longword */
31: struct pte *pcb_p0br; /* seg 0 base register */
32: int pcb_p0lr; /* seg 0 length register and astlevel */
33: struct pte *pcb_p1br; /* seg 1 base register */
34: int pcb_p1lr; /* seg 1 length register and pme */
35: /*
36: * Software pcb (extension)
37: */
38: int pcb_szpt; /* number of pages of user page table */
39: int pcb_cmap2;
40: int *pcb_sswap;
41: int pcb_sigc[4];
42: };
43:
44: #define AST_NONE 0x04000000 /* ast level */
45: #define AST_USER 0x03000000 /* ast for user mode */
46:
47: #define ASTLVL_NONE 4
48: #define ASTLVL_USER 3
49:
50: #define AST_CLR 0x07000000
51: #define PME_CLR 0x80000000
52:
53: #define aston() \
54: { \
55: u.u_pcb.pcb_p0lr = (u.u_pcb.pcb_p0lr &~ AST_CLR) | AST_USER; \
56: mtpr(ASTLVL, ASTLVL_USER); \
57: }
58:
59: #define astoff() \
60: { \
61: u.u_pcb.pcb_p0lr = (u.u_pcb.pcb_p0lr &~ AST_CLR) | AST_NONE; \
62: mtpr(ASTLVL, ASTLVL_NONE); \
63: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.