Commit 4143f3e09cf780fdd2f1461f19a4e63987a09660
1 parent
cc53d26d
Fix vm state save/load
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4742 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
13 additions
and
0 deletions
hw/cs4231a.c
@@ -601,17 +601,23 @@ static void cs_save(QEMUFile *f, void *opaque) | @@ -601,17 +601,23 @@ static void cs_save(QEMUFile *f, void *opaque) | ||
601 | { | 601 | { |
602 | CSState *s = opaque; | 602 | CSState *s = opaque; |
603 | unsigned int i; | 603 | unsigned int i; |
604 | + uint32_t val; | ||
604 | 605 | ||
605 | for (i = 0; i < CS_REGS; i++) | 606 | for (i = 0; i < CS_REGS; i++) |
606 | qemu_put_be32s(f, &s->regs[i]); | 607 | qemu_put_be32s(f, &s->regs[i]); |
607 | 608 | ||
608 | qemu_put_buffer(f, s->dregs, CS_DREGS); | 609 | qemu_put_buffer(f, s->dregs, CS_DREGS); |
610 | + val = s->dma_running; qemu_put_be32s(f, &val); | ||
611 | + val = s->audio_free; qemu_put_be32s(f, &val); | ||
612 | + val = s->transferred; qemu_put_be32s(f, &val); | ||
613 | + val = s->aci_counter; qemu_put_be32s(f, &val); | ||
609 | } | 614 | } |
610 | 615 | ||
611 | static int cs_load(QEMUFile *f, void *opaque, int version_id) | 616 | static int cs_load(QEMUFile *f, void *opaque, int version_id) |
612 | { | 617 | { |
613 | CSState *s = opaque; | 618 | CSState *s = opaque; |
614 | unsigned int i; | 619 | unsigned int i; |
620 | + uint32_t val, dma_running; | ||
615 | 621 | ||
616 | if (version_id > 1) | 622 | if (version_id > 1) |
617 | return -EINVAL; | 623 | return -EINVAL; |
@@ -620,6 +626,13 @@ static int cs_load(QEMUFile *f, void *opaque, int version_id) | @@ -620,6 +626,13 @@ static int cs_load(QEMUFile *f, void *opaque, int version_id) | ||
620 | qemu_get_be32s(f, &s->regs[i]); | 626 | qemu_get_be32s(f, &s->regs[i]); |
621 | 627 | ||
622 | qemu_get_buffer(f, s->dregs, CS_DREGS); | 628 | qemu_get_buffer(f, s->dregs, CS_DREGS); |
629 | + | ||
630 | + qemu_get_be32s(f, &dma_running); | ||
631 | + qemu_get_be32s(f, &val); s->audio_free = val; | ||
632 | + qemu_get_be32s(f, &val); s->transferred = val; | ||
633 | + qemu_get_be32s(f, &val); s->aci_counter = val; | ||
634 | + if (dma_running && (s->dregs[Interface_Configuration] & PEN)) | ||
635 | + cs_reset_voices (s, s->dregs[FS_And_Playback_Data_Format]); | ||
623 | return 0; | 636 | return 0; |
624 | } | 637 | } |
625 | 638 |