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