1*25678Ssam /* pcb.h 1.2 86/01/05 */ 2*25678Ssam 324126Ssam /* 424126Ssam * TAHOE process control block 524126Ssam */ 6*25678Ssam struct pcb { 724126Ssam int pcb_ksp; /* kernel stack pointer */ 824126Ssam int pcb_usp; /* user stack pointer */ 924126Ssam int pcb_r0; 1024126Ssam int pcb_r1; 1124126Ssam int pcb_r2; 1224126Ssam int pcb_r3; 1324126Ssam int pcb_r4; 1424126Ssam int pcb_r5; 1524126Ssam int pcb_r6; 1624126Ssam int pcb_r7; 1724126Ssam int pcb_r8; 1824126Ssam int pcb_r9; 1924126Ssam int pcb_r10; 2024126Ssam int pcb_r11; 2124126Ssam int pcb_r12; 2224126Ssam int pcb_r13; 2324126Ssam #define pcb_fp pcb_r13 2424126Ssam int pcb_pc; /* program counter */ 2524126Ssam int pcb_psl; /* program status longword */ 2624126Ssam struct pte *pcb_p0br; /* seg 0 base register */ 2724126Ssam int pcb_p0lr; /* seg 0 length register and astlevel */ 2824126Ssam struct pte *pcb_p1br; /* seg 1 base register */ 2924126Ssam int pcb_p1lr; /* seg 1 length register and pme */ 3024126Ssam struct pte *pcb_p2br; /* seg 2 base register */ 3124126Ssam int pcb_p2lr; /* seg 2 length register and pme */ 3224126Ssam int pcb_ach; /* accumulator - high order longword */ 3324126Ssam int pcb_acl; /* accumulator - low order longword */ 3424126Ssam #define ACH pcb_ach 3524126Ssam #define ACL pcb_acl 36*25678Ssam int pcb_hfs; /* fp status register */ 3724126Ssam /* 3824126Ssam * Software pcb (extension) 3924126Ssam */ 4024126Ssam union { 4124126Ssam float *faddr; /* address of single precision accumulator */ 4224126Ssam double *daddr; /* address of double precision accumulator */ 4324126Ssam } pcb_savacc; 4424126Ssam #define FSAVACC pcb_savacc.faddr 4524126Ssam #define DSAVACC pcb_savacc.daddr 4624126Ssam int pcb_szpt; /* number of pages of user page table */ 4724126Ssam int pcb_cmap2; 4824126Ssam int *pcb_sswap; 49*25678Ssam long pcb_sigc[5]; /* sigcode actually 19 bytes */ 5024126Ssam }; 5124126Ssam 5224126Ssam extern long *user_psl; 5324126Ssam 54*25678Ssam #define aston() { \ 55*25678Ssam u.u_pcb.pcb_psl |= PSL_SFE; \ 56*25678Ssam if ((int)user_psl != 0) \ 57*25678Ssam *user_psl |= PSL_SFE; \ 58*25678Ssam } 5924126Ssam 60*25678Ssam #define astoff() { \ 61*25678Ssam u.u_pcb.pcb_psl &= ~ PSL_SFE; \ 62*25678Ssam if ((int)user_psl != 0) \ 63*25678Ssam *user_psl &= ~PSL_SFE; \ 64*25678Ssam } 65