PERFORCE change 93079 for review

Olivier Houchard cognet at FreeBSD.org
Thu Mar 9 15:32:09 PST 2006


http://perforce.freebsd.org/chv.cgi?CH=93079

Change 93079 by cognet at cognet on 2006/03/09 23:32:03

	Just forget the idea of an inlined asm in_cksum_hdr(). Handling the
	unaligned pointer case is a PITA, and it just doesn't worth it

Affected files ...

.. //depot/projects/arm/src/sys/arm/include/in_cksum.h#4 edit

Differences ...

==== //depot/projects/arm/src/sys/arm/include/in_cksum.h#4 (text+ko) ====

@@ -47,82 +47,6 @@
 u_short in_cksum_skip(struct mbuf *m, int len, int skip);
 u_int do_cksum(const void *, int);
 u_int in_cksum_hdr(const struct ip *);
-#if 0
-static __inline u_int
-in_cksum_hdr(const struct ip *ip)
-{
-	u_int sum = 0;
-	u_int tmp1, tmp2, tmp3, tmp4;
-
-	if (((vm_offset_t)ip & 0x03) == 0)
-		__asm __volatile (
-		    "adds %0, %0, %1\n"
-		    "adcs %0, %0, %2\n"
-		    "adcs %0, %0, %3\n"
-		    "adcs %0, %0, %4\n"
-		    "adcs %0, %0, %5\n"
-		    "adc %0, %0, #0\n"
-		    : "+r" (sum)
-		    : "r" (((const u_int32_t *)ip)[0]),
-		    "r" (((const u_int32_t *)ip)[1]),
-		    "r" (((const u_int32_t *)ip)[2]),
-		    "r" (((const u_int32_t *)ip)[3]),
-		    "r" (((const u_int32_t *)ip)[4])
-		    );
-	else
-		__asm __volatile (
-		    "and %1, %5, #3\n"
-		    "cmp %1, #0x02\n"
-		    "ldrb %2, [%5], #0x01\n"
-		    "ldrgeb %3, [%5], #0x01\n"
-		    "movlt %3, #0\n"
-		    "ldrgtb %4, [%5], #0x01\n"
-		    "movle %4, #0x00\n"
-#ifdef __ARMEB__
-		    "orreq	%0, %3, %2, lsl #8\n"
-		    "orreq	%0, %0, %4, lsl #24\n"
-		    "orrne	%0, %0, %3, lsl #8\n"
-		    "orrne	%0, %0, %4, lsl #16\n"
-#else
-		    "orreq	%0, %2, %3, lsl #8\n"
-		    "orreq	%0, %0, %4, lsl #16\n"
-		    "orrne	%0, %3, %2, lsl #8\n"
-		    "orrne	%0, %0, %4, lsl #24\n"
-#endif
-		    "ldmia %5, {%2, %3, %4}\n"
-		    "adcs %0, %0, %2\n"
-		    "adcs %0, %0, %3\n"
-		    "adcs %0, %0, %4\n"
-		    "ldrb %2, [%5]\n"
-		    "cmp %1, #0x02\n"
-		    "ldrgeb %3, [%5, #0x01]\n"
-		    "movlt %3, #0x00\n"
-		    "ldrgtb %4, [%5, #0x02]\n"
-		    "movle %4, #0x00\n"
-		    "tst %5, #0x01\n"
-#ifdef __ARMEB__
-	    	    "orreq	%2, %3, %2, lsl #8\n"
-		    "orreq	%2, %2, %4, lsl #24\n"
-		    "orrne	%2, %2, %3, lsl #8\n"
-		    "orrne	%2, %2, %4, lsl #16\n"
-#else
-		    "orreq	%2, %2, %3, lsl #8\n"
-		    "orreq	%2, %2, %4, lsl #16\n"
-		    "orrne	%2, %3, %2, lsl #8\n"
-		    "orrne	%2, %2, %4, lsl #24\n"
-#endif
-		    "adds	%0, %0, %2\n"
-		    "adc %0, %0, #0\n"
-		    : "+r" (sum), "=r" (tmp1), "=r" (tmp2), "=r" (tmp3),
-		    "=r" (tmp4)
-		    : "r" (ip));
-		    
-	sum = (sum & 0xffff) + (sum >> 16);
-	if (sum > 0xffff)
-		sum -= 0xffff;
-	return (~sum & 0xffff);
-}
-#endif
 
 static __inline u_short
 in_pseudo(u_int sum, u_int b, u_int c)


More information about the p4-projects mailing list