Commit 5b5ef0db745c70d9ba967ea133542be3fc927180

Authored by malc
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 }
... ...