Re: [patch] alpha: fix alignment problem in csum_ipv6_magic()

Ivan Kokshaysky
2007-06-22T11:26:22Z

On Thu, Jun 21, 2007 at 04:35:01PM -0700, Andrew Morton wrote:
> In http://bugzilla.kernel.org/show_bug.cgi?id=8659, Dustin is reporting
> that this patch broke tcp-on-ipv6.

Oops. Two instructions operating on the 'len' arg ($18) got swapped...
This should fix ev6 version, ev5 one seems to be ok.

Signed-off-by: Ivan Kokshaysky <ink@jurassic.park.msu.ru>

Ivan.

--- 2.6.22-rc4-mm2/arch/alpha/lib/ev6-csum_ipv6_magic.S Fri Jun 22 15:02:23 2007
+++ linux/arch/alpha/lib/ev6-csum_ipv6_magic.S Fri Jun 22 15:05:38 2007
@@ -76,18 +76,18 @@ csum_ipv6_magic:

cmoveq $6,$31,$22 # E : src aligned?
ldq_u $23,15($17) # L : Latency: 3
- or $18,$4,$18 # E : 000000CCDDAABBCC
- extql $1,$6,$1 # U : U L L U :
+ inswl $18,3,$18 # U : 000000CCDD000000
+ addl $19,$7,$19 # E : U L U L : <sign bits>bbaabb00

or $0,$22,$0 # E : 1st src word complete
- extqh $5,$6,$5 # U :
- addl $19,$7,$19 # E : <sign bits>bbaabb00
- and $17,7,$6 # E : L U L U : dst misalignment
+ extql $1,$6,$1 # U :
+ or $18,$4,$18 # E : 000000CCDDAABBCC
+ extqh $5,$6,$5 # U : L U L U

- inswl $18,3,$18 # U : 000000CCDD000000
- or $1,$5,$1 # E : 2nd src word complete
+ and $17,7,$6 # E : dst misalignment
extql $2,$6,$2 # U :
- extqh $3,$6,$22 # U : U L U U :
+ or $1,$5,$1 # E : 2nd src word complete
+ extqh $3,$6,$22 # U : L U L U :

cmoveq $6,$31,$22 # E : dst aligned?
extql $3,$6,$3 # U :