BSD 4_3_Tahoe release
[unix-history] / usr / src / sys / vax / cpudata.c
index 0c7d36e..b70c158 100644 (file)
@@ -1,9 +1,9 @@
 /*
 /*
- * Copyright (c) 1982, 1986 Regents of the University of California.
+ * Copyright (c) 1982, 1986, 1988 Regents of the University of California.
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
  * All rights reserved.  The Berkeley software License Agreement
  * specifies the terms and conditions for redistribution.
  *
- *     @(#)cpudata.c   7.1 (Berkeley) 6/5/86
+ *     @(#)cpudata.c   7.4 (Berkeley) 7/9/88
  */
 
 #include "pte.h"
  */
 
 #include "pte.h"
@@ -13,6 +13,7 @@
 #include "cpu.h"
 #include "nexus.h"
 #include "ioa.h"
 #include "cpu.h"
 #include "nexus.h"
 #include "ioa.h"
+#include "../vaxbi/bireg.h"
 #include "../vaxuba/ubareg.h"
 
 /*
 #include "../vaxuba/ubareg.h"
 
 /*
  */
 
 /*
  */
 
 /*
- * These are the (fixed) addresses of the (last 8k bytes of)
- * unibus memory for each of the possible unibus adapters.  Note that the
- * unibus memory addresses are actually indexed by the unibus adapter type code.
+ * These are the (fixed) physical addresses of the
+ * unibus memory for each of the possible unibus adapters.
+ * Note that on some machines the unibus memory addresses
+ * are actually indexed by the unibus adapter type code.
  */
 #if VAX8600
 caddr_t umaddr8600a[4] = {
  */
 #if VAX8600
 caddr_t umaddr8600a[4] = {
@@ -50,11 +52,6 @@ caddr_t      umaddr730[1] = {
        (caddr_t) UMEM730
 };
 #endif
        (caddr_t) UMEM730
 };
 #endif
-#if VAX630
-caddr_t        umaddr630[1] = {
-       (caddr_t) UMEM630
-};
-#endif
 
 /*
  * Information to patch around the stupidity of configuration
 
 /*
  * Information to patch around the stupidity of configuration
@@ -75,65 +72,154 @@ short      nexty730[NNEX730] = {
 };
 #endif
 
 };
 #endif
 
+#if VAX8800
+/* I think this is how the thing is shaped: */
+struct bibus bi8800[] = {
+       { BI_BASE(0) },
+       { BI_BASE(1) },
+};
+struct iobus io8800 = {
+       { IO_BIA, somewhere, somesize, (caddr_t)&bi8800[0] },
+       { IO_BIA, somewhere, somesize, (caddr_t)&bi8800[1] },
+};
+/* but you will have to make it work yourself (sorry) */
+#endif
+
 #if VAX8600
 struct nexusconnect sbi8600[] = {
 #if VAX8600
 struct nexusconnect sbi8600[] = {
-       { NNEX8600, NEXA8600, umaddr8600a, NBDP8600, 1, 0 },
-       { NNEX8600, NEXB8600, umaddr8600b, NBDP8600, 1, 0 },
+       { NNEX8600, NEXA8600, DW780, NBDP8600, umaddr8600a, 0 },
+       { NNEX8600, NEXB8600, DW780, NBDP8600, umaddr8600b, 0 },
 };
 struct iobus io8600[] = {
        { IO_ABUS, IOA8600(0), IOAMAPSIZ, (caddr_t)&sbi8600[0] },
        { IO_ABUS, IOA8600(1), IOAMAPSIZ, (caddr_t)&sbi8600[1] },
 };
 #endif
 };
 struct iobus io8600[] = {
        { IO_ABUS, IOA8600(0), IOAMAPSIZ, (caddr_t)&sbi8600[0] },
        { IO_ABUS, IOA8600(1), IOAMAPSIZ, (caddr_t)&sbi8600[1] },
 };
 #endif
-#if VAX630
-short  nexty630[NNEX630] = {
-       NEX_UBA0,
+
+#if VAX8200
+/* BEWARE, this is all limited to one BI for now */
+struct bibus bi8200[] = {
+       { BI_BASE(0) },
+};
+struct iobus io8200[] = {
+       { IO_BI, 0, 0, (caddr_t)&bi8200[0] },
 };
 #endif
 
 #if VAX780
 struct nexusconnect sbi780 = {
 };
 #endif
 
 #if VAX780
 struct nexusconnect sbi780 = {
-       NNEX780, NEX780, umaddr780, NBDP780, 1, 0,
+       NNEX780, NEX780, DW780, NBDP780, umaddr780, 0,
 };
 struct iobus io780[] = { IO_SBI780, 0, 0, (caddr_t)&sbi780 };
 #endif
 
 #if VAX750
 struct nexusconnect cmi750 = {
 };
 struct iobus io780[] = { IO_SBI780, 0, 0, (caddr_t)&sbi780 };
 #endif
 
 #if VAX750
 struct nexusconnect cmi750 = {
-       NNEX750, NEX750, umaddr750, NBDP750, 0, nexty750,
+       NNEX750, NEX750, DW750, NBDP750, umaddr750, nexty750,
 };
 struct iobus io750[] = { IO_CMI750, 0, 0, (caddr_t)&cmi750 };
 #endif
 
 #if VAX730
 struct nexusconnect xxx730 = {
 };
 struct iobus io750[] = { IO_CMI750, 0, 0, (caddr_t)&cmi750 };
 #endif
 
 #if VAX730
 struct nexusconnect xxx730 = {
-       NNEX730, NEX730, umaddr730, NBDP730, 0, nexty730,
+       NNEX730, NEX730, DW730, NBDP730, umaddr730, nexty730,
 };
 struct iobus io730[] = { IO_XXX730, 0, 0, (caddr_t)&xxx730 };
 #endif
 #if VAX630
 };
 struct iobus io730[] = { IO_XXX730, 0, 0, (caddr_t)&xxx730 };
 #endif
 #if VAX630
-struct nexusconnect xxx630 = {
-       NNEX630, NEX630, umaddr630, NBDP630, 0, nexty630,
+struct qbus qbus630 = {
+       QBA, QBAPAGES, QBAMAP630, (caddr_t)QMEM630, (caddr_t)QIOPAGE630
+};
+struct iobus io630[] = { IO_QBUS, 0, 0, (caddr_t)&qbus630 };
+#endif
+
+/*
+ * Clock info
+ */
+#if VAX8600 || VAX780 || VAX750 || VAX730
+int vaxstd_clkstartrt(), vaxstd_clkread(), vaxstd_clkwrite();
+struct clockops vaxstd_clockops = {
+       vaxstd_clkstartrt, vaxstd_clkread, vaxstd_clkwrite
+};
+#endif
+
+#if VAX8200
+int vaxstd_clkstartrt(), ka820_clkread(), ka820_clkwrite();
+struct clockops ka820_clockops = {
+       vaxstd_clkstartrt, ka820_clkread, ka820_clkwrite
 };
 };
-struct iobus io630[] = { IO_QBUS, 0, 0, (caddr_t)&xxx630 };
 #endif
 
 #endif
 
+#if VAX630
+int ka630_clkstartrt(), ka630_clkread(), ka630_clkwrite();
+struct clockops ka630_clockops = {
+       ka630_clkstartrt, ka630_clkread, ka630_clkwrite
+};
+#endif
+
+/*
+ * CPU dependent routines.
+ */
+#if VAX8600
+int    ka860_memenable(), ka860_memerr(), ka860_mchk();
+struct cpuops ka860_ops = {
+       &vaxstd_clockops, ka860_memenable, ka860_memerr, ka860_mchk, NULL
+};
+#endif
+
+#if VAX8200
+int    ka820_memenable(), ka820_memerr(), ka820_mchk(), ka820_init();
+struct cpuops ka820_ops = {
+       &ka820_clockops, ka820_memenable, ka820_memerr, ka820_mchk, ka820_init
+};
+#endif
+
+#if VAX780
+int    ka780_memenable(), ka780_memerr(), ka780_mchk();
+struct cpuops ka780_ops = {
+       &vaxstd_clockops, ka780_memenable, ka780_memerr, ka780_mchk, NULL
+};
+#endif
+
+#if VAX750
+int    ka750_memenable(), ka750_memerr(), ka750_mchk();
+struct cpuops ka750_ops = {
+       &vaxstd_clockops, ka750_memenable, ka750_memerr, ka750_mchk, NULL
+};
+#endif
+
+#if VAX730
+int    ka730_memenable(), ka730_memerr(), ka730_mchk();
+struct cpuops ka730_ops = {
+       &vaxstd_clockops, ka730_memenable, ka730_memerr, ka730_mchk, NULL
+};
+#endif
+
+#if VAX630
+int    ka630_memnop(), ka630_mchk(), ka630_init();
+struct cpuops ka630_ops = {
+       &ka630_clockops, ka630_memnop, ka630_memnop, ka630_mchk, ka630_init
+};
+#endif
 
 struct percpu percpu[] = {
 #if VAX8600
 
 struct percpu percpu[] = {
 #if VAX8600
-       { VAX_8600, 6, 2, io8600 },
+       { VAX_8600, 6, 2, io8600, &ka860_ops },
+#endif
+#if VAX8200
+       { VAX_8200, 2, 1, io8200, &ka820_ops },
 #endif
 #if VAX780
 #endif
 #if VAX780
-       { VAX_780, 2, 1, io780 },
+       { VAX_780, 2, 1, io780, &ka780_ops },
 #endif
 #if VAX750
 #endif
 #if VAX750
-       { VAX_750, 1, 1, io750 },
+       { VAX_750, 1, 1, io750, &ka750_ops },
 #endif
 #if VAX730
 #endif
 #if VAX730
-       { VAX_730, 1, 1, io730 },
+       { VAX_730, 1, 1, io730, &ka730_ops },
 #endif
 #if VAX630
 #endif
 #if VAX630
-       { VAX_630, 2, 1, io630 },
+       { VAX_630, 2, 1, io630, &ka630_ops },
 #endif
        0,
 };
 #endif
        0,
 };