From owner-p4-projects@FreeBSD.ORG Thu Mar 9 23:32:09 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C9E5916A420; Thu, 9 Mar 2006 23:32:08 +0000 (GMT) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7992016A420 for ; Thu, 9 Mar 2006 23:32:08 +0000 (GMT) (envelope-from cognet@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 2B9EF43D45 for ; Thu, 9 Mar 2006 23:32:08 +0000 (GMT) (envelope-from cognet@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k29NW8OB039227 for ; Thu, 9 Mar 2006 23:32:08 GMT (envelope-from cognet@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k29NW7jG039224 for perforce@freebsd.org; Thu, 9 Mar 2006 23:32:07 GMT (envelope-from cognet@freebsd.org) Date: Thu, 9 Mar 2006 23:32:07 GMT Message-Id: <200603092332.k29NW7jG039224@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to cognet@freebsd.org using -f From: Olivier Houchard To: Perforce Change Reviews Cc: Subject: PERFORCE change 93079 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Mar 2006 23:32:09 -0000 http://perforce.freebsd.org/chv.cgi?CH=93079 Change 93079 by cognet@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)