aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2009-06-04 13:12:05 +0100
committerPaul Brook <paul@codesourcery.com>2009-06-04 13:12:05 +0100
commitbdb11366b9370e97fb436444c697c01fe839dc11 (patch)
tree029aadb55bb219df61dc353e89f38c16629df0a7
parentf3d08ee6aeb6cc85928dda4ec5e972b85cda495d (diff)
Remove ARM NVIC initialization hack
The ARMv7-M NVIC device pokes itself into the CPU state. Now we have a proper device model we can have the CPU/SoC code do this. Signed-off-by: Paul Brook <paul@codesourcery.com>
-rw-r--r--hw/armv7m.c2
-rw-r--r--hw/armv7m_nvic.c5
2 files changed, 1 insertions, 6 deletions
diff --git a/hw/armv7m.c b/hw/armv7m.c
index 9657ed1f16..c3c5b9e347 100644
--- a/hw/armv7m.c
+++ b/hw/armv7m.c
@@ -198,7 +198,7 @@ qemu_irq *armv7m_init(int flash_size, int sram_size,
armv7m_bitband_init();
nvic = qdev_create(NULL, "armv7m_nvic");
- qdev_set_prop_ptr(nvic, "cpu", env);
+ env->v7m.nvic = nvic;
qdev_init(nvic);
cpu_pic = arm_pic_init_cpu(env);
sysbus_connect_irq(sysbus_from_qdev(nvic), 0, cpu_pic[ARM_PIC_CPU_IRQ]);
diff --git a/hw/armv7m_nvic.c b/hw/armv7m_nvic.c
index 2a948ac346..f789c785fd 100644
--- a/hw/armv7m_nvic.c
+++ b/hw/armv7m_nvic.c
@@ -393,15 +393,10 @@ static int nvic_load(QEMUFile *f, void *opaque, int version_id)
static void armv7m_nvic_init(SysBusDevice *dev)
{
nvic_state *s= FROM_SYSBUSGIC(nvic_state, dev);
- CPUState *env;
- env = qdev_get_prop_ptr(&dev->qdev, "cpu");
gic_init(&s->gic);
cpu_register_physical_memory(0xe000e000, 0x1000, s->gic.iomemtype);
s->systick.timer = qemu_new_timer(vm_clock, systick_timer_tick, s);
- if (env->v7m.nvic)
- hw_error("CPU can only have one NVIC\n");
- env->v7m.nvic = s;
register_savevm("armv7m_nvic", -1, 1, nvic_save, nvic_load, s);
}