mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-02 21:32:52 +00:00
hw/m68k/mcf_intc: Pass CPU using QOM link property
QOM objects shouldn't access each other internals fields except using the QOM API. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Tested-by: Thomas Huth <huth@tuxfamily.org> Reviewed-by: Thomas Huth <huth@tuxfamily.org> Message-ID: <20231024083010.12453-5-philmd@linaro.org> Signed-off-by: Thomas Huth <huth@tuxfamily.org>
This commit is contained in:
parent
4768968960
commit
4c4ee593d6
1 changed files with 11 additions and 6 deletions
|
@ -14,6 +14,7 @@
|
|||
#include "hw/irq.h"
|
||||
#include "hw/sysbus.h"
|
||||
#include "hw/m68k/mcf.h"
|
||||
#include "hw/qdev-properties.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
#define TYPE_MCF_INTC "mcf-intc"
|
||||
|
@ -176,10 +177,17 @@ static void mcf_intc_instance_init(Object *obj)
|
|||
sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->iomem);
|
||||
}
|
||||
|
||||
static Property mcf_intc_properties[] = {
|
||||
DEFINE_PROP_LINK("m68k-cpu", mcf_intc_state, cpu,
|
||||
TYPE_M68K_CPU, M68kCPU *),
|
||||
DEFINE_PROP_END_OF_LIST(),
|
||||
};
|
||||
|
||||
static void mcf_intc_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
DeviceClass *dc = DEVICE_CLASS(oc);
|
||||
|
||||
device_class_set_props(dc, mcf_intc_properties);
|
||||
set_bit(DEVICE_CATEGORY_MISC, dc->categories);
|
||||
dc->reset = mcf_intc_reset;
|
||||
}
|
||||
|
@ -204,16 +212,13 @@ qemu_irq *mcf_intc_init(MemoryRegion *sysmem,
|
|||
M68kCPU *cpu)
|
||||
{
|
||||
DeviceState *dev;
|
||||
mcf_intc_state *s;
|
||||
|
||||
dev = qdev_new(TYPE_MCF_INTC);
|
||||
object_property_set_link(OBJECT(dev), "m68k-cpu",
|
||||
OBJECT(cpu), &error_abort);
|
||||
sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
|
||||
|
||||
s = MCF_INTC(dev);
|
||||
s->cpu = cpu;
|
||||
|
||||
memory_region_add_subregion(sysmem, base,
|
||||
sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0));
|
||||
|
||||
return qemu_allocate_irqs(mcf_intc_set_irq, s, 64);
|
||||
return qemu_allocate_irqs(mcf_intc_set_irq, dev, 64);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue