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 | 601 | { |
602 | 602 | CSState *s = opaque; |
603 | 603 | unsigned int i; |
604 | + uint32_t val; | |
604 | 605 | |
605 | 606 | for (i = 0; i < CS_REGS; i++) |
606 | 607 | qemu_put_be32s(f, &s->regs[i]); |
607 | 608 | |
608 | 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 | 616 | static int cs_load(QEMUFile *f, void *opaque, int version_id) |
612 | 617 | { |
613 | 618 | CSState *s = opaque; |
614 | 619 | unsigned int i; |
620 | + uint32_t val, dma_running; | |
615 | 621 | |
616 | 622 | if (version_id > 1) |
617 | 623 | return -EINVAL; |
... | ... | @@ -620,6 +626,13 @@ static int cs_load(QEMUFile *f, void *opaque, int version_id) |
620 | 626 | qemu_get_be32s(f, &s->regs[i]); |
621 | 627 | |
622 | 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 | 636 | return 0; |
624 | 637 | } |
625 | 638 | ... | ... |