Changeset 517660f1 in rtems for cpukit/libnetworking/machine


Ignore:
Timestamp:
Apr 1, 1999, 4:36:22 PM (21 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, master
Children:
f72dd2a
Parents:
5eb7da97
Message:

Moved sparc specific version of in_cksum_hdr to an inline routine like
the reset of the CPU specific implementations after comment from
Eric Norum.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • cpukit/libnetworking/machine/in_cksum.h

    r5eb7da97 r517660f1  
    159159
    160160/*
     161 *  SPARC Version
     162 */
     163
     164#elif (defined(__GNUC__) && defined(sparc))
     165
     166static __inline u_int
     167in_cksum_hdr(const struct ip *ip)
     168{
     169   register u_int sum = 0;
     170   register u_int tmp_o2;
     171   register u_int tmp_o3;
     172
     173   __asm__ volatile ("
     174     ld [%0], %1 ; \
     175     ld [%0+4], %2 ; \
     176     addcc %1, %2, %1 ; \
     177     ld [%0+8], %2 ; \
     178     addxcc %1, %2, %1 ; \
     179     ld [%0+12], %2 ; \
     180     addxcc %1, %2, %1 ; \
     181     ld [%0+16], %2 ; \
     182     addxcc %1, %2, %1 ; \
     183     set 0x0ffff, %3 ; \
     184     srl %1, 16, %2 ; \
     185     and %1, %3, %1 ; \
     186     addx %1, %2, %1 ; \
     187     srl %1, 16, %1 ; \
     188     add %1, %%g0, %1 ; \
     189     neg %1 ; \
     190     and %1, %3, %1 ; \
     191    " : "=r" (ip), "=r" (sum), "=r" (tmp_o2), "=r" (tmp_o3)
     192      : "0" (ip), "1" (sum)
     193  );
     194  return sum;
     195}
     196
     197#define in_cksum_update(ip) \
     198        do { \
     199                int __tmpsum; \
     200                __tmpsum = (int)ntohs(ip->ip_sum) + 256; \
     201                ip->ip_sum = htons(__tmpsum + (__tmpsum >> 16)); \
     202        } while(0)
     203/*
    161204 *  Here is the generic, portable, inefficient algorithm.
    162205 */
Note: See TracChangeset for help on using the changeset viewer.