Revision c227f099 hw/sun4m.c
b/hw/sun4m.c | ||
---|---|---|
92 | 92 |
#define ESCC_CLOCK 4915200 |
93 | 93 |
|
94 | 94 |
struct sun4m_hwdef { |
95 |
a_target_phys_addr iommu_base, slavio_base;
|
|
96 |
a_target_phys_addr intctl_base, counter_base, nvram_base, ms_kb_base;
|
|
97 |
a_target_phys_addr serial_base, fd_base;
|
|
98 |
a_target_phys_addr idreg_base, dma_base, esp_base, le_base;
|
|
99 |
a_target_phys_addr tcx_base, cs_base, apc_base, aux1_base, aux2_base;
|
|
100 |
a_target_phys_addr ecc_base;
|
|
95 |
target_phys_addr_t iommu_base, slavio_base;
|
|
96 |
target_phys_addr_t intctl_base, counter_base, nvram_base, ms_kb_base;
|
|
97 |
target_phys_addr_t serial_base, fd_base;
|
|
98 |
target_phys_addr_t idreg_base, dma_base, esp_base, le_base;
|
|
99 |
target_phys_addr_t tcx_base, cs_base, apc_base, aux1_base, aux2_base;
|
|
100 |
target_phys_addr_t ecc_base;
|
|
101 | 101 |
uint32_t ecc_version; |
102 | 102 |
uint8_t nvram_machine_id; |
103 | 103 |
uint16_t machine_id; |
... | ... | |
109 | 109 |
#define MAX_IOUNITS 5 |
110 | 110 |
|
111 | 111 |
struct sun4d_hwdef { |
112 |
a_target_phys_addr iounit_bases[MAX_IOUNITS], slavio_base;
|
|
113 |
a_target_phys_addr counter_base, nvram_base, ms_kb_base;
|
|
114 |
a_target_phys_addr serial_base;
|
|
115 |
a_target_phys_addr espdma_base, esp_base;
|
|
116 |
a_target_phys_addr ledma_base, le_base;
|
|
117 |
a_target_phys_addr tcx_base;
|
|
118 |
a_target_phys_addr sbi_base;
|
|
112 |
target_phys_addr_t iounit_bases[MAX_IOUNITS], slavio_base;
|
|
113 |
target_phys_addr_t counter_base, nvram_base, ms_kb_base;
|
|
114 |
target_phys_addr_t serial_base;
|
|
115 |
target_phys_addr_t espdma_base, esp_base;
|
|
116 |
target_phys_addr_t ledma_base, le_base;
|
|
117 |
target_phys_addr_t tcx_base;
|
|
118 |
target_phys_addr_t sbi_base;
|
|
119 | 119 |
uint8_t nvram_machine_id; |
120 | 120 |
uint16_t machine_id; |
121 | 121 |
uint32_t iounit_version; |
... | ... | |
124 | 124 |
}; |
125 | 125 |
|
126 | 126 |
struct sun4c_hwdef { |
127 |
a_target_phys_addr iommu_base, slavio_base;
|
|
128 |
a_target_phys_addr intctl_base, counter_base, nvram_base, ms_kb_base;
|
|
129 |
a_target_phys_addr serial_base, fd_base;
|
|
130 |
a_target_phys_addr idreg_base, dma_base, esp_base, le_base;
|
|
131 |
a_target_phys_addr tcx_base, aux1_base;
|
|
127 |
target_phys_addr_t iommu_base, slavio_base;
|
|
128 |
target_phys_addr_t intctl_base, counter_base, nvram_base, ms_kb_base;
|
|
129 |
target_phys_addr_t serial_base, fd_base;
|
|
130 |
target_phys_addr_t idreg_base, dma_base, esp_base, le_base;
|
|
131 |
target_phys_addr_t tcx_base, aux1_base;
|
|
132 | 132 |
uint8_t nvram_machine_id; |
133 | 133 |
uint16_t machine_id; |
134 | 134 |
uint32_t iommu_version; |
... | ... | |
164 | 164 |
return 0; |
165 | 165 |
} |
166 | 166 |
|
167 |
static void nvram_init(a_m48t59 *nvram, uint8_t *macaddr, const char *cmdline,
|
|
168 |
const char *boot_devices, a_ram_addr RAM_size,
|
|
167 |
static void nvram_init(m48t59_t *nvram, uint8_t *macaddr, const char *cmdline,
|
|
168 |
const char *boot_devices, ram_addr_t RAM_size,
|
|
169 | 169 |
uint32_t kernel_size, |
170 | 170 |
int width, int height, int depth, |
171 | 171 |
int nvram_machine_id, const char *arch) |
... | ... | |
294 | 294 |
|
295 | 295 |
static unsigned long sun4m_load_kernel(const char *kernel_filename, |
296 | 296 |
const char *initrd_filename, |
297 |
a_ram_addr RAM_size)
|
|
297 |
ram_addr_t RAM_size)
|
|
298 | 298 |
{ |
299 | 299 |
int linux_boot; |
300 | 300 |
unsigned int i; |
... | ... | |
352 | 352 |
return kernel_size; |
353 | 353 |
} |
354 | 354 |
|
355 |
static void *iommu_init(a_target_phys_addr addr, uint32_t version, qemu_irq irq)
|
|
355 |
static void *iommu_init(target_phys_addr_t addr, uint32_t version, qemu_irq irq)
|
|
356 | 356 |
{ |
357 | 357 |
DeviceState *dev; |
358 | 358 |
SysBusDevice *s; |
... | ... | |
367 | 367 |
return s; |
368 | 368 |
} |
369 | 369 |
|
370 |
static void *sparc32_dma_init(a_target_phys_addr daddr, qemu_irq parent_irq,
|
|
370 |
static void *sparc32_dma_init(target_phys_addr_t daddr, qemu_irq parent_irq,
|
|
371 | 371 |
void *iommu, qemu_irq *dev_irq) |
372 | 372 |
{ |
373 | 373 |
DeviceState *dev; |
... | ... | |
384 | 384 |
return s; |
385 | 385 |
} |
386 | 386 |
|
387 |
static void lance_init(NICInfo *nd, a_target_phys_addr leaddr,
|
|
387 |
static void lance_init(NICInfo *nd, target_phys_addr_t leaddr,
|
|
388 | 388 |
void *dma_opaque, qemu_irq irq) |
389 | 389 |
{ |
390 | 390 |
DeviceState *dev; |
... | ... | |
404 | 404 |
qdev_connect_gpio_out(dma_opaque, 0, reset); |
405 | 405 |
} |
406 | 406 |
|
407 |
static DeviceState *slavio_intctl_init(a_target_phys_addr addr,
|
|
408 |
a_target_phys_addr addrg,
|
|
407 |
static DeviceState *slavio_intctl_init(target_phys_addr_t addr,
|
|
408 |
target_phys_addr_t addrg,
|
|
409 | 409 |
qemu_irq **parent_irq) |
410 | 410 |
{ |
411 | 411 |
DeviceState *dev; |
... | ... | |
433 | 433 |
#define SYS_TIMER_OFFSET 0x10000ULL |
434 | 434 |
#define CPU_TIMER_OFFSET(cpu) (0x1000ULL * cpu) |
435 | 435 |
|
436 |
static void slavio_timer_init_all(a_target_phys_addr addr, qemu_irq master_irq,
|
|
436 |
static void slavio_timer_init_all(target_phys_addr_t addr, qemu_irq master_irq,
|
|
437 | 437 |
qemu_irq *cpu_irqs, unsigned int num_cpus) |
438 | 438 |
{ |
439 | 439 |
DeviceState *dev; |
... | ... | |
448 | 448 |
sysbus_mmio_map(s, 0, addr + SYS_TIMER_OFFSET); |
449 | 449 |
|
450 | 450 |
for (i = 0; i < MAX_CPUS; i++) { |
451 |
sysbus_mmio_map(s, i + 1, addr + (a_target_phys_addr)CPU_TIMER_OFFSET(i));
|
|
451 |
sysbus_mmio_map(s, i + 1, addr + (target_phys_addr_t)CPU_TIMER_OFFSET(i));
|
|
452 | 452 |
sysbus_connect_irq(s, i + 1, cpu_irqs[i]); |
453 | 453 |
} |
454 | 454 |
} |
... | ... | |
459 | 459 |
#define MISC_MDM 0x01b00000 |
460 | 460 |
#define MISC_SYS 0x01f00000 |
461 | 461 |
|
462 |
static void slavio_misc_init(a_target_phys_addr base,
|
|
463 |
a_target_phys_addr aux1_base,
|
|
464 |
a_target_phys_addr aux2_base, qemu_irq irq,
|
|
462 |
static void slavio_misc_init(target_phys_addr_t base,
|
|
463 |
target_phys_addr_t aux1_base,
|
|
464 |
target_phys_addr_t aux2_base, qemu_irq irq,
|
|
465 | 465 |
qemu_irq fdc_tc) |
466 | 466 |
{ |
467 | 467 |
DeviceState *dev; |
... | ... | |
498 | 498 |
qemu_system_powerdown = qdev_get_gpio_in(dev, 0); |
499 | 499 |
} |
500 | 500 |
|
501 |
static void ecc_init(a_target_phys_addr base, qemu_irq irq, uint32_t version)
|
|
501 |
static void ecc_init(target_phys_addr_t base, qemu_irq irq, uint32_t version)
|
|
502 | 502 |
{ |
503 | 503 |
DeviceState *dev; |
504 | 504 |
SysBusDevice *s; |
... | ... | |
514 | 514 |
} |
515 | 515 |
} |
516 | 516 |
|
517 |
static void apc_init(a_target_phys_addr power_base, qemu_irq cpu_halt)
|
|
517 |
static void apc_init(target_phys_addr_t power_base, qemu_irq cpu_halt)
|
|
518 | 518 |
{ |
519 | 519 |
DeviceState *dev; |
520 | 520 |
SysBusDevice *s; |
... | ... | |
527 | 527 |
sysbus_connect_irq(s, 0, cpu_halt); |
528 | 528 |
} |
529 | 529 |
|
530 |
static void tcx_init(a_target_phys_addr addr, int vram_size, int width,
|
|
530 |
static void tcx_init(target_phys_addr_t addr, int vram_size, int width,
|
|
531 | 531 |
int height, int depth) |
532 | 532 |
{ |
533 | 533 |
DeviceState *dev; |
... | ... | |
563 | 563 |
/* NCR89C100/MACIO Internal ID register */ |
564 | 564 |
static const uint8_t idreg_data[] = { 0xfe, 0x81, 0x01, 0x03 }; |
565 | 565 |
|
566 |
static void idreg_init(a_target_phys_addr addr)
|
|
566 |
static void idreg_init(target_phys_addr_t addr)
|
|
567 | 567 |
{ |
568 | 568 |
DeviceState *dev; |
569 | 569 |
SysBusDevice *s; |
... | ... | |
578 | 578 |
|
579 | 579 |
static int idreg_init1(SysBusDevice *dev) |
580 | 580 |
{ |
581 |
a_ram_addr idreg_offset;
|
|
581 |
ram_addr_t idreg_offset;
|
|
582 | 582 |
|
583 | 583 |
idreg_offset = qemu_ram_alloc(sizeof(idreg_data)); |
584 | 584 |
sysbus_init_mmio(dev, sizeof(idreg_data), idreg_offset | IO_MEM_ROM); |
... | ... | |
599 | 599 |
device_init(idreg_register_devices); |
600 | 600 |
|
601 | 601 |
/* Boot PROM (OpenBIOS) */ |
602 |
static void prom_init(a_target_phys_addr addr, const char *bios_name)
|
|
602 |
static void prom_init(target_phys_addr_t addr, const char *bios_name)
|
|
603 | 603 |
{ |
604 | 604 |
DeviceState *dev; |
605 | 605 |
SysBusDevice *s; |
... | ... | |
635 | 635 |
|
636 | 636 |
static int prom_init1(SysBusDevice *dev) |
637 | 637 |
{ |
638 |
a_ram_addr prom_offset;
|
|
638 |
ram_addr_t prom_offset;
|
|
639 | 639 |
|
640 | 640 |
prom_offset = qemu_ram_alloc(PROM_SIZE_MAX); |
641 | 641 |
sysbus_init_mmio(dev, PROM_SIZE_MAX, prom_offset | IO_MEM_ROM); |
... | ... | |
667 | 667 |
/* System RAM */ |
668 | 668 |
static int ram_init1(SysBusDevice *dev) |
669 | 669 |
{ |
670 |
a_ram_addr RAM_size, ram_offset;
|
|
670 |
ram_addr_t RAM_size, ram_offset;
|
|
671 | 671 |
RamDevice *d = FROM_SYSBUS(RamDevice, dev); |
672 | 672 |
|
673 | 673 |
RAM_size = d->size; |
... | ... | |
677 | 677 |
return 0; |
678 | 678 |
} |
679 | 679 |
|
680 |
static void ram_init(a_target_phys_addr addr, a_ram_addr RAM_size,
|
|
680 |
static void ram_init(target_phys_addr_t addr, ram_addr_t RAM_size,
|
|
681 | 681 |
uint64_t max_mem) |
682 | 682 |
{ |
683 | 683 |
DeviceState *dev; |
... | ... | |
743 | 743 |
return env; |
744 | 744 |
} |
745 | 745 |
|
746 |
static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, a_ram_addr RAM_size,
|
|
746 |
static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size,
|
|
747 | 747 |
const char *boot_device, |
748 | 748 |
const char *kernel_filename, |
749 | 749 |
const char *kernel_cmdline, |
... | ... | |
1129 | 1129 |
}; |
1130 | 1130 |
|
1131 | 1131 |
/* SPARCstation 5 hardware initialisation */ |
1132 |
static void ss5_init(a_ram_addr RAM_size,
|
|
1132 |
static void ss5_init(ram_addr_t RAM_size,
|
|
1133 | 1133 |
const char *boot_device, |
1134 | 1134 |
const char *kernel_filename, const char *kernel_cmdline, |
1135 | 1135 |
const char *initrd_filename, const char *cpu_model) |
... | ... | |
1139 | 1139 |
} |
1140 | 1140 |
|
1141 | 1141 |
/* SPARCstation 10 hardware initialisation */ |
1142 |
static void ss10_init(a_ram_addr RAM_size,
|
|
1142 |
static void ss10_init(ram_addr_t RAM_size,
|
|
1143 | 1143 |
const char *boot_device, |
1144 | 1144 |
const char *kernel_filename, const char *kernel_cmdline, |
1145 | 1145 |
const char *initrd_filename, const char *cpu_model) |
... | ... | |
1149 | 1149 |
} |
1150 | 1150 |
|
1151 | 1151 |
/* SPARCserver 600MP hardware initialisation */ |
1152 |
static void ss600mp_init(a_ram_addr RAM_size,
|
|
1152 |
static void ss600mp_init(ram_addr_t RAM_size,
|
|
1153 | 1153 |
const char *boot_device, |
1154 | 1154 |
const char *kernel_filename, |
1155 | 1155 |
const char *kernel_cmdline, |
... | ... | |
1160 | 1160 |
} |
1161 | 1161 |
|
1162 | 1162 |
/* SPARCstation 20 hardware initialisation */ |
1163 |
static void ss20_init(a_ram_addr RAM_size,
|
|
1163 |
static void ss20_init(ram_addr_t RAM_size,
|
|
1164 | 1164 |
const char *boot_device, |
1165 | 1165 |
const char *kernel_filename, const char *kernel_cmdline, |
1166 | 1166 |
const char *initrd_filename, const char *cpu_model) |
... | ... | |
1170 | 1170 |
} |
1171 | 1171 |
|
1172 | 1172 |
/* SPARCstation Voyager hardware initialisation */ |
1173 |
static void vger_init(a_ram_addr RAM_size,
|
|
1173 |
static void vger_init(ram_addr_t RAM_size,
|
|
1174 | 1174 |
const char *boot_device, |
1175 | 1175 |
const char *kernel_filename, const char *kernel_cmdline, |
1176 | 1176 |
const char *initrd_filename, const char *cpu_model) |
... | ... | |
1180 | 1180 |
} |
1181 | 1181 |
|
1182 | 1182 |
/* SPARCstation LX hardware initialisation */ |
1183 |
static void ss_lx_init(a_ram_addr RAM_size,
|
|
1183 |
static void ss_lx_init(ram_addr_t RAM_size,
|
|
1184 | 1184 |
const char *boot_device, |
1185 | 1185 |
const char *kernel_filename, const char *kernel_cmdline, |
1186 | 1186 |
const char *initrd_filename, const char *cpu_model) |
... | ... | |
1190 | 1190 |
} |
1191 | 1191 |
|
1192 | 1192 |
/* SPARCstation 4 hardware initialisation */ |
1193 |
static void ss4_init(a_ram_addr RAM_size,
|
|
1193 |
static void ss4_init(ram_addr_t RAM_size,
|
|
1194 | 1194 |
const char *boot_device, |
1195 | 1195 |
const char *kernel_filename, const char *kernel_cmdline, |
1196 | 1196 |
const char *initrd_filename, const char *cpu_model) |
... | ... | |
1200 | 1200 |
} |
1201 | 1201 |
|
1202 | 1202 |
/* SPARCClassic hardware initialisation */ |
1203 |
static void scls_init(a_ram_addr RAM_size,
|
|
1203 |
static void scls_init(ram_addr_t RAM_size,
|
|
1204 | 1204 |
const char *boot_device, |
1205 | 1205 |
const char *kernel_filename, const char *kernel_cmdline, |
1206 | 1206 |
const char *initrd_filename, const char *cpu_model) |
... | ... | |
1210 | 1210 |
} |
1211 | 1211 |
|
1212 | 1212 |
/* SPARCbook hardware initialisation */ |
1213 |
static void sbook_init(a_ram_addr RAM_size,
|
|
1213 |
static void sbook_init(ram_addr_t RAM_size,
|
|
1214 | 1214 |
const char *boot_device, |
1215 | 1215 |
const char *kernel_filename, const char *kernel_cmdline, |
1216 | 1216 |
const char *initrd_filename, const char *cpu_model) |
... | ... | |
1341 | 1341 |
}, |
1342 | 1342 |
}; |
1343 | 1343 |
|
1344 |
static DeviceState *sbi_init(a_target_phys_addr addr, qemu_irq **parent_irq)
|
|
1344 |
static DeviceState *sbi_init(target_phys_addr_t addr, qemu_irq **parent_irq)
|
|
1345 | 1345 |
{ |
1346 | 1346 |
DeviceState *dev; |
1347 | 1347 |
SysBusDevice *s; |
... | ... | |
1361 | 1361 |
return dev; |
1362 | 1362 |
} |
1363 | 1363 |
|
1364 |
static void sun4d_hw_init(const struct sun4d_hwdef *hwdef, a_ram_addr RAM_size,
|
|
1364 |
static void sun4d_hw_init(const struct sun4d_hwdef *hwdef, ram_addr_t RAM_size,
|
|
1365 | 1365 |
const char *boot_device, |
1366 | 1366 |
const char *kernel_filename, |
1367 | 1367 |
const char *kernel_cmdline, |
... | ... | |
1403 | 1403 |
} |
1404 | 1404 |
|
1405 | 1405 |
for (i = 0; i < MAX_IOUNITS; i++) |
1406 |
if (hwdef->iounit_bases[i] != (a_target_phys_addr)-1)
|
|
1406 |
if (hwdef->iounit_bases[i] != (target_phys_addr_t)-1)
|
|
1407 | 1407 |
iounits[i] = iommu_init(hwdef->iounit_bases[i], |
1408 | 1408 |
hwdef->iounit_version, |
1409 | 1409 |
sbi_irq[0]); |
... | ... | |
1472 | 1472 |
} |
1473 | 1473 |
|
1474 | 1474 |
/* SPARCserver 1000 hardware initialisation */ |
1475 |
static void ss1000_init(a_ram_addr RAM_size,
|
|
1475 |
static void ss1000_init(ram_addr_t RAM_size,
|
|
1476 | 1476 |
const char *boot_device, |
1477 | 1477 |
const char *kernel_filename, const char *kernel_cmdline, |
1478 | 1478 |
const char *initrd_filename, const char *cpu_model) |
... | ... | |
1482 | 1482 |
} |
1483 | 1483 |
|
1484 | 1484 |
/* SPARCcenter 2000 hardware initialisation */ |
1485 |
static void ss2000_init(a_ram_addr RAM_size,
|
|
1485 |
static void ss2000_init(ram_addr_t RAM_size,
|
|
1486 | 1486 |
const char *boot_device, |
1487 | 1487 |
const char *kernel_filename, const char *kernel_cmdline, |
1488 | 1488 |
const char *initrd_filename, const char *cpu_model) |
... | ... | |
1530 | 1530 |
}, |
1531 | 1531 |
}; |
1532 | 1532 |
|
1533 |
static DeviceState *sun4c_intctl_init(a_target_phys_addr addr,
|
|
1533 |
static DeviceState *sun4c_intctl_init(target_phys_addr_t addr,
|
|
1534 | 1534 |
qemu_irq *parent_irq) |
1535 | 1535 |
{ |
1536 | 1536 |
DeviceState *dev; |
... | ... | |
1550 | 1550 |
return dev; |
1551 | 1551 |
} |
1552 | 1552 |
|
1553 |
static void sun4c_hw_init(const struct sun4c_hwdef *hwdef, a_ram_addr RAM_size,
|
|
1553 |
static void sun4c_hw_init(const struct sun4c_hwdef *hwdef, ram_addr_t RAM_size,
|
|
1554 | 1554 |
const char *boot_device, |
1555 | 1555 |
const char *kernel_filename, |
1556 | 1556 |
const char *kernel_cmdline, |
... | ... | |
1615 | 1615 |
|
1616 | 1616 |
slavio_misc_init(0, hwdef->aux1_base, 0, slavio_irq[1], fdc_tc); |
1617 | 1617 |
|
1618 |
if (hwdef->fd_base != (a_target_phys_addr)-1) {
|
|
1618 |
if (hwdef->fd_base != (target_phys_addr_t)-1) {
|
|
1619 | 1619 |
/* there is zero or one floppy drive */ |
1620 | 1620 |
memset(fd, 0, sizeof(fd)); |
1621 | 1621 |
dinfo = drive_get(IF_FLOPPY, 0, 0); |
... | ... | |
1664 | 1664 |
} |
1665 | 1665 |
|
1666 | 1666 |
/* SPARCstation 2 hardware initialisation */ |
1667 |
static void ss2_init(a_ram_addr RAM_size,
|
|
1667 |
static void ss2_init(ram_addr_t RAM_size,
|
|
1668 | 1668 |
const char *boot_device, |
1669 | 1669 |
const char *kernel_filename, const char *kernel_cmdline, |
1670 | 1670 |
const char *initrd_filename, const char *cpu_model) |
Also available in: Unified diff