From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Nmn3C-0004fS-IY for qemu-devel@nongnu.org; Wed, 03 Mar 2010 06:47:38 -0500 Received: from [199.232.76.173] (port=41294 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Nmn3C-0004f8-8r for qemu-devel@nongnu.org; Wed, 03 Mar 2010 06:47:38 -0500 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1Nmn38-0004LT-Bk for qemu-devel@nongnu.org; Wed, 03 Mar 2010 06:47:37 -0500 Received: from mx1.redhat.com ([209.132.183.28]:51359) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Nmn38-0004LK-04 for qemu-devel@nongnu.org; Wed, 03 Mar 2010 06:47:34 -0500 Date: Wed, 3 Mar 2010 13:44:09 +0200 From: "Michael S. Tsirkin" Message-ID: <20100303114409.GA15278@redhat.com> References: <4B7821AC.6080400@mail.berlios.de> <1267565880-18382-17-git-send-email-weil@mail.berlios.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1267565880-18382-17-git-send-email-weil@mail.berlios.de> Subject: [Qemu-devel] Re: [PATCHv3 17/20] eepro100: New function for reading command block List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Weil Cc: QEMU Developers On Tue, Mar 02, 2010 at 10:37:57PM +0100, Stefan Weil wrote: > Move code which reads the command block to the > new function read_cb. The patch also fixes some > endianess issues related to the command block > and moves declarations of local variables to > the beginning of the block. > > Signed-off-by: Stefan Weil > --- > hw/eepro100.c | 42 ++++++++++++++++++++++++++++-------------- > 1 files changed, 28 insertions(+), 14 deletions(-) > > diff --git a/hw/eepro100.c b/hw/eepro100.c > index f5aa306..e10ce62 100644 > --- a/hw/eepro100.c > +++ b/hw/eepro100.c > @@ -798,6 +798,16 @@ static void dump_statistics(EEPRO100State * s) > //~ missing("CU dump statistical counters"); > } > > +static void read_cb(EEPRO100State *s) > +{ > + cpu_physical_memory_read(s->cb_address, (uint8_t *) &s->tx, sizeof(s->tx)); > + s->tx.status = le16_to_cpu(s->tx.status); > + s->tx.command = le16_to_cpu(s->tx.command); > + s->tx.link = le32_to_cpu(s->tx.link); > + s->tx.tbd_array_addr = le32_to_cpu(s->tx.tbd_array_addr); > + s->tx.tcb_bytes = le16_to_cpu(s->tx.tcb_bytes); > +} > + > static void tx_command(EEPRO100State *s) > { > uint32_t tbd_array = le32_to_cpu(s->tx.tbd_array_addr); > @@ -901,21 +911,25 @@ static void set_multicast_list(EEPRO100State *s) > static void action_command(EEPRO100State *s) > { > for (;;) { > - s->cb_address = s->cu_base + s->cu_offset; > - cpu_physical_memory_read(s->cb_address, (uint8_t *)&s->tx, sizeof(s->tx)); > - uint16_t command = le16_to_cpu(s->tx.command); > - s->tx.status = le16_to_cpu(s->tx.status); > - logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n", > - s->tx.status, command, s->tx.link); > - bool bit_el = ((command & COMMAND_EL) != 0); > - bool bit_s = ((command & COMMAND_S) != 0); > - bool bit_i = ((command & COMMAND_I) != 0); > - bool bit_nc = ((command & COMMAND_NC) != 0); > + bool bit_el; > + bool bit_s; > + bool bit_i; > + bool bit_nc; > bool success = true; > - //~ bool bit_sf = ((command & COMMAND_SF) != 0); > - uint16_t cmd = command & COMMAND_CMD; > - s->cu_offset = le32_to_cpu(s->tx.link); > - switch (cmd) { > + s->cb_address = s->cu_base + s->cu_offset; > + read_cb(s); > + bit_el = ((s->tx.command & COMMAND_EL) != 0); > + bit_s = ((s->tx.command & COMMAND_S) != 0); > + bit_i = ((s->tx.command & COMMAND_I) != 0); > + bit_nc = ((s->tx.command & COMMAND_NC) != 0); () is never needed around the assigned value. this can be fixed separately though. AFAIK you also do not need != : values are coersed by assignment to bool correctly. Again, can be fixed separately. > +#if 0 > + bool bit_sf = ((s->tx.command & COMMAND_SF) != 0); > +#endif Is the above likely to be useful? > + s->cu_offset = s->tx.link; > + TRACE(OTHER, > + logout("val=(cu start), status=0x%04x, command=0x%04x, link=0x%08x\n", > + s->tx.status, s->tx.command, s->tx.link)); > + switch (s->tx.command & COMMAND_CMD) { > case CmdNOp: > /* Do nothing. */ > break; > -- > 1.7.0