linux-mips
[Top] [All Lists]

Re: MIPS checksum bug

To: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Subject: Re: MIPS checksum bug
From: "Maciej W. Rozycki" <macro@linux-mips.org>
Date: Fri, 19 Sep 2008 17:09:17 +0100 (BST)
Cc: u1@terran.org, linux-mips@linux-mips.org
In-reply-to: <20080920.004319.93205397.anemo@mba.ocn.ne.jp>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20080917.222350.41199051.anemo@mba.ocn.ne.jp> <BD7F24AB-4B0C-4FA4-ADB3-5A86E7A4624F@terran.org> <20080919.011704.59652451.anemo@mba.ocn.ne.jp> <20080920.004319.93205397.anemo@mba.ocn.ne.jp>
Sender: linux-mips-bounce@linux-mips.org
On Sat, 20 Sep 2008, Atsushi Nemoto wrote:

> @@ -229,6 +239,9 @@ LEAF(csum_partial)
>  
>       /* Still a full word to go  */
>       ulw     t1, (src)
> +#ifdef USE_DOUBLE
> +     add     t1, zero        /* clear upper 32bit */
> +#endif
>       PTR_ADDIU       src, 4
>       ADDC(sum, t1)
>  

 Unfortunately you can't zero-extend with a single instruction (you can
use a single sll(v) to sign-extend), unless the R2 ISA provides some
suitable oddity (which I haven't checked).  You want something like:

        dsll32  t1, t1, 0
        dsrl32  t1, t1, 0

instead.

  Maciej

<Prev in Thread] Current Thread [Next in Thread>