From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:49163) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T5yJu-0006Hu-C7 for qemu-devel@nongnu.org; Mon, 27 Aug 2012 08:21:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T5yJo-0004zz-SF for qemu-devel@nongnu.org; Mon, 27 Aug 2012 08:21:30 -0400 Received: from mail.ispras.ru ([83.149.199.43]:60091) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T5yJo-0004zW-Kl for qemu-devel@nongnu.org; Mon, 27 Aug 2012 08:21:24 -0400 Received: from PASHAISP (unknown [80.250.189.177]) by mail.ispras.ru (Postfix) with ESMTP id AE84124FEA0 for ; Mon, 27 Aug 2012 16:21:20 +0400 (MSK) From: "Pavel Dovgaluk" Date: Mon, 27 Aug 2012 16:21:20 +0400 Message-ID: <000001cd844e$7747c480$65d74d80$@Dovgaluk@ispras.ru> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Language: ru Subject: [Qemu-devel] [PATCH] Save/load PC speaker internal state List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: 'qemu-devel' Save PC speaker state to remove differences between system states after saving the snapshot and after loading it again. This patch is needed for deterministic replay of the execution. Signed-off-by: Pavel Dovgalyuk --- hw/pcspk.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/hw/pcspk.c b/hw/pcspk.c index e430324..3fb3dd1 100644 --- a/hw/pcspk.c +++ b/hw/pcspk.c @@ -159,10 +159,28 @@ static const MemoryRegionOps pcspk_io_ops = { }, }; +static const VMStateDescription vmstate_spk = { + .name = "pcspk", + .version_id = 1, + .minimum_version_id = 1, + .minimum_version_id_old = 1, + .fields = (VMStateField[]) { + VMSTATE_UINT8_ARRAY(sample_buf, PCSpkState, PCSPK_BUF_LEN), + VMSTATE_UINT32(pit_count, PCSpkState), + VMSTATE_UINT32(samples, PCSpkState), + VMSTATE_UINT32(play_pos, PCSpkState), + VMSTATE_INT32(data_on, PCSpkState), + VMSTATE_INT32(dummy_refresh_clock, PCSpkState), + VMSTATE_END_OF_LIST() + } +}; + static int pcspk_initfn(ISADevice *dev) { PCSpkState *s = DO_UPCAST(PCSpkState, dev, dev); + vmstate_register(NULL, 0, &vmstate_spk, s); + memory_region_init_io(&s->ioport, &pcspk_io_ops, s, "elcr", 1); isa_register_ioport(dev, &s->ioport, s->iobase);