|
|
1.1 ! root 1: /* ! 2: * TAHOE process control block ! 3: */ ! 4: ! 5: struct pcb ! 6: { ! 7: int pcb_ksp; /* kernel stack pointer */ ! 8: int pcb_usp; /* user stack pointer */ ! 9: int pcb_r0; ! 10: int pcb_r1; ! 11: int pcb_r2; ! 12: int pcb_r3; ! 13: int pcb_r4; ! 14: int pcb_r5; ! 15: int pcb_r6; ! 16: int pcb_r7; ! 17: int pcb_r8; ! 18: int pcb_r9; ! 19: int pcb_r10; ! 20: int pcb_r11; ! 21: int pcb_r12; ! 22: int pcb_r13; ! 23: #define pcb_fp pcb_r13 ! 24: int pcb_pc; /* program counter */ ! 25: int pcb_psl; /* program status longword */ ! 26: struct pte *pcb_p0br; /* seg 0 base register */ ! 27: int pcb_p0lr; /* seg 0 length register and astlevel */ ! 28: struct pte *pcb_p1br; /* seg 1 base register */ ! 29: int pcb_p1lr; /* seg 1 length register and pme */ ! 30: struct pte *pcb_p2br; /* seg 2 base register */ ! 31: int pcb_p2lr; /* seg 2 length register and pme */ ! 32: int pcb_ach; /* accumulator - high order longword */ ! 33: int pcb_acl; /* accumulator - low order longword */ ! 34: #define ACH pcb_ach ! 35: #define ACL pcb_acl ! 36: int pcb_hfs; /* f.p. status register. */ ! 37: /* ! 38: * Software pcb (extension) ! 39: */ ! 40: union { ! 41: float *faddr; /* address of single precision accumulator */ ! 42: double *daddr; /* address of double precision accumulator */ ! 43: } pcb_savacc; ! 44: #define FSAVACC pcb_savacc.faddr ! 45: #define DSAVACC pcb_savacc.daddr ! 46: int pcb_szpt; /* number of pages of user page table */ ! 47: int pcb_cmap2; ! 48: int *pcb_sswap; ! 49: int pcb_sigc[4]; ! 50: }; ! 51: ! 52: extern long *user_psl; ! 53: ! 54: #define aston() \ ! 55: { \ ! 56: u.u_pcb.pcb_psl |= PSL_SFE; \ ! 57: if ((int)user_psl != 0) *user_psl |= PSL_SFE; \ ! 58: } ! 59: ! 60: #define astoff() \ ! 61: { \ ! 62: u.u_pcb.pcb_psl &= ~ PSL_SFE; \ ! 63: if ((int)user_psl != 0) *user_psl &= ~PSL_SFE; \ ! 64: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.