|
@@ -84,7 +84,7 @@ static void ppc_heathrow_init(MachineState *machine)
|
|
|
PowerPCCPU *cpu = NULL;
|
|
|
CPUPPCState *env = NULL;
|
|
|
char *filename;
|
|
|
- qemu_irq *pic, **heathrow_irqs;
|
|
|
+ qemu_irq *pic;
|
|
|
int linux_boot, i;
|
|
|
MemoryRegion *ram = g_new(MemoryRegion, 1);
|
|
|
MemoryRegion *bios = g_new(MemoryRegion, 1);
|
|
@@ -227,16 +227,15 @@ static void ppc_heathrow_init(MachineState *machine)
|
|
|
memory_region_add_subregion(sysmem, 0xfe000000, isa);
|
|
|
|
|
|
/* XXX: we register only 1 output pin for heathrow PIC */
|
|
|
- heathrow_irqs = g_malloc0(smp_cpus * sizeof(qemu_irq *));
|
|
|
- heathrow_irqs[0] =
|
|
|
- g_malloc0(smp_cpus * sizeof(qemu_irq) * 1);
|
|
|
+ pic_dev = qdev_create(NULL, TYPE_HEATHROW);
|
|
|
+ qdev_init_nofail(pic_dev);
|
|
|
+
|
|
|
/* Connect the heathrow PIC outputs to the 6xx bus */
|
|
|
for (i = 0; i < smp_cpus; i++) {
|
|
|
switch (PPC_INPUT(env)) {
|
|
|
case PPC_FLAGS_INPUT_6xx:
|
|
|
- heathrow_irqs[i] = heathrow_irqs[0] + (i * 1);
|
|
|
- heathrow_irqs[i][0] =
|
|
|
- ((qemu_irq *)env->irq_inputs)[PPC6xx_INPUT_INT];
|
|
|
+ qdev_connect_gpio_out(pic_dev, 0,
|
|
|
+ ((qemu_irq *)env->irq_inputs)[PPC6xx_INPUT_INT]);
|
|
|
break;
|
|
|
default:
|
|
|
error_report("Bus model not supported on OldWorld Mac machine");
|
|
@@ -244,6 +243,11 @@ static void ppc_heathrow_init(MachineState *machine)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ pic = g_new0(qemu_irq, HEATHROW_NUM_IRQS);
|
|
|
+ for (i = 0; i < HEATHROW_NUM_IRQS; i++) {
|
|
|
+ pic[i] = qdev_get_gpio_in(pic_dev, i);
|
|
|
+ }
|
|
|
+
|
|
|
/* Timebase Frequency */
|
|
|
if (kvm_enabled()) {
|
|
|
tbfreq = kvmppc_get_tbfreq();
|
|
@@ -256,7 +260,7 @@ static void ppc_heathrow_init(MachineState *machine)
|
|
|
error_report("Only 6xx bus is supported on heathrow machine");
|
|
|
exit(1);
|
|
|
}
|
|
|
- pic_dev = heathrow_pic_init(1, heathrow_irqs, &pic);
|
|
|
+
|
|
|
pci_bus = pci_grackle_init(0xfec00000, pic,
|
|
|
get_system_memory(),
|
|
|
get_system_io());
|