Commit 5b5ef0db745c70d9ba967ea133542be3fc927180
1 parent
279a6544
Add VM save/load support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4767 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
36 additions
and
0 deletions
hw/gus.c
| ... | ... | @@ -220,6 +220,40 @@ int GUS_read_DMA (void *opaque, int nchan, int dma_pos, int dma_len) |
| 220 | 220 | return dma_len; |
| 221 | 221 | } |
| 222 | 222 | |
| 223 | +static void GUS_save (QEMUFile *f, void *opaque) | |
| 224 | +{ | |
| 225 | + int32_t val; | |
| 226 | + GUSState *s = opaque; | |
| 227 | + | |
| 228 | + val = s->freq; qemu_put_be32s (f, &val); | |
| 229 | + val = s->pos; qemu_put_be32s (f, &val); | |
| 230 | + val = s->left; qemu_put_be32s (f, &val); | |
| 231 | + val = s->shift; qemu_put_be32s (f, &val); | |
| 232 | + val = s->irqs; qemu_put_be32s (f, &val); | |
| 233 | + val = s->samples; qemu_put_be32s (f, &val); | |
| 234 | + qemu_put_be64s (f, &s->last_ticks); | |
| 235 | + qemu_put_buffer (f, s->himem, sizeof (s->himem)); | |
| 236 | +} | |
| 237 | + | |
| 238 | +static int GUS_load (QEMUFile *f, void *opaque, int version_id) | |
| 239 | +{ | |
| 240 | + int32_t val; | |
| 241 | + GUSState *s = opaque; | |
| 242 | + | |
| 243 | + if (version_id != 1) | |
| 244 | + return -EINVAL; | |
| 245 | + | |
| 246 | + qemu_get_be32s (f, &val); s->freq = val; | |
| 247 | + qemu_get_be32s (f, &val); s->pos = val; | |
| 248 | + qemu_get_be32s (f, &val); s->left = val; | |
| 249 | + qemu_get_be32s (f, &val); s->shift = val; | |
| 250 | + qemu_get_be32s (f, &val); s->irqs = val; | |
| 251 | + qemu_get_be32s (f, &val); s->samples = val; | |
| 252 | + qemu_get_be64s (f, &s->last_ticks); | |
| 253 | + qemu_get_buffer (f, s->himem, sizeof (s->himem)); | |
| 254 | + return 0; | |
| 255 | +} | |
| 256 | + | |
| 223 | 257 | int GUS_init (AudioState *audio, qemu_irq *pic) |
| 224 | 258 | { |
| 225 | 259 | GUSState *s; |
| ... | ... | @@ -296,5 +330,7 @@ int GUS_init (AudioState *audio, qemu_irq *pic) |
| 296 | 330 | s->pic = pic; |
| 297 | 331 | |
| 298 | 332 | AUD_set_active_out (s->voice, 1); |
| 333 | + | |
| 334 | + register_savevm ("gus", 0, 1, GUS_save, GUS_load, s); | |
| 299 | 335 | return 0; |
| 300 | 336 | } | ... | ... |