mirror of https://github.com/xemu-project/xemu.git
Port i8254 to new VMState design
Signed-off-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
79c451b9d8
commit
5122b431c6
66
hw/i8254.c
66
hw/i8254.c
|
@ -389,35 +389,31 @@ static void pit_irq_timer(void *opaque)
|
||||||
pit_irq_timer_update(s, s->next_transition_time);
|
pit_irq_timer_update(s, s->next_transition_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pit_save(QEMUFile *f, void *opaque)
|
static const VMStateDescription vmstate_pit_channel = {
|
||||||
{
|
.name = "pit channel",
|
||||||
PITState *pit = opaque;
|
.version_id = 2,
|
||||||
PITChannelState *s;
|
.minimum_version_id = 2,
|
||||||
int i;
|
.minimum_version_id_old = 2,
|
||||||
|
.fields = (VMStateField []) {
|
||||||
for(i = 0; i < 3; i++) {
|
VMSTATE_INT32(count, PITChannelState),
|
||||||
s = &pit->channels[i];
|
VMSTATE_UINT16(latched_count, PITChannelState),
|
||||||
qemu_put_be32(f, s->count);
|
VMSTATE_UINT8(count_latched, PITChannelState),
|
||||||
qemu_put_be16s(f, &s->latched_count);
|
VMSTATE_UINT8(status_latched, PITChannelState),
|
||||||
qemu_put_8s(f, &s->count_latched);
|
VMSTATE_UINT8(status, PITChannelState),
|
||||||
qemu_put_8s(f, &s->status_latched);
|
VMSTATE_UINT8(read_state, PITChannelState),
|
||||||
qemu_put_8s(f, &s->status);
|
VMSTATE_UINT8(write_state, PITChannelState),
|
||||||
qemu_put_8s(f, &s->read_state);
|
VMSTATE_UINT8(write_latch, PITChannelState),
|
||||||
qemu_put_8s(f, &s->write_state);
|
VMSTATE_UINT8(rw_mode, PITChannelState),
|
||||||
qemu_put_8s(f, &s->write_latch);
|
VMSTATE_UINT8(mode, PITChannelState),
|
||||||
qemu_put_8s(f, &s->rw_mode);
|
VMSTATE_UINT8(bcd, PITChannelState),
|
||||||
qemu_put_8s(f, &s->mode);
|
VMSTATE_UINT8(gate, PITChannelState),
|
||||||
qemu_put_8s(f, &s->bcd);
|
VMSTATE_INT64(count_load_time, PITChannelState),
|
||||||
qemu_put_8s(f, &s->gate);
|
VMSTATE_INT64(next_transition_time, PITChannelState),
|
||||||
qemu_put_be64(f, s->count_load_time);
|
VMSTATE_END_OF_LIST()
|
||||||
if (s->irq_timer) {
|
|
||||||
qemu_put_be64(f, s->next_transition_time);
|
|
||||||
qemu_put_timer(f, s->irq_timer);
|
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
}
|
|
||||||
|
|
||||||
static int pit_load(QEMUFile *f, void *opaque, int version_id)
|
static int pit_load_old(QEMUFile *f, void *opaque, int version_id)
|
||||||
{
|
{
|
||||||
PITState *pit = opaque;
|
PITState *pit = opaque;
|
||||||
PITChannelState *s;
|
PITChannelState *s;
|
||||||
|
@ -449,6 +445,19 @@ static int pit_load(QEMUFile *f, void *opaque, int version_id)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const VMStateDescription vmstate_pit = {
|
||||||
|
.name = "i8254",
|
||||||
|
.version_id = 2,
|
||||||
|
.minimum_version_id = 2,
|
||||||
|
.minimum_version_id_old = 1,
|
||||||
|
.load_state_old = pit_load_old,
|
||||||
|
.fields = (VMStateField []) {
|
||||||
|
VMSTATE_STRUCT_ARRAY(channels, PITState, 3, 2, vmstate_pit_channel, PITChannelState),
|
||||||
|
VMSTATE_TIMER(channels[0].irq_timer, PITState),
|
||||||
|
VMSTATE_END_OF_LIST()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
static void pit_reset(void *opaque)
|
static void pit_reset(void *opaque)
|
||||||
{
|
{
|
||||||
PITState *pit = opaque;
|
PITState *pit = opaque;
|
||||||
|
@ -495,8 +504,7 @@ PITState *pit_init(int base, qemu_irq irq)
|
||||||
s->irq_timer = qemu_new_timer(vm_clock, pit_irq_timer, s);
|
s->irq_timer = qemu_new_timer(vm_clock, pit_irq_timer, s);
|
||||||
s->irq = irq;
|
s->irq = irq;
|
||||||
|
|
||||||
register_savevm("i8254", base, 1, pit_save, pit_load, pit);
|
vmstate_register(base, &vmstate_pit, pit);
|
||||||
|
|
||||||
qemu_register_reset(pit_reset, pit);
|
qemu_register_reset(pit_reset, pit);
|
||||||
register_ioport_write(base, 4, 1, pit_ioport_write, pit);
|
register_ioport_write(base, 4, 1, pit_ioport_write, pit);
|
||||||
register_ioport_read(base, 3, 1, pit_ioport_read, pit);
|
register_ioport_read(base, 3, 1, pit_ioport_read, pit);
|
||||||
|
|
Loading…
Reference in New Issue