From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1L9Qk9-0000f8-OP for qemu-devel@nongnu.org; Sun, 07 Dec 2008 16:00:45 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1L9Qk7-0000cS-2w for qemu-devel@nongnu.org; Sun, 07 Dec 2008 16:00:45 -0500 Received: from [199.232.76.173] (port=52115 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1L9Qk6-0000cF-Vm for qemu-devel@nongnu.org; Sun, 07 Dec 2008 16:00:43 -0500 Received: from smtp6-g19.free.fr ([212.27.42.36]:59455) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1L9Qk6-0005Jn-Gn for qemu-devel@nongnu.org; Sun, 07 Dec 2008 16:00:42 -0500 Received: from smtp6-g19.free.fr (localhost.localdomain [127.0.0.1]) by smtp6-g19.free.fr (Postfix) with ESMTP id 9AE6C1978D for ; Sun, 7 Dec 2008 22:00:41 +0100 (CET) Received: from [192.168.0.32] (rob92-10-88-171-126-33.fbx.proxad.net [88.171.126.33]) by smtp6-g19.free.fr (Postfix) with ESMTP id 4DD4F1974A for ; Sun, 7 Dec 2008 22:00:35 +0100 (CET) Message-ID: <493C3963.4040406@reactos.org> Date: Sun, 07 Dec 2008 22:00:19 +0100 From: =?ISO-8859-1?Q?Herv=E9_Poussineau?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------060107020005020601000601" Subject: [Qemu-devel] [RESEND][PATCH] Parallel port reset 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 This is a multi-part message in MIME format. --------------060107020005020601000601 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Hi, Attached patch adds a reset handler to parallel port, so it gets correct=20 register values after a reset. Changes since v1: - updated to qemu svn Herv=E9 --------------060107020005020601000601 Content-Type: plain/text; name="parallel_reset_v2.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="parallel_reset_v2.diff" Index: hw/parallel.c =================================================================== --- hw/parallel.c (revision 5917) +++ hw/parallel.c (working copy) @@ -418,8 +418,10 @@ return ret; } -static void parallel_reset(ParallelState *s, qemu_irq irq, CharDriverState *chr) +static void parallel_reset(void *opaque) { + ParallelState *s = opaque; + s->datar = ~0; s->dataw = ~0; s->status = PARA_STS_BUSY; @@ -430,9 +432,7 @@ s->control = PARA_CTR_SELECT; s->control |= PARA_CTR_INIT; s->control |= 0xc0; - s->irq = irq; s->irq_pending = 0; - s->chr = chr; s->hw_driver = 0; s->epp_timeout = 0; s->last_read_offset = ~0U; @@ -447,7 +447,10 @@ s = qemu_mallocz(sizeof(ParallelState)); if (!s) return NULL; - parallel_reset(s, irq, chr); + s->irq = irq; + s->chr = chr; + parallel_reset(s); + qemu_register_reset(parallel_reset, s); if (qemu_chr_ioctl(chr, CHR_IOCTL_PP_READ_STATUS, &dummy) == 0) { s->hw_driver = 1; @@ -538,8 +541,11 @@ s = qemu_mallocz(sizeof(ParallelState)); if (!s) return NULL; - parallel_reset(s, irq, chr); + s->irq = irq; + s->chr = chr; s->it_shift = it_shift; + parallel_reset(s); + qemu_register_reset(parallel_reset, s); io_sw = cpu_register_io_memory(0, parallel_mm_read_sw, parallel_mm_write_sw, s); cpu_register_physical_memory(base, 8 << it_shift, io_sw); --------------060107020005020601000601--