Annotation of researchv10dc/lsys/sys/qbio.h, revision 1.1.1.1

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: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.