root/arch/microblaze/include/asm/checksum.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. csum_tcpudp_nofold

   1 /*
   2  * Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
   3  * Copyright (C) 2006 Atmark Techno, Inc.
   4  *
   5  * This file is subject to the terms and conditions of the GNU General Public
   6  * License. See the file "COPYING" in the main directory of this archive
   7  * for more details.
   8  */
   9 
  10 #ifndef _ASM_MICROBLAZE_CHECKSUM_H
  11 #define _ASM_MICROBLAZE_CHECKSUM_H
  12 
  13 /*
  14  * computes the checksum of the TCP/UDP pseudo-header
  15  * returns a 16-bit checksum, already complemented
  16  */
  17 #define csum_tcpudp_nofold      csum_tcpudp_nofold
  18 static inline __wsum
  19 csum_tcpudp_nofold(__be32 saddr, __be32 daddr, __u32 len,
  20                    __u8 proto, __wsum sum)
  21 {
  22         __asm__("add %0, %0, %1\n\t"
  23                 "addc %0, %0, %2\n\t"
  24                 "addc %0, %0, %3\n\t"
  25                 "addc %0, %0, r0\n\t"
  26                 : "+&d" (sum)
  27                 : "d" (saddr), "d" (daddr),
  28 #ifdef __MICROBLAZEEL__
  29         "d" ((len + proto) << 8)
  30 #else
  31         "d" (len + proto)
  32 #endif
  33 );
  34         return sum;
  35 }
  36 
  37 #include <asm-generic/checksum.h>
  38 
  39 #endif /* _ASM_MICROBLAZE_CHECKSUM_H */

/* [<][>][^][v][top][bottom][index][help] */