mac_newworld: simplify IRQ wiring
commit9929301ee12fb2bc8afe0d954cb1b58a8b1e8880
authorGreg Kurz <groug@kaod.org>
Tue, 27 Nov 2018 13:06:22 +0000 (27 14:06 +0100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Thu, 20 Dec 2018 22:24:23 +0000 (21 09:24 +1100)
tree2ee6842d7815bbd3117b55d9a2d775e74948fcaf
parent57aa218818c06c3fd7e10b5b6e1cbccdca6790ab
mac_newworld: simplify IRQ wiring

The OpenPIC have 5 outputs per connected CPU. The machine init code hence
needs a bi-dimensional array (smp_cpu lines, 5 columns) to wire up the irqs
between the PIC and the CPUs.

The current code first allocates an array of smp_cpus pointers to qemu_irq
type, then it allocates another array of smp_cpus * 5 qemu_irq and fills the
first array with pointers to each line of the second array. This is rather
convoluted.

Simplify the logic by introducing a structured type that describes all the
OpenPIC outputs for a single CPU, ie, fixed size of 5 qemu_irq, and only
allocate a smp_cpu sized array of those.

This also allows to use g_new(T, n) instead of g_malloc(sizeof(T) * n)
as recommended in HACKING.

Signed-off-by: Greg Kurz <groug@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
hw/ppc/mac_newworld.c
include/hw/ppc/openpic.h