cpuconf.c revision 1.10 1 1.10 thorpej /* $NetBSD: cpuconf.c,v 1.10 1998/03/20 21:48:21 thorpej Exp $ */
2 1.1 cgd
3 1.1 cgd /*
4 1.1 cgd * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved.
5 1.1 cgd *
6 1.1 cgd * Redistribution and use in source and binary forms, with or without
7 1.1 cgd * modification, are permitted provided that the following conditions
8 1.1 cgd * are met:
9 1.1 cgd * 1. Redistributions of source code must retain the above copyright
10 1.1 cgd * notice, this list of conditions and the following disclaimer.
11 1.1 cgd * 2. Redistributions in binary form must reproduce the above copyright
12 1.1 cgd * notice, this list of conditions and the following disclaimer in the
13 1.1 cgd * documentation and/or other materials provided with the distribution.
14 1.1 cgd * 3. All advertising materials mentioning features or use of this software
15 1.1 cgd * must display the following acknowledgement:
16 1.1 cgd * This product includes software developed by Christopher G. Demetriou
17 1.1 cgd * for the NetBSD Project.
18 1.1 cgd * 4. The name of the author may not be used to endorse or promote products
19 1.1 cgd * derived from this software without specific prior written permission
20 1.1 cgd *
21 1.1 cgd * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22 1.1 cgd * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23 1.1 cgd * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24 1.1 cgd * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25 1.1 cgd * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26 1.1 cgd * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 1.1 cgd * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 1.1 cgd * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 1.1 cgd * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30 1.1 cgd * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 1.1 cgd */
32 1.1 cgd
33 1.1 cgd #include <sys/param.h>
34 1.1 cgd #include <sys/device.h>
35 1.7 mjacob #include <sys/systm.h>
36 1.1 cgd #include <machine/cpuconf.h>
37 1.7 mjacob #include <machine/rpb.h>
38 1.7 mjacob
39 1.8 thorpej #include "opt_dec_3000_500.h"
40 1.8 thorpej #ifdef DEC_3000_500
41 1.7 mjacob extern void dec_3000_500_init __P((void));
42 1.7 mjacob #else
43 1.8 thorpej #define dec_3000_500_init platform_not_configured
44 1.7 mjacob #endif
45 1.1 cgd
46 1.8 thorpej #include "opt_dec_3000_300.h"
47 1.8 thorpej #ifdef DEC_3000_300
48 1.7 mjacob extern void dec_3000_300_init __P((void));
49 1.7 mjacob #else
50 1.8 thorpej #define dec_3000_300_init platform_not_configured
51 1.7 mjacob #endif
52 1.7 mjacob
53 1.8 thorpej #include "opt_dec_axppci_33.h"
54 1.8 thorpej #ifdef DEC_AXPPCI_33
55 1.7 mjacob extern void dec_axppci_33_init __P((void));
56 1.7 mjacob #else
57 1.8 thorpej #define dec_axppci_33_init platform_not_configured
58 1.7 mjacob #endif
59 1.7 mjacob
60 1.8 thorpej #include "opt_dec_kn8ae.h"
61 1.8 thorpej #ifdef DEC_KN8AE
62 1.7 mjacob extern void dec_kn8ae_init __P((void));
63 1.7 mjacob #else
64 1.8 thorpej #define dec_kn8ae_init platform_not_configured
65 1.7 mjacob #endif
66 1.7 mjacob
67 1.8 thorpej #include "opt_dec_2100_a50.h"
68 1.8 thorpej #ifdef DEC_2100_A50
69 1.7 mjacob extern void dec_2100_a50_init __P((void));
70 1.7 mjacob #else
71 1.8 thorpej #define dec_2100_a50_init platform_not_configured
72 1.7 mjacob #endif
73 1.7 mjacob
74 1.8 thorpej #include "opt_dec_kn20aa.h"
75 1.8 thorpej #ifdef DEC_KN20AA
76 1.7 mjacob extern void dec_kn20aa_init __P((void));
77 1.7 mjacob #else
78 1.8 thorpej #define dec_kn20aa_init platform_not_configured
79 1.7 mjacob #endif
80 1.7 mjacob
81 1.8 thorpej #include "opt_dec_eb64plus.h"
82 1.8 thorpej #ifdef DEC_EB64PLUS
83 1.7 mjacob extern void dec_eb64plus_init __P((void));
84 1.7 mjacob #else
85 1.8 thorpej #define dec_eb64plus_init platform_not_configured
86 1.7 mjacob #endif
87 1.7 mjacob
88 1.8 thorpej #include "opt_dec_eb164.h"
89 1.8 thorpej #ifdef DEC_EB164
90 1.7 mjacob extern void dec_eb164_init __P((void));
91 1.7 mjacob #else
92 1.8 thorpej #define dec_eb164_init platform_not_configured
93 1.7 mjacob #endif
94 1.1 cgd
95 1.9 ross #include "opt_avalon_a12.h"
96 1.9 ross #ifdef AVALON_A12
97 1.9 ross extern void avalon_a12_init __P((void));
98 1.9 ross #else
99 1.9 ross #define avalon_a12_init platform_not_configured
100 1.9 ross #endif
101 1.9 ross
102 1.8 thorpej struct cpuinit cpuinit[] = {
103 1.8 thorpej cpu_notsupp("???"), /* 0: ??? */
104 1.8 thorpej cpu_notsupp("ST_ADU"), /* 1: ST_ADU */
105 1.8 thorpej cpu_notsupp("ST_DEC_4000"), /* 2: ST_DEC_4000 */
106 1.8 thorpej cpu_notsupp("ST_DEC_7000"), /* 3: ST_DEC_7000 */
107 1.8 thorpej cpu_init(dec_3000_500_init,"DEC_3000_500"), /* 4: ST_DEC_3000_500 */
108 1.8 thorpej cpu_notsupp("???"), /* 5: ??? */
109 1.8 thorpej cpu_notsupp("ST_DEC_2000_300"), /* 6: ST_DEC_2000_300 */
110 1.8 thorpej cpu_init(dec_3000_300_init,"DEC_3000_300"), /* 7: ST_DEC_3000_300 */
111 1.9 ross cpu_init(avalon_a12_init,"ST_AVALON_A12"), /* 8: ST_AVALON_A12 */
112 1.8 thorpej cpu_notsupp("ST_DEC_2100_A500"), /* 9: ST_DEC_2100_A500 */
113 1.8 thorpej cpu_notsupp("ST_DEC_APXVME_64"), /* 10: ST_DEC_APXVME_64 */
114 1.8 thorpej cpu_init(dec_axppci_33_init,"DEC_AXPPCI_33"),/* 11: ST_DEC_AXPPCI_33 */
115 1.8 thorpej cpu_init(dec_kn8ae_init,"DEC_KN8AE"), /* 12: ST_DEC_21000 */
116 1.8 thorpej cpu_init(dec_2100_a50_init,"DEC_2100_A50"), /* 13: ST_DEC_2100_A50 */
117 1.8 thorpej cpu_notsupp("ST_DEC_MUSTANG"), /* 14: ST_DEC_MUSTANG */
118 1.8 thorpej cpu_init(dec_kn20aa_init,"DEC_KN20AA"), /* 15: ST_DEC_KN20AA */
119 1.8 thorpej cpu_notsupp("???"), /* 16: ??? */
120 1.8 thorpej cpu_notsupp("ST_DEC_1000"), /* 17: ST_DEC_1000 */
121 1.8 thorpej cpu_notsupp("???"), /* 18: ??? */
122 1.8 thorpej cpu_notsupp("ST_EB66"), /* 19: ST_EB66 */
123 1.8 thorpej cpu_init(dec_eb64plus_init,"DEC_EB64PLUS"), /* 20: ST_EB64P */
124 1.10 thorpej cpu_notsupp("ST_ALPHABOOK1"), /* 21: ST_ALPHABOOK1 */
125 1.8 thorpej cpu_notsupp("ST_DEC_4100"), /* 22: ST_DEC_4100 */
126 1.8 thorpej cpu_notsupp("ST_DEC_EV45_PBP"), /* 23: ST_DEC_EV45_PBP */
127 1.8 thorpej cpu_notsupp("ST_DEC_2100A_A500"), /* 24: ST_DEC_2100A_A500 */
128 1.8 thorpej cpu_notsupp("???"), /* 25: ??? */
129 1.8 thorpej cpu_init(dec_eb164_init,"DEC_EB164"), /* 26: ST_EB164 */
130 1.10 thorpej cpu_notsupp("ST_DEC_1000A"), /* 27: ST_DEC_1000A */
131 1.10 thorpej cpu_notsupp("ST_DEC_ALPHAVME_224"), /* 28: ST_DEC_ALPHAVME_224 */
132 1.10 thorpej cpu_notsupp("???"), /* 29: ??? */
133 1.10 thorpej cpu_notsupp("???"), /* 30: ??? */
134 1.10 thorpej cpu_notsupp("???"), /* 31: ??? */
135 1.10 thorpej cpu_notsupp("ST_DEC_EV56_PBP"), /* 32: ST_DEC_EV56_PBP */
136 1.10 thorpej cpu_notsupp("ST_DEC_ALPHAVME_320"), /* 33: ST_DEC_ALPHAVME_320 */
137 1.1 cgd };
138 1.8 thorpej int ncpuinit = (sizeof(cpuinit) / sizeof(cpuinit[0]));
139 1.7 mjacob
140 1.7 mjacob void
141 1.8 thorpej platform_not_configured()
142 1.7 mjacob {
143 1.7 mjacob extern int cputype;
144 1.8 thorpej
145 1.7 mjacob printf("\n");
146 1.7 mjacob printf("Support for system type %d is not present in this kernel.\n",
147 1.7 mjacob cputype);
148 1.8 thorpej printf("Please build a kernel with \"options %s\" and reboot.\n",
149 1.8 thorpej cpuinit[cputype].option);
150 1.7 mjacob printf("\n");
151 1.8 thorpej panic("platform not configured\n");
152 1.8 thorpej }
153 1.8 thorpej
154 1.8 thorpej void
155 1.8 thorpej platform_not_supported()
156 1.8 thorpej {
157 1.8 thorpej extern int cputype;
158 1.8 thorpej const char *typestr;
159 1.8 thorpej
160 1.8 thorpej if (cputype >= ncpuinit)
161 1.8 thorpej typestr = "???";
162 1.8 thorpej else
163 1.8 thorpej typestr = cpuinit[cputype].option;
164 1.8 thorpej
165 1.8 thorpej printf("\n");
166 1.8 thorpej printf("NetBSD does not yet support system type %d (%s).\n", cputype,
167 1.8 thorpej typestr);
168 1.8 thorpej printf("\n");
169 1.8 thorpej panic("platform not supported");
170 1.7 mjacob }
171