|
|
1.1 ! root 1: typedef struct Conf Conf; ! 2: typedef struct FFrame FFrame; ! 3: typedef struct FPsave FPsave; ! 4: typedef struct Label Label; ! 5: typedef struct Lock Lock; ! 6: typedef struct Mach Mach; ! 7: typedef struct Page Page; ! 8: typedef struct PMMU PMMU; ! 9: typedef struct Portpage Portpage; ! 10: typedef struct Ureg Ureg; ! 11: typedef struct User User; ! 12: ! 13: #define MACHP(n) (n==0? &mach0 : *(Mach**)0) ! 14: ! 15: extern Mach mach0; ! 16: extern void (*kprofp)(ulong); ! 17: ! 18: /* ! 19: * parameters for sysproc.c ! 20: */ ! 21: #define AOUT_MAGIC A_MAGIC ! 22: ! 23: struct Lock ! 24: { ! 25: char key; ! 26: ulong pc; ! 27: ulong sr; ! 28: }; ! 29: ! 30: struct Label ! 31: { ! 32: ulong sp; ! 33: ulong pc; ! 34: ushort sr; ! 35: }; ! 36: ! 37: /* ! 38: * floating point registers ! 39: */ ! 40: enum ! 41: { ! 42: FPinit, ! 43: FPactive, ! 44: FPdirty, ! 45: }; ! 46: ! 47: struct FPsave ! 48: { ! 49: uchar type; ! 50: uchar size; ! 51: short reserved; ! 52: char junk[212]; /* 68881: sizes 24, 180; 68882: 56, 212 */ ! 53: /* this offset known in db */ ! 54: union{ ! 55: char reg[3*4+8*12]; ! 56: struct{ ! 57: ulong fpcr; ! 58: ulong fpsr; ! 59: ulong fpiar; ! 60: struct{ ! 61: ulong d[3]; ! 62: }dreg[8]; ! 63: }; ! 64: }; ! 65: }; ! 66: ! 67: struct Conf ! 68: { ! 69: int nmach; /* processors */ ! 70: int nproc; /* processes */ ! 71: int monitor; /* has display */ ! 72: ulong npage0; /* total physical pages of memory, bank 0 */ ! 73: ulong npage1; /* total physical pages of memory, bank 1 */ ! 74: ulong npage; ! 75: ulong base0; /* base of bank 0 */ ! 76: ulong base1; /* base of bank 1 */ ! 77: ulong upages; /* user page pool */ ! 78: ulong nimage; /* number of page cache image headers */ ! 79: ulong nswap; /* number of swap blocks */ ! 80: int copymode; /* 0 is copy on write, 1 is copy on reference */ ! 81: int portispaged; /* ??? */ ! 82: int nfloppy; ! 83: }; ! 84: ! 85: /* ! 86: * MMU stuff in proc ! 87: */ ! 88: struct PMMU ! 89: { ! 90: Page *mmufree; /* unused page table pages */ ! 91: Page *mmuused; /* used page table pages */ ! 92: ulong mmuptr; /* first free entry in cur */ ! 93: ulong mmuA[2]; /* first 2 entries of A table */ ! 94: }; ! 95: ! 96: #include "../port/portdat.h" ! 97: ! 98: /* ! 99: * machine dependent definitions not used by ../port/dat.h ! 100: */ ! 101: ! 102: struct Mach ! 103: { ! 104: /* OFFSETS OF THE FOLLOWING KNOWN BY l.s */ ! 105: int machno; /* physical id of processor */ ! 106: ulong splpc; /* pc of last caller to splhi */ ! 107: ! 108: /* ordering from here on irrelevant */ ! 109: int mmask; /* 1<<m->machno */ ! 110: ulong ticks; /* of the clock since boot time */ ! 111: Proc *proc; /* current process on this processor */ ! 112: Label sched; /* scheduler wakeup */ ! 113: Lock alarmlock; /* access to alarm list */ ! 114: void *alarm; /* alarms bound to this clock */ ! 115: int fpstate; /* state of fp registers on machine */ ! 116: ! 117: int tlbfault; ! 118: int tlbpurge; ! 119: int pfault; ! 120: int cs; ! 121: int syscall; ! 122: int load; ! 123: int intr; ! 124: Proc *lproc; ! 125: ! 126: /* MUST BE LAST */ ! 127: int stack[1]; ! 128: }; ! 129: ! 130: /* ! 131: * Fake kmap ! 132: */ ! 133: typedef void KMap; ! 134: #define VA(k) ((ulong)(k)) ! 135: #define kmap(p) (KMap*)(p->pa|KZERO) ! 136: #define kmapperm(p) kmap(p) ! 137: #define kunmap(k) ! 138: ! 139: #define NERR 20 ! 140: #define NNOTE 5 ! 141: struct User ! 142: { ! 143: Proc *p; ! 144: FPsave fpsave; /* offset known by db */ ! 145: int scallnr; /* sys call number - known by db */ ! 146: Sargs s; /* offset known by db */ ! 147: int nerrlab; ! 148: Label errlab[NERR]; ! 149: char error[ERRLEN]; ! 150: char elem[NAMELEN]; /* last name element from namec */ ! 151: Chan *slash; ! 152: Chan *dot; ! 153: /* ! 154: * Rest of structure controlled by devproc.c and friends. ! 155: * lock(&p->debug) to modify. ! 156: */ ! 157: Note note[NNOTE]; ! 158: short nnote; ! 159: short notified; /* sysnoted is due */ ! 160: Note lastnote; ! 161: int (*notify)(void*, char*); ! 162: void *ureg; ! 163: void *dbgreg; /* User registers for debugging in proc */ ! 164: ushort svvo; ! 165: ushort svsr; ! 166: }; ! 167: ! 168: enum ! 169: { ! 170: Scsidevice, ! 171: Scsidma, ! 172: }; ! 173: ! 174: struct ! 175: { ! 176: Lock; ! 177: short machs; ! 178: short exiting; ! 179: }active; ! 180: ! 181: ! 182: extern Mach *m; ! 183: extern User *u;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.