Annotation of 43BSDTahoe/sys/vax/cpudata.c, revision 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.