Update of /cvsroot/linux-mips/linux/include/asm-mips64
In directory usw-pr-cvs1:/tmp/cvs-serv11514/asm-mips64
Modified Files:
checksum.h
Log Message:
Fix IPv6 checksumming bugs.
Index: checksum.h
===================================================================
RCS file: /cvsroot/linux-mips/linux/include/asm-mips64/checksum.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- checksum.h 2001/10/04 16:26:39 1.3
+++ checksum.h 2001/10/23 17:14:04 1.4
@@ -193,11 +193,11 @@
}
#define _HAVE_ARCH_IPV6_CSUM
-static inline unsigned short int csum_ipv6_magic(struct in6_addr *saddr,
- struct in6_addr *daddr,
- __u32 len,
- unsigned short proto,
- unsigned int sum)
+static __inline__ unsigned short int csum_ipv6_magic(struct in6_addr *saddr,
+ struct in6_addr *daddr,
+ __u32 len,
+ unsigned short proto,
+ unsigned int sum)
{
__asm__(
".set\tnoreorder\t\t\t# csum_ipv6_magic\n\t"
@@ -211,42 +211,44 @@
"lw\t%1, 0(%2)\t\t\t# four words source address\n\t"
"addu\t%0, $1\n\t"
"addu\t%0, %1\n\t"
- "sltu\t$1, %0, $1\n\t"
+ "sltu\t$1, %0, %1\n\t"
"lw\t%1, 4(%2)\n\t"
"addu\t%0, $1\n\t"
"addu\t%0, %1\n\t"
- "sltu\t$1, %0, $1\n\t"
+ "sltu\t$1, %0, %1\n\t"
"lw\t%1, 8(%2)\n\t"
"addu\t%0, $1\n\t"
"addu\t%0, %1\n\t"
- "sltu\t$1, %0, $1\n\t"
+ "sltu\t$1, %0, %1\n\t"
"lw\t%1, 12(%2)\n\t"
"addu\t%0, $1\n\t"
"addu\t%0, %1\n\t"
- "sltu\t$1, %0, $1\n\t"
+ "sltu\t$1, %0, %1\n\t"
"lw\t%1, 0(%3)\n\t"
"addu\t%0, $1\n\t"
"addu\t%0, %1\n\t"
- "sltu\t$1, %0, $1\n\t"
+ "sltu\t$1, %0, %1\n\t"
"lw\t%1, 4(%3)\n\t"
"addu\t%0, $1\n\t"
"addu\t%0, %1\n\t"
- "sltu\t$1, %0, $1\n\t"
+ "sltu\t$1, %0, %1\n\t"
"lw\t%1, 8(%3)\n\t"
"addu\t%0, $1\n\t"
"addu\t%0, %1\n\t"
- "sltu\t$1, %0, $1\n\t"
+ "sltu\t$1, %0, %1\n\t"
"lw\t%1, 12(%3)\n\t"
"addu\t%0, $1\n\t"
"addu\t%0, %1\n\t"
- "sltu\t$1, %0, $1\n\t"
+ "sltu\t$1, %0, %1\n\t"
+
+ "addu\t%0, $1\t\t\t# Add final carry\n\t"
".set\tnoat\n\t"
".set\tnoreorder"
: "=r" (sum), "=r" (proto)
|