From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KA6fy-0000uY-CS for qemu-devel@nongnu.org; Sat, 21 Jun 2008 13:14:58 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KA6fx-0000tw-Qj for qemu-devel@nongnu.org; Sat, 21 Jun 2008 13:14:58 -0400 Received: from [199.232.76.173] (port=58553 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KA6fx-0000tq-Lw for qemu-devel@nongnu.org; Sat, 21 Jun 2008 13:14:57 -0400 Received: from savannah.gnu.org ([199.232.41.3]:57150 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KA6fx-0002Cy-BD for qemu-devel@nongnu.org; Sat, 21 Jun 2008 13:14:57 -0400 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1KA6fv-0003H2-3p for qemu-devel@nongnu.org; Sat, 21 Jun 2008 17:14:55 +0000 Received: from malc by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1KA6fu-0003Gy-N9 for qemu-devel@nongnu.org; Sat, 21 Jun 2008 17:14:54 +0000 MIME-Version: 1.0 Errors-To: malc Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: malc Message-Id: Date: Sat, 21 Jun 2008 17:14:54 +0000 Subject: [Qemu-devel] [4767] Add VM save/load support Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 4767 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4767 Author: malc Date: 2008-06-21 17:14:54 +0000 (Sat, 21 Jun 2008) Log Message: ----------- Add VM save/load support Modified Paths: -------------- trunk/hw/gus.c Modified: trunk/hw/gus.c =================================================================== --- trunk/hw/gus.c 2008-06-21 17:14:50 UTC (rev 4766) +++ trunk/hw/gus.c 2008-06-21 17:14:54 UTC (rev 4767) @@ -220,6 +220,40 @@ return dma_len; } +static void GUS_save (QEMUFile *f, void *opaque) +{ + int32_t val; + GUSState *s = opaque; + + val = s->freq; qemu_put_be32s (f, &val); + val = s->pos; qemu_put_be32s (f, &val); + val = s->left; qemu_put_be32s (f, &val); + val = s->shift; qemu_put_be32s (f, &val); + val = s->irqs; qemu_put_be32s (f, &val); + val = s->samples; qemu_put_be32s (f, &val); + qemu_put_be64s (f, &s->last_ticks); + qemu_put_buffer (f, s->himem, sizeof (s->himem)); +} + +static int GUS_load (QEMUFile *f, void *opaque, int version_id) +{ + int32_t val; + GUSState *s = opaque; + + if (version_id != 1) + return -EINVAL; + + qemu_get_be32s (f, &val); s->freq = val; + qemu_get_be32s (f, &val); s->pos = val; + qemu_get_be32s (f, &val); s->left = val; + qemu_get_be32s (f, &val); s->shift = val; + qemu_get_be32s (f, &val); s->irqs = val; + qemu_get_be32s (f, &val); s->samples = val; + qemu_get_be64s (f, &s->last_ticks); + qemu_get_buffer (f, s->himem, sizeof (s->himem)); + return 0; +} + int GUS_init (AudioState *audio, qemu_irq *pic) { GUSState *s; @@ -296,5 +330,7 @@ s->pic = pic; AUD_set_active_out (s->voice, 1); + + register_savevm ("gus", 0, 1, GUS_save, GUS_load, s); return 0; }