summaryrefslogtreecommitdiff
path: root/sys/alpha
diff options
context:
space:
mode:
authorMatt Jacob <mjacob@FreeBSD.org>2000-07-04 01:43:31 +0000
committerMatt Jacob <mjacob@FreeBSD.org>2000-07-04 01:43:31 +0000
commitd25c830c8d79e258b91fde13cf209dd2e5d9af73 (patch)
treeb0e5948ed76c7f08e0d0b7ab052b3b8d21af6f96 /sys/alpha
parent4d5cde0e88b159f85a641671cbfcad0f4dfdc078 (diff)
Notes
Diffstat (limited to 'sys/alpha')
-rw-r--r--sys/alpha/alpha/cpuconf.c54
1 files changed, 50 insertions, 4 deletions
diff --git a/sys/alpha/alpha/cpuconf.c b/sys/alpha/alpha/cpuconf.c
index 5773de76bdae..7f7da4f2bac7 100644
--- a/sys/alpha/alpha/cpuconf.c
+++ b/sys/alpha/alpha/cpuconf.c
@@ -86,6 +86,12 @@ extern void dec_eb164_init __P((int));
#define dec_eb164_init platform_not_configured
#endif
+#ifdef DEC_KN300
+extern void dec_kn300_init __P((int));
+#else
+#define dec_kn300_init platform_not_configured
+#endif
+
#ifdef AVALON_A12
extern void avalon_a12_init __P((int));
#else
@@ -110,6 +116,18 @@ extern void dec_1000a_init __P((int));
#define dec_1000a_init platform_not_configured
#endif
+#ifdef DEC_2100_A500
+extern void dec_2100_a500_init __P((int));
+#else
+#define dec_2100_a500_init platform_not_configured
+#endif
+
+#ifdef API_UP1000
+extern void api_up1000_init __P((int));
+#else
+#define api_up1000_init platform_not_configured
+#endif
+
struct cpuinit cpuinit[] = {
cpu_notsupp("???"), /* 0: ??? */
cpu_notsupp("ST_ADU"), /* 1: ST_ADU */
@@ -120,7 +138,7 @@ struct cpuinit cpuinit[] = {
cpu_notsupp("ST_DEC_2000_300"), /* 6: ST_DEC_2000_300 */
cpu_init(dec_3000_300_init,"DEC_3000_300"), /* 7: ST_DEC_3000_300 */
cpu_init(avalon_a12_init,"ST_AVALON_A12"), /* 8: ST_AVALON_A12 */
- cpu_notsupp("ST_DEC_2100_A500"), /* 9: ST_DEC_2100_A500 */
+ cpu_init(dec_2100_a500_init, "ST_DEC_2100_A500"), /* 9: ST_DEC_2100_A500 */
cpu_notsupp("ST_DEC_APXVME_64"), /* 10: ST_DEC_APXVME_64 */
cpu_init(dec_axppci_33_init,"DEC_AXPPCI_33"),/* 11: ST_DEC_AXPPCI_33 */
cpu_init(dec_kn8ae_init,"DEC_KN8AE"), /* 12: ST_DEC_21000 */
@@ -133,9 +151,9 @@ struct cpuinit cpuinit[] = {
cpu_notsupp("ST_EB66"), /* 19: ST_EB66 */
cpu_init(dec_eb64plus_init,"DEC_EB64PLUS"), /* 20: ST_EB64P */
cpu_notsupp("ST_ALPHABOOK1"), /* 21: ST_ALPHABOOK1 */
- cpu_notsupp("ST_DEC_4100"), /* 22: ST_DEC_4100 */
+ cpu_init(dec_kn300_init,"DEC_KN300"), /* 22: ST_DEC_4100 */
cpu_notsupp("ST_DEC_EV45_PBP"), /* 23: ST_DEC_EV45_PBP */
- cpu_notsupp("ST_DEC_2100A_A500"), /* 24: ST_DEC_2100A_A500 */
+ cpu_init(dec_2100_a500_init, "ST_DEC_2100A_A500"), /* 24: ST_DEC_2100A_A500 */
cpu_notsupp("???"), /* 25: ??? */
cpu_init(dec_eb164_init,"DEC_EB164"), /* 26: ST_EB164 */
cpu_init(dec_1000a_init,"ST_DEC_1000A"), /* 27: ST_DEC_1000A */
@@ -149,14 +167,37 @@ struct cpuinit cpuinit[] = {
};
int ncpuinit = (sizeof(cpuinit) / sizeof(cpuinit[0]));
+struct cpuinit api_cpuinit[] = {
+ cpu_notsupp("???"), /* 0: ??? */
+ cpu_init(api_up1000_init,"API_UP1000"), /* 1: ST_API_UP1000 */
+};
+int napi_cpuinit = (sizeof(api_cpuinit) / sizeof(api_cpuinit[0]));
+
+
void
platform_not_configured(int cputype)
{
+ struct cpuinit *cpu;
+ int cpuidx;
+
+ cputype = hwrpb->rpb_type;
+
+ if (cputype < 1)
+ cputype *= -1;
+
+ if (cputype >= API_ST_BASE) {
+ cpuidx = cputype - API_ST_BASE;
+ cpu = api_cpuinit;
+ } else {
+ cpuidx = cputype;
+ cpu = cpuinit;
+ }
+
printf("\n");
printf("Support for system type %d is not present in this kernel.\n",
cputype);
printf("Please build a kernel with \"options %s\" and reboot.\n",
- cpuinit[cputype].option);
+ cpu[cpuidx].option);
printf("\n");
panic("platform not configured\n");
}
@@ -166,6 +207,11 @@ platform_not_supported(int cputype)
{
const char *typestr;
+ cputype = hwrpb->rpb_type;
+
+ if (cputype < 1)
+ cputype *= -1;
+
if (cputype >= ncpuinit)
typestr = "???";
else