|
|
1.1 ! root 1: /* ! 2: * I/O space registers for MicroVAXes ! 3: * ! 4: * a chunk of virtual address space containing ! 5: * - a page of CPU regs ! 6: * - a page of watch chip or NVRAM ! 7: * - maybe another page of cache-related regs ! 8: * - 8192*4 bytes of Q-bus IO map ! 9: * - 8192 bytes of Q-bus IO registers ! 10: * ! 11: * someday, if MicroVAXes get more complicated, ! 12: * this will have to be several files ! 13: */ ! 14: ! 15: /* ! 16: * cpu registers: physical 0x20080000 ! 17: */ ! 18: struct cpuregs { ! 19: long junk0; /* bdr or scr -- we don't use it */ ! 20: long mser; /* II: memory system errors */ ! 21: long cear; /* II: addr of cpu mem err */ ! 22: long dear; /* addr of dma mem err */ ! 23: long qbm; /* III: q-bus map base */ ! 24: long junk1[75]; ! 25: long memcsr16; /* III: mem error flags */ ! 26: long memcsr17; /* III: mem error controls */ ! 27: long junk2[46]; ! 28: }; ! 29: ! 30: #define dser mser /* III: dma system error */ ! 31: #define qbear cear /* III: Q-bus err addr */ ! 32: ! 33: /* ! 34: * second-level cache register: physical 0x20084000 ! 35: * second-level cache image, for flushing: physical ! 36: * MicroVAX III only ! 37: */ ! 38: ! 39: #define CACHESIZE (64*1024/4) ! 40: struct cacheregs { ! 41: long cacr; /* second-level cache control */ ! 42: long junk[127]; ! 43: long cd[CACHESIZE]; /* the cache itself */ ! 44: }; ! 45: ! 46: /* ! 47: * watch chip registers: physical 0x200b8000 ! 48: * MicroVAX II only ! 49: * some belong to the clock, ! 50: * some are just handy NVRAM ! 51: * only the low 8 bits of each short is valid ! 52: */ ! 53: struct watchregs { ! 54: short sec; /* seconds */ ! 55: short junk0; /* seconds alarm */ ! 56: short min; /* minutes */ ! 57: short junk1; /* minutes alarm */ ! 58: short hr; /* hours */ ! 59: short junk2; /* hours alarm */ ! 60: short junk3; /* day of week */ ! 61: short day; /* day of month */ ! 62: short mon; /* month */ ! 63: short yr; /* year */ ! 64: short csra; ! 65: short csrb; ! 66: short csrc; ! 67: short csrd; ! 68: short cpmbx; /* console mailbox */ ! 69: short ram[49]; /* miscellaneous ram */ ! 70: long junk[96]; ! 71: }; ! 72: ! 73: /* ! 74: * plain old NVRAM: physical 0x20140400 ! 75: * MicroVAX III only ! 76: * really two pages, but we only bother with one ! 77: */ ! 78: ! 79: struct nvram { ! 80: short cpmbx; /* console mailbox */ ! 81: short m[255]; /* miscellaneous ram */ ! 82: }; ! 83: ! 84: #define NQMREG 8192 ! 85: struct ubadev { /* `ubadev' sic */ ! 86: long mreg[NQMREG]; /* map regs */ ! 87: char ioreg[8192]; /* Q-bus io space */ ! 88: }; ! 89: ! 90: struct iomflow { ! 91: struct cpuregs c; ! 92: struct watchregs w; ! 93: struct ubadev u[1]; ! 94: }; ! 95: ! 96: struct iomfair { ! 97: struct cpuregs c; ! 98: struct nvram w; ! 99: struct cacheregs d; ! 100: struct ubadev u[1]; ! 101: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.