void _dec_1000a_init() { u_int64_t variation; platform.family = "AlphaServer 1000/1000A"; if ((platform.model = alpha_dsr_sysname()) == NULL) { variation = hwrpb->rpb_variation & SV_ST_MASK; if ((platform.model = alpha_variation_name(variation, cputype == ST_DEC_1000 ? dec_1000_variations : dec_1000a_variations)) == NULL) platform.model = alpha_unknown_sysname(); } switch(PCS_CPU_MAJORTYPE(LOCATE_PCS(hwrpb, 0))) { case PCS_PROC_EV4: case PCS_PROC_EV45: platform.iobus = "apecs"; break; default: platform.iobus = "cia"; break; } platform.cons_init = dec_1000a_cons_init; platform.device_register = dec_1000a_device_register; }
void dec_3000_500_init() { u_int64_t variation; platform.family = "DEC 3000/500 (\"Flamingo\")"; if ((platform.model = alpha_dsr_sysname()) == NULL) { variation = hwrpb->rpb_variation & SV_ST_MASK; if (variation == SV_ST_ULTRA) { /* These are really the same. */ variation = SV_ST_FLAMINGOPLUS; } if ((platform.model = alpha_variation_name(variation, dec_3000_500_variations)) == NULL) { /* * This is how things used to be done. */ if (variation == SV_ST_RESERVED) { if (hwrpb->rpb_variation & SV_GRAPHICS) platform.model = dec_3000_500_sf; else platform.model = dec_3000_500_sp; } else platform.model = alpha_unknown_sysname(); } } platform.iobus = "tcasic"; platform.cons_init = dec_3000_500_cons_init; platform.device_register = dec_3000_500_device_register; }
void dec_eb64plus_init(void) { uint64_t variation; platform.family = "EB64+"; if ((platform.model = alpha_dsr_sysname()) == NULL) { variation = hwrpb->rpb_variation & SV_ST_MASK; if ((platform.model = alpha_variation_name(variation, dec_eb64plus_variations)) == NULL) platform.model = alpha_unknown_sysname(); } platform.iobus = "apecs"; platform.cons_init = dec_eb64plus_cons_init; platform.device_register = dec_eb64plus_device_register; /* * EB64+ systems can have 512K, 1M, or 2M secondary * caches. Default to middle-of-the-road. * * XXX Need to dynamically size it! */ uvmexp.ncolors = atop(1 * 1024 * 1024); }
void dec_2100_a50_init() { u_int64_t variation; platform.family = "AlphaStation 200/400 (\"Avanti\")"; if ((platform.model = alpha_dsr_sysname()) == NULL) { variation = hwrpb->rpb_variation & SV_ST_MASK; if (variation == SV_ST_AVANTI_XXX) { /* XXX apparently the same? */ variation = SV_ST_AVANTI; } if ((platform.model = alpha_variation_name(variation, dec_2100_a50_variations)) == NULL) platform.model = alpha_unknown_sysname(); } platform.iobus = "apecs"; platform.cons_init = dec_2100_a50_cons_init; platform.device_register = dec_2100_a50_device_register; #ifndef SMALL_KERNEL platform.mcheck_handler = dec_2100_a50_mcheck_handler; #endif }
void dec_kn300_init() { u_int64_t variation; int cachesize; platform.family = ALPHASERVER_4100; if ((platform.model = alpha_dsr_sysname()) == NULL) { variation = hwrpb->rpb_variation & SV_ST_MASK; if ((platform.model = alpha_variation_name(variation, dec_kn300_variations)) == NULL) platform.model = alpha_unknown_sysname(); } platform.iobus = "mcbus"; platform.cons_init = dec_kn300_cons_init; platform.device_register = dec_kn300_device_register; platform.mcheck_handler = dec_kn300_mcheck_handler; /* * Determine B-cache size by looking at the primary (console) * MCPCIA's WHOAMI register. */ mcpcia_init(); if (mcbus_primary.mcbus_valid) { switch (mcbus_primary.mcbus_bcache) { default: case CPU_BCache_0MB: /* No B-cache or invalid; default to 1MB. */ /* FALLTHROUGH */ case CPU_BCache_1MB: cachesize = (1 * 1024 * 1024); break; case CPU_BCache_2MB: cachesize = (2 * 1024 * 1024); break; case CPU_BCache_4MB: cachesize = (4 * 1024 * 1024); break; } } else { /* Default to 1MB. */ cachesize = (1 * 1024 * 1024); } uvmexp.ncolors = atop(cachesize); }
void dec_kn8ae_init(int cputype) { u_int64_t variation; platform.family = "AlphaServer 8400"; if ((platform.model = alpha_dsr_sysname()) == NULL) { variation = hwrpb->rpb_variation & SV_ST_MASK; if ((platform.model = alpha_variation_name(variation, dec_kn8ae_variations)) == NULL) platform.model = alpha_unknown_sysname(); } platform.iobus = "tlsb"; platform.cons_init = dec_kn8ae_cons_init; }
void dec_3000_300_init(void) { uint64_t variation; platform.family = "DEC 3000/300 (\"Pelican\")"; if ((platform.model = alpha_dsr_sysname()) == NULL) { variation = hwrpb->rpb_variation & SV_ST_MASK; if ((platform.model = alpha_variation_name(variation, dec_3000_300_variations)) == NULL) platform.model = alpha_unknown_sysname(); } platform.iobus = "tcasic"; platform.cons_init = dec_3000_300_cons_init; platform.device_register = dec_3000_300_device_register; }
void dec_eb64plus_init() { u_int64_t variation; platform.family = "EB64+"; if ((platform.model = alpha_dsr_sysname()) == NULL) { variation = hwrpb->rpb_variation & SV_ST_MASK; if ((platform.model = alpha_variation_name(variation, dec_eb64plus_variations)) == NULL) platform.model = alpha_unknown_sysname(); } platform.iobus = "apecs"; platform.cons_init = dec_eb64plus_cons_init; platform.device_register = dec_eb64plus_device_register; }
void dec_kn20aa_init(void) { uint64_t variation; platform.family = "AlphaStation 500 or 600 (KN20AA)"; if ((platform.model = alpha_dsr_sysname()) == NULL) { variation = hwrpb->rpb_variation & SV_ST_MASK; if ((platform.model = alpha_variation_name(variation, dec_kn20aa_variations)) == NULL) platform.model = alpha_unknown_sysname(); } platform.iobus = "cia"; platform.cons_init = dec_kn20aa_cons_init; platform.device_register = dec_kn20aa_device_register; platform.mcheck_handler = dec_kn20aa_mcheck_handler; }
void dec_axppci_33_init() { int cfg0val; u_int64_t variation; bus_space_tag_t iot; struct lca_config *lcp; bus_space_handle_t nsio; #define A33_NSIOBARRIER(type) bus_space_barrier(iot, nsio,\ NSIO_BASE, NSIO_SIZE, (type)) platform.family = "DEC AXPpci"; if ((platform.model = alpha_dsr_sysname()) == NULL) { variation = hwrpb->rpb_variation & SV_ST_MASK; if ((platform.model = alpha_variation_name(variation, dec_axppci_33_variations)) == NULL) platform.model = alpha_unknown_sysname(); } platform.iobus = "lca"; platform.cons_init = dec_axppci_33_cons_init; platform.device_register = dec_axppci_33_device_register; lcp = lca_preinit(); iot = &lcp->lc_iot; if (bus_space_map(iot, NSIO_PORT, NSIO_SIZE, 0, &nsio)) return; bus_space_write_1(iot, nsio, NSIO_INDEX, NSIO_CFG0); A33_NSIOBARRIER(BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); cfg0val = bus_space_read_1(iot, nsio, NSIO_DATA); cfg0val |= NSIO_IDE_ENABLE; bus_space_write_1(iot, nsio, NSIO_INDEX, NSIO_CFG0); A33_NSIOBARRIER(BUS_SPACE_BARRIER_WRITE); bus_space_write_1(iot, nsio, NSIO_DATA, cfg0val); A33_NSIOBARRIER(BUS_SPACE_BARRIER_WRITE); bus_space_write_1(iot, nsio, NSIO_DATA, cfg0val); /* Leave nsio mapped to catch any accidental port space collisions */ }
void dec_kn8ae_init() { u_int64_t variation; platform.family = "AlphaServer 8400"; if ((platform.model = alpha_dsr_sysname()) == NULL) { variation = hwrpb->rpb_variation & SV_ST_MASK; if ((platform.model = alpha_variation_name(variation, dec_kn8ae_variations)) == NULL) platform.model = alpha_unknown_sysname(); } platform.iobus = "tlsb"; platform.cons_init = dec_kn8ae_cons_init; platform.device_register = dec_kn8ae_device_register; platform.mcheck_handler = dec_kn8ae_mcheck_handler; }
void dec_kn20aa_init() { u_int64_t variation; platform.family = "AlphaStation 500 or 600 (KN20AA)"; if ((platform.model = alpha_dsr_sysname()) == NULL) { variation = hwrpb->rpb_variation & SV_ST_MASK; if ((platform.model = alpha_variation_name(variation, dec_kn20aa_variations)) == NULL) platform.model = alpha_unknown_sysname(); } platform.iobus = "cia"; platform.cons_init = dec_kn20aa_cons_init; platform.pci_intr_init = dec_kn20aa_intr_init; platform.pci_intr_map = dec_kn20aa_intr_map; platform.pci_intr_disable = dec_kn20aa_intr_disable; platform.pci_intr_enable = dec_kn20aa_intr_enable; }
void dec_eb66_init() { u_int64_t variation; platform.family = "EB66"; if ((platform.model = alpha_dsr_sysname()) == NULL) { variation = hwrpb->rpb_variation & SV_ST_MASK; if ((platform.model = alpha_variation_name(variation, dec_eb66_variations)) == NULL) platform.model = alpha_unknown_sysname(); } platform.iobus = "lca"; platform.cons_init = dec_eb66_cons_init; platform.device_register = dec_eb66_device_register; /* * EB66 systems have 1M secondary caches. */ uvmexp.ncolors = atop(1 * 1024 * 1024); }