From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:55362) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T9ha4-0003uc-Kk for qemu-devel@nongnu.org; Thu, 06 Sep 2012 15:17:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T9hZx-0002Db-74 for qemu-devel@nongnu.org; Thu, 06 Sep 2012 15:17:36 -0400 Received: from smtp1-g21.free.fr ([212.27.42.1]:56559) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T9hZw-0002CJ-Ie for qemu-devel@nongnu.org; Thu, 06 Sep 2012 15:17:29 -0400 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Thu, 6 Sep 2012 21:17:53 +0200 Message-Id: <1346959079-8307-3-git-send-email-hpoussin@reactos.org> In-Reply-To: <1346959079-8307-1-git-send-email-hpoussin@reactos.org> References: <1346959079-8307-1-git-send-email-hpoussin@reactos.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH 2/8] fdc: use status0 field instead of a local variable List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , =?UTF-8?q?Herv=C3=A9=20Poussineau?= Signed-off-by: Herv=C3=A9 Poussineau --- hw/fdc.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/hw/fdc.c b/hw/fdc.c index 78ae064..d8bffb6 100644 --- a/hw/fdc.c +++ b/hw/fdc.c @@ -327,7 +327,7 @@ static void fdctrl_reset(FDCtrl *fdctrl, int do_irq); static void fdctrl_reset_fifo(FDCtrl *fdctrl); static int fdctrl_transfer_handler (void *opaque, int nchan, int dma_pos, int dma_len); -static void fdctrl_raise_irq(FDCtrl *fdctrl, uint8_t status0); +static void fdctrl_raise_irq(FDCtrl *fdctrl); static FDrive *get_cur_drv(FDCtrl *fdctrl); =20 static uint32_t fdctrl_read_statusA(FDCtrl *fdctrl); @@ -799,6 +799,7 @@ static void fdctrl_handle_tc(void *opaque, int irq, i= nt level) /* Change IRQ state */ static void fdctrl_reset_irq(FDCtrl *fdctrl) { + fdctrl->status0 =3D 0; if (!(fdctrl->sra & FD_SRA_INTPEND)) return; FLOPPY_DPRINTF("Reset interrupt\n"); @@ -806,14 +807,13 @@ static void fdctrl_reset_irq(FDCtrl *fdctrl) fdctrl->sra &=3D ~FD_SRA_INTPEND; } =20 -static void fdctrl_raise_irq(FDCtrl *fdctrl, uint8_t status0) +static void fdctrl_raise_irq(FDCtrl *fdctrl) { /* Sparc mutation */ if (fdctrl->sun4m && (fdctrl->msr & FD_MSR_CMDBUSY)) { /* XXX: not sure */ fdctrl->msr &=3D ~FD_MSR_CMDBUSY; fdctrl->msr |=3D FD_MSR_RQM | FD_MSR_DIO; - fdctrl->status0 =3D status0; return; } if (!(fdctrl->sra & FD_SRA_INTPEND)) { @@ -822,7 +822,6 @@ static void fdctrl_raise_irq(FDCtrl *fdctrl, uint8_t = status0) } =20 fdctrl->reset_sensei =3D 0; - fdctrl->status0 =3D status0; FLOPPY_DPRINTF("Set interrupt status to 0x%02x\n", fdctrl->status0); } =20 @@ -851,7 +850,8 @@ static void fdctrl_reset(FDCtrl *fdctrl, int do_irq) fd_recalibrate(&fdctrl->drives[i]); fdctrl_reset_fifo(fdctrl); if (do_irq) { - fdctrl_raise_irq(fdctrl, FD_SR0_RDYCHG); + fdctrl->status0 |=3D FD_SR0_RDYCHG; + fdctrl_raise_irq(fdctrl); fdctrl->reset_sensei =3D FD_RESET_SENSEI_COUNT; } } @@ -1169,7 +1169,7 @@ static void fdctrl_stop_transfer(FDCtrl *fdctrl, ui= nt8_t status0, fdctrl->msr &=3D ~FD_MSR_NONDMA; =20 fdctrl_set_fifo(fdctrl, 7); - fdctrl_raise_irq(fdctrl, fdctrl->status0); + fdctrl_raise_irq(fdctrl); } =20 /* Prepare a data transfer (either DMA or FIFO) */ @@ -1284,9 +1284,8 @@ static void fdctrl_start_transfer(FDCtrl *fdctrl, i= nt direction) if (direction !=3D FD_DIR_WRITE) fdctrl->msr |=3D FD_MSR_DIO; /* IO based transfer: calculate len */ - fdctrl_raise_irq(fdctrl, FD_SR0_SEEK); - - return; + fdctrl->status0 |=3D FD_SR0_SEEK; + fdctrl_raise_irq(fdctrl); } =20 /* Prepare a transfer of deleted data */ @@ -1706,7 +1705,8 @@ static void fdctrl_handle_recalibrate(FDCtrl *fdctr= l, int direction) fd_recalibrate(cur_drv); fdctrl_reset_fifo(fdctrl); /* Raise Interrupt */ - fdctrl_raise_irq(fdctrl, FD_SR0_SEEK); + fdctrl->status0 |=3D FD_SR0_SEEK; + fdctrl_raise_irq(fdctrl); } =20 static void fdctrl_handle_sense_interrupt_status(FDCtrl *fdctrl, int dir= ection) @@ -1745,7 +1745,8 @@ static void fdctrl_handle_seek(FDCtrl *fdctrl, int = direction) */ fd_seek(cur_drv, cur_drv->head, fdctrl->fifo[2], cur_drv->sect, 1); /* Raise Interrupt */ - fdctrl_raise_irq(fdctrl, FD_SR0_SEEK); + fdctrl->status0 |=3D FD_SR0_SEEK; + fdctrl_raise_irq(fdctrl); } =20 static void fdctrl_handle_perpendicular_mode(FDCtrl *fdctrl, int directi= on) @@ -1816,7 +1817,8 @@ static void fdctrl_handle_relative_seek_in(FDCtrl *= fdctrl, int direction) } fdctrl_reset_fifo(fdctrl); /* Raise Interrupt */ - fdctrl_raise_irq(fdctrl, FD_SR0_SEEK); + fdctrl->status0 |=3D FD_SR0_SEEK; + fdctrl_raise_irq(fdctrl); } =20 static void fdctrl_handle_relative_seek_out(FDCtrl *fdctrl, int directio= n) @@ -1833,7 +1835,8 @@ static void fdctrl_handle_relative_seek_out(FDCtrl = *fdctrl, int direction) } fdctrl_reset_fifo(fdctrl); /* Raise Interrupt */ - fdctrl_raise_irq(fdctrl, FD_SR0_SEEK); + fdctrl->status0 |=3D FD_SR0_SEEK; + fdctrl_raise_irq(fdctrl); } =20 static const struct { --=20 1.7.10.4