[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 18/26] vmstate: port dma device
From: |
Juan Quintela |
Subject: |
[Qemu-devel] [PATCH 18/26] vmstate: port dma device |
Date: |
Thu, 10 Sep 2009 03:04:39 +0200 |
Signed-off-by: Juan Quintela <address@hidden>
---
hw/dma.c | 85 ++++++++++++++++++++++++-------------------------------------
1 files changed, 34 insertions(+), 51 deletions(-)
diff --git a/hw/dma.c b/hw/dma.c
index b95407b..f418e42 100644
--- a/hw/dma.c
+++ b/hw/dma.c
@@ -500,71 +500,54 @@ static void dma_init2(struct dma_cont *d, int base, int
dshift,
}
}
-static void dma_save (QEMUFile *f, void *opaque)
-{
- struct dma_cont *d = opaque;
- int i;
-
- /* qemu_put_8s (f, &d->status); */
- qemu_put_8s (f, &d->command);
- qemu_put_8s (f, &d->mask);
- qemu_put_8s (f, &d->flip_flop);
- qemu_put_be32 (f, d->dshift);
-
- for (i = 0; i < 4; ++i) {
- struct dma_regs *r = &d->regs[i];
- qemu_put_be32 (f, r->now[0]);
- qemu_put_be32 (f, r->now[1]);
- qemu_put_be16s (f, &r->base[0]);
- qemu_put_be16s (f, &r->base[1]);
- qemu_put_8s (f, &r->mode);
- qemu_put_8s (f, &r->page);
- qemu_put_8s (f, &r->pageh);
- qemu_put_8s (f, &r->dack);
- qemu_put_8s (f, &r->eop);
+static const VMStateDescription vmstate_dma_regs = {
+ .name = "dma_regs",
+ .version_id = 1,
+ .minimum_version_id = 1,
+ .minimum_version_id_old = 1,
+ .fields = (VMStateField []) {
+ VMSTATE_INT32_ARRAY(now, struct dma_regs, 2),
+ VMSTATE_UINT16_ARRAY(base, struct dma_regs, 2),
+ VMSTATE_UINT8(mode, struct dma_regs),
+ VMSTATE_UINT8(page, struct dma_regs),
+ VMSTATE_UINT8(pageh, struct dma_regs),
+ VMSTATE_UINT8(dack, struct dma_regs),
+ VMSTATE_UINT8(eop, struct dma_regs),
+ VMSTATE_END_OF_LIST()
}
-}
+};
-static int dma_load (QEMUFile *f, void *opaque, int version_id)
+static int dma_post_load(void *opaque)
{
- struct dma_cont *d = opaque;
- int i;
-
- if (version_id != 1)
- return -EINVAL;
-
- /* qemu_get_8s (f, &d->status); */
- qemu_get_8s (f, &d->command);
- qemu_get_8s (f, &d->mask);
- qemu_get_8s (f, &d->flip_flop);
- d->dshift=qemu_get_be32 (f);
-
- for (i = 0; i < 4; ++i) {
- struct dma_regs *r = &d->regs[i];
- r->now[0]=qemu_get_be32 (f);
- r->now[1]=qemu_get_be32 (f);
- qemu_get_be16s (f, &r->base[0]);
- qemu_get_be16s (f, &r->base[1]);
- qemu_get_8s (f, &r->mode);
- qemu_get_8s (f, &r->page);
- qemu_get_8s (f, &r->pageh);
- qemu_get_8s (f, &r->dack);
- qemu_get_8s (f, &r->eop);
- }
-
DMA_run();
return 0;
}
+static const VMStateDescription vmstate_dma = {
+ .name = "dma",
+ .version_id = 1,
+ .minimum_version_id = 1,
+ .minimum_version_id_old = 1,
+ .post_load = dma_post_load,
+ .fields = (VMStateField []) {
+ VMSTATE_UINT8(command, struct dma_cont),
+ VMSTATE_UINT8(mask, struct dma_cont),
+ VMSTATE_UINT8(flip_flop, struct dma_cont),
+ VMSTATE_INT32(dshift, struct dma_cont),
+ VMSTATE_STRUCT_ARRAY(regs, struct dma_cont, 4, 1, vmstate_dma_regs,
struct dma_regs),
+ VMSTATE_END_OF_LIST()
+ }
+};
+
void DMA_init (int high_page_enable)
{
dma_init2(&dma_controllers[0], 0x00, 0, 0x80,
high_page_enable ? 0x480 : -1);
dma_init2(&dma_controllers[1], 0xc0, 1, 0x88,
high_page_enable ? 0x488 : -1);
- register_savevm ("dma", 0, 1, dma_save, dma_load, &dma_controllers[0]);
- register_savevm ("dma", 1, 1, dma_save, dma_load, &dma_controllers[1]);
+ vmstate_register (0, &vmstate_dma, &dma_controllers[0]);
+ vmstate_register (1, &vmstate_dma, &dma_controllers[1]);
dma_bh = qemu_bh_new(DMA_run_bh, NULL);
}
--
1.6.2.5
- [Qemu-devel] [PATCH 08/26] vmstate: add sensible arguments to vmstate_unregister(), (continued)
- [Qemu-devel] [PATCH 08/26] vmstate: add sensible arguments to vmstate_unregister(), Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 09/26] vmstate: rename run_after_load() -> post_load(), Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 10/26] vmstate: Add pre_load() hook, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 11/26] vmstate: Add pre/post_save() hooks, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 12/26] vmstate: port cpu_comon, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 14/26] vmstate: port i8259 device, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 13/26] vmstate: port fw_cfg device, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 15/26] vmstate: add support for uint8_t equal, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 17/26] vmstate: add support for arrays of uint16_t, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 16/26] vmstate: port fdc device, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 18/26] vmstate: port dma device,
Juan Quintela <=
- [Qemu-devel] [PATCH 19/26] vmstate: port vmmouse device, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 20/26] vmstate: port pckbd device, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 21/26] vmstate: add uint64 array support, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 22/26] vmstate: port ioapic device, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 24/26] vmstate: port hpet device, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 23/26] hpet: it is imposible that qemu_timer field is NULL at this point, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 25/26] vmstate: port serial device, Juan Quintela, 2009/09/09
- [Qemu-devel] [PATCH 26/26] vmstate: port cirrus_vga device, Juan Quintela, 2009/09/09