mirror of
https://git.proxmox.com/git/qemu
synced 2025-08-14 14:09:00 +00:00
vmstate: port syborg_serial
Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
cf1d31dc5c
commit
8dc5907090
@ -273,47 +273,24 @@ static CPUWriteMemoryFunc * const syborg_serial_writefn[] = {
|
|||||||
syborg_serial_write
|
syborg_serial_write
|
||||||
};
|
};
|
||||||
|
|
||||||
static void syborg_serial_save(QEMUFile *f, void *opaque)
|
static const VMStateDescription vmstate_syborg_serial = {
|
||||||
{
|
.name = "syborg_serial",
|
||||||
SyborgSerialState *s = opaque;
|
.version_id = 1,
|
||||||
int i;
|
.minimum_version_id = 1,
|
||||||
|
.minimum_version_id_old = 1,
|
||||||
qemu_put_be32(f, s->fifo_size);
|
.fields = (VMStateField[]) {
|
||||||
qemu_put_be32(f, s->int_enable);
|
VMSTATE_UINT32_EQUAL(fifo_size, SyborgSerialState),
|
||||||
qemu_put_be32(f, s->read_pos);
|
VMSTATE_UINT32(int_enable, SyborgSerialState),
|
||||||
qemu_put_be32(f, s->read_count);
|
VMSTATE_INT32(read_pos, SyborgSerialState),
|
||||||
qemu_put_be32(f, s->dma_tx_ptr);
|
VMSTATE_INT32(read_count, SyborgSerialState),
|
||||||
qemu_put_be32(f, s->dma_rx_ptr);
|
VMSTATE_UINT32(dma_tx_ptr, SyborgSerialState),
|
||||||
qemu_put_be32(f, s->dma_rx_size);
|
VMSTATE_UINT32(dma_rx_ptr, SyborgSerialState),
|
||||||
for (i = 0; i < s->fifo_size; i++) {
|
VMSTATE_UINT32(dma_rx_size, SyborgSerialState),
|
||||||
qemu_put_be32(f, s->read_fifo[i]);
|
VMSTATE_VARRAY_UINT32(read_fifo, SyborgSerialState, fifo_size, 1,
|
||||||
}
|
vmstate_info_uint32, uint32),
|
||||||
}
|
VMSTATE_END_OF_LIST()
|
||||||
|
|
||||||
static int syborg_serial_load(QEMUFile *f, void *opaque, int version_id)
|
|
||||||
{
|
|
||||||
SyborgSerialState *s = opaque;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (version_id != 1)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
i = qemu_get_be32(f);
|
|
||||||
if (s->fifo_size != i)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
s->int_enable = qemu_get_be32(f);
|
|
||||||
s->read_pos = qemu_get_be32(f);
|
|
||||||
s->read_count = qemu_get_be32(f);
|
|
||||||
s->dma_tx_ptr = qemu_get_be32(f);
|
|
||||||
s->dma_rx_ptr = qemu_get_be32(f);
|
|
||||||
s->dma_rx_size = qemu_get_be32(f);
|
|
||||||
for (i = 0; i < s->fifo_size; i++) {
|
|
||||||
s->read_fifo[i] = qemu_get_be32(f);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
static int syborg_serial_init(SysBusDevice *dev)
|
static int syborg_serial_init(SysBusDevice *dev)
|
||||||
{
|
{
|
||||||
@ -336,8 +313,6 @@ static int syborg_serial_init(SysBusDevice *dev)
|
|||||||
}
|
}
|
||||||
s->read_fifo = qemu_mallocz(s->fifo_size * sizeof(s->read_fifo[0]));
|
s->read_fifo = qemu_mallocz(s->fifo_size * sizeof(s->read_fifo[0]));
|
||||||
|
|
||||||
register_savevm(&dev->qdev, "syborg_serial", -1, 1,
|
|
||||||
syborg_serial_save, syborg_serial_load, s);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -345,6 +320,7 @@ static SysBusDeviceInfo syborg_serial_info = {
|
|||||||
.init = syborg_serial_init,
|
.init = syborg_serial_init,
|
||||||
.qdev.name = "syborg,serial",
|
.qdev.name = "syborg,serial",
|
||||||
.qdev.size = sizeof(SyborgSerialState),
|
.qdev.size = sizeof(SyborgSerialState),
|
||||||
|
.qdev.vmsd = &vmstate_syborg_serial,
|
||||||
.qdev.props = (Property[]) {
|
.qdev.props = (Property[]) {
|
||||||
DEFINE_PROP_UINT32("fifo-size", SyborgSerialState, fifo_size, 16),
|
DEFINE_PROP_UINT32("fifo-size", SyborgSerialState, fifo_size, 16),
|
||||||
DEFINE_PROP_END_OF_LIST(),
|
DEFINE_PROP_END_OF_LIST(),
|
||||||
|
Loading…
Reference in New Issue
Block a user