Changeset e828c2dd in rtems


Ignore:
Timestamp:
03/23/99 23:06:42 (24 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
33fefc2
Parents:
da7a73e
Message:

SPARC optimized version of IP checksum header routine. Submitted
by Jiri Gaisler <jgais@…>.

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • c/src/exec/libnetworking/rtems/rtems_glue.c

    rda7a73e re828c2dd  
    698698 * IP header checksum routine for processors which don't have an inline version
    699699 */
     700
     701#ifdef (defined(__GNUC__) && defined(sparc))
     702
     703        asm("
     704        .text
     705        .global _in_cksum_hdr
     706_in_cksum_hdr:
     707
     708        ld [%o0], %o1
     709        ld [%o0+4], %o2
     710        addcc %o1, %o2, %o1
     711        ld [%o0+8], %o2
     712        addxcc %o1, %o2, %o1
     713        ld [%o0+12], %o2
     714        addxcc %o1, %o2, %o1
     715        ld [%o0+16], %o2
     716        addxcc %o1, %o2, %o1
     717        set 0x0ffff, %o3
     718        srl %o1, 16, %o2
     719        and %o1, %o3, %o1
     720        addx %o1, %o2, %o1
     721        srl %o1, 16, %o1
     722        add %o1, %g0, %o1
     723        neg %o1
     724        retl
     725        and %o1, %o3, %o0
     726
     727        ");
     728#else
     729
    700730u_int
    701731in_cksum_hdr (const void *ip)
     
    713743        return ~sum & 0xFFFF;
    714744}
     745
     746#endif
    715747
    716748/*
  • c/src/lib/libnetworking/rtems/rtems_glue.c

    rda7a73e re828c2dd  
    698698 * IP header checksum routine for processors which don't have an inline version
    699699 */
     700
     701#ifdef (defined(__GNUC__) && defined(sparc))
     702
     703        asm("
     704        .text
     705        .global _in_cksum_hdr
     706_in_cksum_hdr:
     707
     708        ld [%o0], %o1
     709        ld [%o0+4], %o2
     710        addcc %o1, %o2, %o1
     711        ld [%o0+8], %o2
     712        addxcc %o1, %o2, %o1
     713        ld [%o0+12], %o2
     714        addxcc %o1, %o2, %o1
     715        ld [%o0+16], %o2
     716        addxcc %o1, %o2, %o1
     717        set 0x0ffff, %o3
     718        srl %o1, 16, %o2
     719        and %o1, %o3, %o1
     720        addx %o1, %o2, %o1
     721        srl %o1, 16, %o1
     722        add %o1, %g0, %o1
     723        neg %o1
     724        retl
     725        and %o1, %o3, %o0
     726
     727        ");
     728#else
     729
    700730u_int
    701731in_cksum_hdr (const void *ip)
     
    713743        return ~sum & 0xFFFF;
    714744}
     745
     746#endif
    715747
    716748/*
  • c/src/libnetworking/rtems/rtems_glue.c

    rda7a73e re828c2dd  
    698698 * IP header checksum routine for processors which don't have an inline version
    699699 */
     700
     701#ifdef (defined(__GNUC__) && defined(sparc))
     702
     703        asm("
     704        .text
     705        .global _in_cksum_hdr
     706_in_cksum_hdr:
     707
     708        ld [%o0], %o1
     709        ld [%o0+4], %o2
     710        addcc %o1, %o2, %o1
     711        ld [%o0+8], %o2
     712        addxcc %o1, %o2, %o1
     713        ld [%o0+12], %o2
     714        addxcc %o1, %o2, %o1
     715        ld [%o0+16], %o2
     716        addxcc %o1, %o2, %o1
     717        set 0x0ffff, %o3
     718        srl %o1, 16, %o2
     719        and %o1, %o3, %o1
     720        addx %o1, %o2, %o1
     721        srl %o1, 16, %o1
     722        add %o1, %g0, %o1
     723        neg %o1
     724        retl
     725        and %o1, %o3, %o0
     726
     727        ");
     728#else
     729
    700730u_int
    701731in_cksum_hdr (const void *ip)
     
    713743        return ~sum & 0xFFFF;
    714744}
     745
     746#endif
    715747
    716748/*
  • cpukit/libnetworking/rtems/rtems_glue.c

    rda7a73e re828c2dd  
    698698 * IP header checksum routine for processors which don't have an inline version
    699699 */
     700
     701#ifdef (defined(__GNUC__) && defined(sparc))
     702
     703        asm("
     704        .text
     705        .global _in_cksum_hdr
     706_in_cksum_hdr:
     707
     708        ld [%o0], %o1
     709        ld [%o0+4], %o2
     710        addcc %o1, %o2, %o1
     711        ld [%o0+8], %o2
     712        addxcc %o1, %o2, %o1
     713        ld [%o0+12], %o2
     714        addxcc %o1, %o2, %o1
     715        ld [%o0+16], %o2
     716        addxcc %o1, %o2, %o1
     717        set 0x0ffff, %o3
     718        srl %o1, 16, %o2
     719        and %o1, %o3, %o1
     720        addx %o1, %o2, %o1
     721        srl %o1, 16, %o1
     722        add %o1, %g0, %o1
     723        neg %o1
     724        retl
     725        and %o1, %o3, %o0
     726
     727        ");
     728#else
     729
    700730u_int
    701731in_cksum_hdr (const void *ip)
     
    713743        return ~sum & 0xFFFF;
    714744}
     745
     746#endif
    715747
    716748/*
Note: See TracChangeset for help on using the changeset viewer.