|
|
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.