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 | } | ... | ... |