[BACK]Return to cpuconf.c CVS log [TXT][DIR] Up to [local] / sys / arch / alpha / alpha

Annotation of sys/arch/alpha/alpha/cpuconf.c, Revision 1.1.1.1

1.1       nbrk        1: /* $OpenBSD: cpuconf.c,v 1.11 2007/03/16 21:22:27 robert Exp $ */
                      2: /* $NetBSD: cpuconf.c,v 1.27 2000/06/26 02:42:04 enami Exp $ */
                      3:
                      4: /*-
                      5:  * Copyright (c) 2000 The NetBSD Foundation, Inc.
                      6:  * All rights reserved.
                      7:  *
                      8:  * This code is derived from software contributed to The NetBSD Foundation
                      9:  * by Jason R. Thorpe.
                     10:  *
                     11:  * Redistribution and use in source and binary forms, with or without
                     12:  * modification, are permitted provided that the following conditions
                     13:  * are met:
                     14:  * 1. Redistributions of source code must retain the above copyright
                     15:  *    notice, this list of conditions and the following disclaimer.
                     16:  * 2. Redistributions in binary form must reproduce the above copyright
                     17:  *    notice, this list of conditions and the following disclaimer in the
                     18:  *    documentation and/or other materials provided with the distribution.
                     19:  * 3. All advertising materials mentioning features or use of this software
                     20:  *    must display the following acknowledgement:
                     21:  *     This product includes software developed by the NetBSD
                     22:  *     Foundation, Inc. and its contributors.
                     23:  * 4. Neither the name of The NetBSD Foundation nor the names of its
                     24:  *    contributors may be used to endorse or promote products derived
                     25:  *    from this software without specific prior written permission.
                     26:  *
                     27:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
                     28:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     29:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     30:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
                     31:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     32:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     33:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     34:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     35:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     36:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     37:  * POSSIBILITY OF SUCH DAMAGE.
                     38:  */
                     39:
                     40: /*
                     41:  * Copyright (c) 1996 Christopher G. Demetriou.  All rights reserved.
                     42:  *
                     43:  * Redistribution and use in source and binary forms, with or without
                     44:  * modification, are permitted provided that the following conditions
                     45:  * are met:
                     46:  * 1. Redistributions of source code must retain the above copyright
                     47:  *    notice, this list of conditions and the following disclaimer.
                     48:  * 2. Redistributions in binary form must reproduce the above copyright
                     49:  *    notice, this list of conditions and the following disclaimer in the
                     50:  *    documentation and/or other materials provided with the distribution.
                     51:  * 3. All advertising materials mentioning features or use of this software
                     52:  *    must display the following acknowledgement:
                     53:  *      This product includes software developed by Christopher G. Demetriou
                     54:  *     for the NetBSD Project.
                     55:  * 4. The name of the author may not be used to endorse or promote products
                     56:  *    derived from this software without specific prior written permission
                     57:  *
                     58:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     59:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
                     60:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
                     61:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
                     62:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
                     63:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                     64:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
                     65:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
                     66:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
                     67:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                     68:  */
                     69:
                     70: #include <sys/param.h>
                     71: #include <sys/device.h>
                     72: #include <sys/systm.h>
                     73: #include <machine/cpuconf.h>
                     74: #include <machine/rpb.h>
                     75:
                     76: #ifdef DEC_3000_500
                     77: extern void dec_3000_500_init(void);
                     78: #else
                     79: #define        dec_3000_500_init       platform_not_configured
                     80: #endif
                     81:
                     82: #ifdef DEC_3000_300
                     83: extern void dec_3000_300_init(void);
                     84: #else
                     85: #define        dec_3000_300_init       platform_not_configured
                     86: #endif
                     87:
                     88: #ifdef DEC_AXPPCI_33
                     89: extern void dec_axppci_33_init(void);
                     90: #else
                     91: #define        dec_axppci_33_init      platform_not_configured
                     92: #endif
                     93:
                     94: #ifdef DEC_2100_A50
                     95: extern void dec_2100_a50_init(void);
                     96: #else
                     97: #define        dec_2100_a50_init       platform_not_configured
                     98: #endif
                     99:
                    100: #ifdef DEC_KN20AA
                    101: extern void dec_kn20aa_init(void);
                    102: #else
                    103: #define        dec_kn20aa_init         platform_not_configured
                    104: #endif
                    105:
                    106: #ifdef DEC_EB164
                    107: extern void dec_eb164_init(void);
                    108: #else
                    109: #define        dec_eb164_init          platform_not_configured
                    110: #endif
                    111:
                    112: #ifdef DEC_EB64PLUS
                    113: extern void dec_eb64plus_init(void);
                    114: #else
                    115: #define dec_eb64plus_init      platform_not_configured
                    116: #endif
                    117:
                    118: #ifdef DEC_KN300
                    119: extern void dec_kn300_init(void);
                    120: #else
                    121: #define        dec_kn300_init          platform_not_configured
                    122: #endif
                    123:
                    124: #ifdef DEC_550
                    125: extern void dec_550_init(void);
                    126: #else
                    127: #define        dec_550_init            platform_not_configured
                    128: #endif
                    129:
                    130: #if defined(DEC_1000) || defined(DEC_1000A)
                    131: extern void _dec_1000a_init(void);
                    132: #endif
                    133: #ifdef DEC_1000A
                    134: #define        dec_1000a_init          _dec_1000a_init
                    135: #else
                    136: #define        dec_1000a_init          platform_not_configured
                    137: #endif
                    138: #ifdef DEC_1000
                    139: #define        dec_1000_init           _dec_1000a_init
                    140: #else
                    141: #define        dec_1000_init           platform_not_configured
                    142: #endif
                    143:
                    144: #ifdef DEC_6600
                    145: extern void dec_6600_init(void);
                    146: #else
                    147: #define        dec_6600_init           platform_not_configured
                    148: #endif
                    149:
                    150: #ifdef API_UP1000
                    151: extern void api_up1000_init(void);
                    152: #else
                    153: #define        api_up1000_init         platform_not_configured
                    154: #endif
                    155:
                    156: static const struct cpuinit cpuinit[] = {
                    157:        cpu_notsupp(ST_ADU, "Alpha Demo Unit"),
                    158:        cpu_notsupp(ST_DEC_4000, "DEC 4000 (``Cobra'')"),
                    159:        cpu_notsupp(ST_DEC_7000, "DEC 7000 (``Ruby'')"),
                    160:        cpu_init(ST_DEC_3000_500, dec_3000_500_init, "DEC_3000_500"),
                    161:        cpu_notsupp(ST_DEC_2000_300, "DEC_2000_300"),
                    162:        cpu_init(ST_DEC_3000_300, dec_3000_300_init, "DEC_3000_300"),
                    163:        cpu_notsupp(ST_AVALON_A12, "AVALON_A12"),
                    164:        cpu_notsupp(ST_DEC_2100_A500, "DEC_2100_A500"),
                    165:        cpu_notsupp(ST_DEC_APXVME_64, "AXPvme 64"),
                    166:        cpu_init(ST_DEC_AXPPCI_33, dec_axppci_33_init, "DEC_AXPPCI_33"),
                    167:        cpu_notsupp(ST_DEC_21000, "DEC_KN8AE"),
                    168:        cpu_init(ST_DEC_2100_A50, dec_2100_a50_init, "DEC_2100_A50"),
                    169:        cpu_notsupp(ST_DEC_MUSTANG, "Mustang"),
                    170:        cpu_init(ST_DEC_KN20AA, dec_kn20aa_init, "DEC_KN20AA"),
                    171:        cpu_init(ST_DEC_1000, dec_1000_init, "DEC_1000"),
                    172:        cpu_notsupp(ST_EB66, "DEC_EB66"),
                    173:        cpu_init(ST_EB64P, dec_eb64plus_init, "DEC_EB64PLUS"),
                    174:        cpu_notsupp(ST_ALPHABOOK1, "DEC_ALPHABOOK1"),
                    175:        cpu_init(ST_DEC_4100, dec_kn300_init, "DEC_KN300"),
                    176:        cpu_notsupp(ST_DEC_EV45_PBP, "EV45 Passive Backplane Board"),
                    177:        cpu_notsupp(ST_DEC_2100A_A500, "DEC_2100A_A500"),
                    178:        cpu_init(ST_EB164, dec_eb164_init, "DEC_EB164"),
                    179:        cpu_init(ST_DEC_1000A, dec_1000a_init, "DEC_1000A"),
                    180:        cpu_notsupp(ST_DEC_ALPHAVME_224, "AlphaVME 224"),
                    181:        cpu_init(ST_DEC_550, dec_550_init, "DEC_550"),
                    182:        cpu_notsupp(ST_DEC_EV56_PBP, "EV56 Passive Backplane Board"),
                    183:        cpu_notsupp(ST_DEC_ALPHAVME_320, "AlphaVME 320"),
                    184:        cpu_init(ST_DEC_6600, dec_6600_init, "DEC_6600"),
                    185:        cpu_init(ST_API_NAUTILUS, api_up1000_init, "API_UP1000"),
                    186: };
                    187: static const int ncpuinit = (sizeof(cpuinit) / sizeof(cpuinit[0]));
                    188:
                    189: const struct cpuinit *
                    190: platform_lookup(int systype)
                    191: {
                    192:        const struct cpuinit *c;
                    193:        int i;
                    194:
                    195:        for (i = 0; i < ncpuinit; i++) {
                    196:                c = &cpuinit[i];
                    197:                if (c->systype == systype)
                    198:                        return (c);
                    199:        }
                    200:        return (NULL);
                    201: }
                    202:
                    203: void
                    204: platform_not_configured()
                    205: {
                    206:        const struct cpuinit *c = platform_lookup(cputype);
                    207:
                    208:        printf("\nSupport for system type %d is not present in this kernel.\n",
                    209:            cputype);
                    210:        printf("Please build a kernel with \"options %s\" and reboot.\n",
                    211:            c->option);
                    212:        panic("platform not configured");
                    213: }
                    214:
                    215: void
                    216: platform_not_supported()
                    217: {
                    218:        const struct cpuinit *c = platform_lookup(cputype);
                    219:
                    220:        printf("\nOpenBSD does not yet support system type %d (%s).\n", cputype,
                    221:            (c != NULL) ? c->option : "???");
                    222:        panic("platform not supported");
                    223: }

CVSweb