[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 10/14] pl181: add vmstate
From: |
Benoît Canet |
Subject: |
[Qemu-devel] [PATCH 10/14] pl181: add vmstate |
Date: |
Mon, 24 Oct 2011 22:38:29 +0200 |
Signed-off-by: Benoit Canet <address@hidden>
---
hw/pl181.c | 40 ++++++++++++++++++++++++++++++++++++----
1 files changed, 36 insertions(+), 4 deletions(-)
diff --git a/hw/pl181.c b/hw/pl181.c
index e13ea8e..cef2530 100644
--- a/hw/pl181.c
+++ b/hw/pl181.c
@@ -38,20 +38,45 @@ typedef struct {
uint32_t datacnt;
uint32_t status;
uint32_t mask[2];
- int fifo_pos;
- int fifo_len;
+ int32_t fifo_pos;
+ int32_t fifo_len;
/* The linux 2.6.21 driver is buggy, and misbehaves if new data arrives
while it is reading the FIFO. We hack around this be defering
subsequent transfers until after the driver polls the status word.
http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=4446/1
*/
- int linux_hack;
+ int32_t linux_hack;
uint32_t fifo[PL181_FIFO_LEN];
qemu_irq irq[2];
/* GPIO outputs for 'card is readonly' and 'card inserted' */
qemu_irq cardstatus[2];
} pl181_state;
+static const VMStateDescription vmstate_pl181 = {
+ .name = "pl181",
+ .version_id = 1,
+ .minimum_version_id = 1,
+ .fields = (VMStateField[]) {
+ VMSTATE_UINT32(clock, pl181_state),
+ VMSTATE_UINT32(power, pl181_state),
+ VMSTATE_UINT32(cmdarg, pl181_state),
+ VMSTATE_UINT32(cmd, pl181_state),
+ VMSTATE_UINT32(datatimer, pl181_state),
+ VMSTATE_UINT32(datalength, pl181_state),
+ VMSTATE_UINT32(respcmd, pl181_state),
+ VMSTATE_UINT32_ARRAY(response, pl181_state, 4),
+ VMSTATE_UINT32(datactrl, pl181_state),
+ VMSTATE_UINT32(datacnt, pl181_state),
+ VMSTATE_UINT32(status, pl181_state),
+ VMSTATE_UINT32_ARRAY(mask, pl181_state, 2),
+ VMSTATE_INT32(fifo_pos, pl181_state),
+ VMSTATE_INT32(fifo_len, pl181_state),
+ VMSTATE_INT32(linux_hack, pl181_state),
+ VMSTATE_UINT32_ARRAY(fifo, pl181_state, PL181_FIFO_LEN),
+ VMSTATE_END_OF_LIST()
+ }
+};
+
#define PL181_CMD_INDEX 0x3f
#define PL181_CMD_RESPONSE (1 << 6)
#define PL181_CMD_LONGRESP (1 << 7)
@@ -465,9 +490,16 @@ static int pl181_init(SysBusDevice *dev)
return 0;
}
+static SysBusDeviceInfo pl181_info = {
+ .init = pl181_init,
+ .qdev.name = "pl181",
+ .qdev.size = sizeof(pl181_state),
+ .qdev.vmsd = &vmstate_pl181,
+};
+
static void pl181_register_devices(void)
{
- sysbus_register_dev("pl181", sizeof(pl181_state), pl181_init);
+ sysbus_register_withprop(&pl181_info);
}
device_init(pl181_register_devices)
--
1.7.4.1
- [Qemu-devel] [PATCH 00/14] arm: more memory API and VMState conversion, Benoît Canet, 2011/10/24
- [Qemu-devel] [PATCH 01/14] mst_fpga: convert to memory API, Benoît Canet, 2011/10/24
- [Qemu-devel] [PATCH 04/14] syborg_keyboard: convert to memory API, Benoît Canet, 2011/10/24
- [Qemu-devel] [PATCH 05/14] syborg_pointer: convert to memory API, Benoît Canet, 2011/10/24
- [Qemu-devel] [PATCH 02/14] syborg_fb: convert to memory API, Benoît Canet, 2011/10/24
- [Qemu-devel] [PATCH 03/14] syborg_interrupt: convert to memory API, Benoît Canet, 2011/10/24
- [Qemu-devel] [PATCH 07/14] syborg_serial: convert to memory API, Benoît Canet, 2011/10/24
- [Qemu-devel] [PATCH 08/14] syborg_timer: convert to memory API, Benoît Canet, 2011/10/24
- [Qemu-devel] [PATCH 10/14] pl181: add vmstate,
Benoît Canet <=
- [Qemu-devel] [PATCH 13/14] integratorcp: convert integratorcm to VMState, Benoît Canet, 2011/10/24
- [Qemu-devel] [PATCH 09/14] syborg_virtio: convert to memory API, Benoît Canet, 2011/10/24
- [Qemu-devel] [PATCH 14/14] integratorcp: convert icp_pic to VMState, Benoît Canet, 2011/10/24
- [Qemu-devel] [PATCH 12/14] realview: convert realview i2c to VMState, Benoît Canet, 2011/10/24
- [Qemu-devel] [PATCH 06/14] syborg_rtc: convert to memory API, Benoît Canet, 2011/10/24
- [Qemu-devel] [PATCH 11/14] bitbang_i2c: convert to VMState, Benoît Canet, 2011/10/24
- Re: [Qemu-devel] [PATCH 00/14] arm: more memory API and VMState conversion, Avi Kivity, 2011/10/25