summaryrefslogtreecommitdiffstats
path: root/hw/armv7m_nvic.c
diff options
context:
space:
mode:
authorJuan Quintela2010-12-02 02:17:33 +0100
committerAnthony Liguori2011-04-22 21:41:41 +0200
commit0797226c56ea51a72ebbf7dcecfd2c1e44147cf0 (patch)
treeeb383132f49a2ccf8ad055abf93723c8e0f659a1 /hw/armv7m_nvic.c
parentvmstate: port pl011 (diff)
downloadqemu-0797226c56ea51a72ebbf7dcecfd2c1e44147cf0.tar.gz
qemu-0797226c56ea51a72ebbf7dcecfd2c1e44147cf0.tar.xz
qemu-0797226c56ea51a72ebbf7dcecfd2c1e44147cf0.zip
vmstate: port armv7m nvic
Signed-off-by: Juan Quintela <quintela@redhat.com>
Diffstat (limited to 'hw/armv7m_nvic.c')
-rw-r--r--hw/armv7m_nvic.c39
1 files changed, 14 insertions, 25 deletions
diff --git a/hw/armv7m_nvic.c b/hw/armv7m_nvic.c
index ffe16b8a61..d06eec9b39 100644
--- a/hw/armv7m_nvic.c
+++ b/hw/armv7m_nvic.c
@@ -365,30 +365,19 @@ static void nvic_writel(void *opaque, uint32_t offset, uint32_t value)
}
}
-static void nvic_save(QEMUFile *f, void *opaque)
-{
- nvic_state *s = (nvic_state *)opaque;
-
- qemu_put_be32(f, s->systick.control);
- qemu_put_be32(f, s->systick.reload);
- qemu_put_be64(f, s->systick.tick);
- qemu_put_timer(f, s->systick.timer);
-}
-
-static int nvic_load(QEMUFile *f, void *opaque, int version_id)
-{
- nvic_state *s = (nvic_state *)opaque;
-
- if (version_id != 1)
- return -EINVAL;
-
- s->systick.control = qemu_get_be32(f);
- s->systick.reload = qemu_get_be32(f);
- s->systick.tick = qemu_get_be64(f);
- qemu_get_timer(f, s->systick.timer);
-
- return 0;
-}
+static const VMStateDescription vmstate_nvic = {
+ .name = "armv7m_nvic",
+ .version_id = 1,
+ .minimum_version_id = 1,
+ .minimum_version_id_old = 1,
+ .fields = (VMStateField[]) {
+ VMSTATE_UINT32(systick.control, nvic_state),
+ VMSTATE_UINT32(systick.reload, nvic_state),
+ VMSTATE_INT64(systick.tick, nvic_state),
+ VMSTATE_TIMER(systick.timer, nvic_state),
+ VMSTATE_END_OF_LIST()
+ }
+};
static int armv7m_nvic_init(SysBusDevice *dev)
{
@@ -397,7 +386,7 @@ static int armv7m_nvic_init(SysBusDevice *dev)
gic_init(&s->gic);
cpu_register_physical_memory(0xe000e000, 0x1000, s->gic.iomemtype);
s->systick.timer = qemu_new_timer_ns(vm_clock, systick_timer_tick, s);
- register_savevm(&dev->qdev, "armv7m_nvic", -1, 1, nvic_save, nvic_load, s);
+ vmstate_register(&dev->qdev, -1, &vmstate_nvic, s);
return 0;
}