a_config
extern struct a_config a_config;
&pci_bus_dma_tag, a_config.a_is_monarch,
a_config.a_bus_freq);
if (!a_config.a_is_monarch)
struct a_config a_config;
physmemr[0].size = a_config.a_mem_size;
availmemr[0].size = a_config.a_mem_size - availmemr[0].start;
ticks_per_sec = a_config.a_bus_freq;
if(comcnattach(tag, CPC_COM0, 9600, CPC_COM_SPEED(a_config.a_bus_freq),
CPC_COM_SPEED(a_config.a_bus_freq),
a_config.a_boot_device = config1 & 0x80 ? A_BOOT_FLASH : A_BOOT_ROM;
a_config.a_has_ecc = (config1 & 0x40) != 0;
case 0x00: a_config.a_mem_size = 32 * 1024 * 1024; break;
case 0x10: a_config.a_mem_size = 64 * 1024 * 1024; break;
case 0x20: a_config.a_mem_size = 128 * 1024 * 1024; break;
case 0x30: a_config.a_mem_size = 256 * 1024 * 1024; break;
a_config.a_l2_cache = (config1 >> 2) & 3;
case 0x00: a_config.a_bus_freq = 66666666; break;
case 0x01: a_config.a_bus_freq = 83333333; break;
case 0x02: a_config.a_bus_freq = 100000000; break;
case 0x03: a_config.a_bus_freq = 0; break; /* XXX */
a_config.a_is_monarch = (config0 & 0x80) == 0;
a_config.a_has_eth = (config0 & 0x20) != 0;
a_config.a_has_rtc = (config0 & 0x10) == 0;
case 0x00: a_config.a_flash_size = 256 * 1024 * 1024; break;
case 0x04: a_config.a_flash_size = 128 * 1024 * 1024; break;
case 0x08: a_config.a_flash_size = 64 * 1024 * 1024; break;
case 0x0c: a_config.a_flash_size = 32 * 1024 * 1024; break;
case 0x00: a_config.a_flash_width = 64; break;
case 0x01: a_config.a_flash_width = 32; break;
case 0x02: a_config.a_flash_width = 16; break;
case 0x03: a_config.a_flash_width = 0; break;
a_config.a_is_monarch ? "" : "not");
a_config.a_boot_device == A_BOOT_ROM ? "ROM" : "flash",
a_config.a_has_ecc ? "" : "no ",
a_config.a_l2_cache == A_CACHE_PARITY ? "parity" :
a_config.a_l2_cache == A_CACHE_NO_PARITY ? "no-parity" : "no");
if (a_config.a_has_rtc) {
if (a_config.a_has_eth) {
if (a_config.a_flash_width != 0) {
maa.u.mb_flash.size = a_config.a_flash_size;
maa.u.mb_flash.width = a_config.a_flash_width;