Annotation of 43BSDTahoe/sys/vax/cpudata.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1982, 1986, 1988 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  *
                      6:  *     @(#)cpudata.c   7.4 (Berkeley) 7/9/88
                      7:  */
                      8: 
                      9: #include "pte.h"
                     10: 
                     11: #include "param.h"
                     12: 
                     13: #include "cpu.h"
                     14: #include "nexus.h"
                     15: #include "ioa.h"
                     16: #include "../vaxbi/bireg.h"
                     17: #include "../vaxuba/ubareg.h"
                     18: 
                     19: /*
                     20:  * Initialization of per-cpu data structures.
                     21:  */
                     22: 
                     23: /*
                     24:  * These are the (fixed) physical addresses of the
                     25:  * unibus memory for each of the possible unibus adapters.
                     26:  * Note that on some machines the unibus memory addresses
                     27:  * are actually indexed by the unibus adapter type code.
                     28:  */
                     29: #if VAX8600
                     30: caddr_t umaddr8600a[4] = {
                     31:        (caddr_t) UMEMA8600(0), (caddr_t) UMEMA8600(1),
                     32:        (caddr_t) UMEMA8600(2), (caddr_t) UMEMA8600(3),
                     33: };
                     34: caddr_t umaddr8600b[4] = {
                     35:        (caddr_t) UMEMB8600(0), (caddr_t) UMEMB8600(1),
                     36:        (caddr_t) UMEMB8600(2), (caddr_t) UMEMB8600(3),
                     37: };
                     38: #endif
                     39: #if VAX780
                     40: caddr_t        umaddr780[4] = {
                     41:        (caddr_t) UMEM780(0), (caddr_t) UMEM780(1),
                     42:        (caddr_t) UMEM780(2), (caddr_t) UMEM780(3)
                     43: };
                     44: #endif
                     45: #if VAX750
                     46: caddr_t        umaddr750[2] = {
                     47:        (caddr_t) UMEM750(0), (caddr_t) UMEM750(1),
                     48: };
                     49: #endif
                     50: #if VAX730
                     51: caddr_t        umaddr730[1] = {
                     52:        (caddr_t) UMEM730
                     53: };
                     54: #endif
                     55: 
                     56: /*
                     57:  * Information to patch around the stupidity of configuration
                     58:  * registers not returning types on some of the processors.
                     59:  */
                     60: #if VAX750
                     61: short  nexty750[NNEX750] = {
                     62:        NEX_MEM16,      NEX_MEM16,      NEX_MEM16,      NEX_MEM16,
                     63:        NEX_MBA,        NEX_MBA,        NEX_MBA,        NEX_MBA,
                     64:        NEX_UBA0,       NEX_UBA1,       NEX_ANY,        NEX_ANY,
                     65:        NEX_ANY,        NEX_ANY,        NEX_ANY,        NEX_ANY
                     66: };
                     67: #endif
                     68: #if VAX730
                     69: short  nexty730[NNEX730] = {
                     70:        NEX_MEM16,      NEX_ANY,        NEX_ANY,        NEX_ANY,
                     71:        NEX_ANY,        NEX_ANY,        NEX_ANY,        NEX_ANY,
                     72: };
                     73: #endif
                     74: 
                     75: #if VAX8800
                     76: /* I think this is how the thing is shaped: */
                     77: struct bibus bi8800[] = {
                     78:        { BI_BASE(0) },
                     79:        { BI_BASE(1) },
                     80: };
                     81: struct iobus io8800 = {
                     82:        { IO_BIA, somewhere, somesize, (caddr_t)&bi8800[0] },
                     83:        { IO_BIA, somewhere, somesize, (caddr_t)&bi8800[1] },
                     84: };
                     85: /* but you will have to make it work yourself (sorry) */
                     86: #endif
                     87: 
                     88: #if VAX8600
                     89: struct nexusconnect sbi8600[] = {
                     90:        { NNEX8600, NEXA8600, DW780, NBDP8600, umaddr8600a, 0 },
                     91:        { NNEX8600, NEXB8600, DW780, NBDP8600, umaddr8600b, 0 },
                     92: };
                     93: struct iobus io8600[] = {
                     94:        { IO_ABUS, IOA8600(0), IOAMAPSIZ, (caddr_t)&sbi8600[0] },
                     95:        { IO_ABUS, IOA8600(1), IOAMAPSIZ, (caddr_t)&sbi8600[1] },
                     96: };
                     97: #endif
                     98: 
                     99: #if VAX8200
                    100: /* BEWARE, this is all limited to one BI for now */
                    101: struct bibus bi8200[] = {
                    102:        { BI_BASE(0) },
                    103: };
                    104: struct iobus io8200[] = {
                    105:        { IO_BI, 0, 0, (caddr_t)&bi8200[0] },
                    106: };
                    107: #endif
                    108: 
                    109: #if VAX780
                    110: struct nexusconnect sbi780 = {
                    111:        NNEX780, NEX780, DW780, NBDP780, umaddr780, 0,
                    112: };
                    113: struct iobus io780[] = { IO_SBI780, 0, 0, (caddr_t)&sbi780 };
                    114: #endif
                    115: 
                    116: #if VAX750
                    117: struct nexusconnect cmi750 = {
                    118:        NNEX750, NEX750, DW750, NBDP750, umaddr750, nexty750,
                    119: };
                    120: struct iobus io750[] = { IO_CMI750, 0, 0, (caddr_t)&cmi750 };
                    121: #endif
                    122: 
                    123: #if VAX730
                    124: struct nexusconnect xxx730 = {
                    125:        NNEX730, NEX730, DW730, NBDP730, umaddr730, nexty730,
                    126: };
                    127: struct iobus io730[] = { IO_XXX730, 0, 0, (caddr_t)&xxx730 };
                    128: #endif
                    129: #if VAX630
                    130: struct qbus qbus630 = {
                    131:        QBA, QBAPAGES, QBAMAP630, (caddr_t)QMEM630, (caddr_t)QIOPAGE630
                    132: };
                    133: struct iobus io630[] = { IO_QBUS, 0, 0, (caddr_t)&qbus630 };
                    134: #endif
                    135: 
                    136: /*
                    137:  * Clock info
                    138:  */
                    139: #if VAX8600 || VAX780 || VAX750 || VAX730
                    140: int vaxstd_clkstartrt(), vaxstd_clkread(), vaxstd_clkwrite();
                    141: struct clockops vaxstd_clockops = {
                    142:        vaxstd_clkstartrt, vaxstd_clkread, vaxstd_clkwrite
                    143: };
                    144: #endif
                    145: 
                    146: #if VAX8200
                    147: int vaxstd_clkstartrt(), ka820_clkread(), ka820_clkwrite();
                    148: struct clockops ka820_clockops = {
                    149:        vaxstd_clkstartrt, ka820_clkread, ka820_clkwrite
                    150: };
                    151: #endif
                    152: 
                    153: #if VAX630
                    154: int ka630_clkstartrt(), ka630_clkread(), ka630_clkwrite();
                    155: struct clockops ka630_clockops = {
                    156:        ka630_clkstartrt, ka630_clkread, ka630_clkwrite
                    157: };
                    158: #endif
                    159: 
                    160: /*
                    161:  * CPU dependent routines.
                    162:  */
                    163: #if VAX8600
                    164: int    ka860_memenable(), ka860_memerr(), ka860_mchk();
                    165: struct cpuops ka860_ops = {
                    166:        &vaxstd_clockops, ka860_memenable, ka860_memerr, ka860_mchk, NULL
                    167: };
                    168: #endif
                    169: 
                    170: #if VAX8200
                    171: int    ka820_memenable(), ka820_memerr(), ka820_mchk(), ka820_init();
                    172: struct cpuops ka820_ops = {
                    173:        &ka820_clockops, ka820_memenable, ka820_memerr, ka820_mchk, ka820_init
                    174: };
                    175: #endif
                    176: 
                    177: #if VAX780
                    178: int    ka780_memenable(), ka780_memerr(), ka780_mchk();
                    179: struct cpuops ka780_ops = {
                    180:        &vaxstd_clockops, ka780_memenable, ka780_memerr, ka780_mchk, NULL
                    181: };
                    182: #endif
                    183: 
                    184: #if VAX750
                    185: int    ka750_memenable(), ka750_memerr(), ka750_mchk();
                    186: struct cpuops ka750_ops = {
                    187:        &vaxstd_clockops, ka750_memenable, ka750_memerr, ka750_mchk, NULL
                    188: };
                    189: #endif
                    190: 
                    191: #if VAX730
                    192: int    ka730_memenable(), ka730_memerr(), ka730_mchk();
                    193: struct cpuops ka730_ops = {
                    194:        &vaxstd_clockops, ka730_memenable, ka730_memerr, ka730_mchk, NULL
                    195: };
                    196: #endif
                    197: 
                    198: #if VAX630
                    199: int    ka630_memnop(), ka630_mchk(), ka630_init();
                    200: struct cpuops ka630_ops = {
                    201:        &ka630_clockops, ka630_memnop, ka630_memnop, ka630_mchk, ka630_init
                    202: };
                    203: #endif
                    204: 
                    205: struct percpu percpu[] = {
                    206: #if VAX8600
                    207:        { VAX_8600, 6, 2, io8600, &ka860_ops },
                    208: #endif
                    209: #if VAX8200
                    210:        { VAX_8200, 2, 1, io8200, &ka820_ops },
                    211: #endif
                    212: #if VAX780
                    213:        { VAX_780, 2, 1, io780, &ka780_ops },
                    214: #endif
                    215: #if VAX750
                    216:        { VAX_750, 1, 1, io750, &ka750_ops },
                    217: #endif
                    218: #if VAX730
                    219:        { VAX_730, 1, 1, io730, &ka730_ops },
                    220: #endif
                    221: #if VAX630
                    222:        { VAX_630, 2, 1, io630, &ka630_ops },
                    223: #endif
                    224:        0,
                    225: };

unix.superglobalmegacorp.com

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