Message ID | 20240213130341.1793-12-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | hw: Strengthen SysBus & QBus API | expand |
On 13/02/2024 13:03, Philippe Mathieu-Daudé wrote: > Inline cpu_create() in order to call > qdev_init_gpio_in_named_with_opaque() > before the CPU is realized. Note that with the previous new patch included in the series, qdev_init_gpio_in_named_with_opaque() should be replaced by qdev_init_gpio_in_named() in the commit message above instead. > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > Reviewed-by: Peter Maydell <peter.maydell@linaro.org> > Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> > --- > hw/sparc/leon3.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c > index d2be900988..d0ff4a2892 100644 > --- a/hw/sparc/leon3.c > +++ b/hw/sparc/leon3.c > @@ -233,7 +233,9 @@ static void leon3_generic_hw_init(MachineState *machine) > APBPnp *apb_pnp; > > /* Init CPU */ > - cpu = SPARC_CPU(cpu_create(machine->cpu_type)); > + cpu = SPARC_CPU(object_new(machine->cpu_type)); > + qdev_init_gpio_in_named(DEVICE(cpu), leon3_set_pil_in, "pil", 1); > + qdev_realize(DEVICE(cpu), NULL, &error_fatal); > env = &cpu->env; > > cpu_sparc_set_id(env, 0); > @@ -260,7 +262,6 @@ static void leon3_generic_hw_init(MachineState *machine) > > /* Allocate IRQ manager */ > irqmpdev = qdev_new(TYPE_GRLIB_IRQMP); > - qdev_init_gpio_in_named(DEVICE(cpu), leon3_set_pil_in, "pil", 1); > sysbus_realize_and_unref(SYS_BUS_DEVICE(irqmpdev), &error_fatal); > sysbus_mmio_map(SYS_BUS_DEVICE(irqmpdev), 0, LEON3_IRQMP_OFFSET); > qdev_connect_gpio_out_named(irqmpdev, "grlib-irq", 0, ATB, Mark.
diff --git a/hw/sparc/leon3.c b/hw/sparc/leon3.c index d2be900988..d0ff4a2892 100644 --- a/hw/sparc/leon3.c +++ b/hw/sparc/leon3.c @@ -233,7 +233,9 @@ static void leon3_generic_hw_init(MachineState *machine) APBPnp *apb_pnp; /* Init CPU */ - cpu = SPARC_CPU(cpu_create(machine->cpu_type)); + cpu = SPARC_CPU(object_new(machine->cpu_type)); + qdev_init_gpio_in_named(DEVICE(cpu), leon3_set_pil_in, "pil", 1); + qdev_realize(DEVICE(cpu), NULL, &error_fatal); env = &cpu->env; cpu_sparc_set_id(env, 0); @@ -260,7 +262,6 @@ static void leon3_generic_hw_init(MachineState *machine) /* Allocate IRQ manager */ irqmpdev = qdev_new(TYPE_GRLIB_IRQMP); - qdev_init_gpio_in_named(DEVICE(cpu), leon3_set_pil_in, "pil", 1); sysbus_realize_and_unref(SYS_BUS_DEVICE(irqmpdev), &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(irqmpdev), 0, LEON3_IRQMP_OFFSET); qdev_connect_gpio_out_named(irqmpdev, "grlib-irq", 0,