cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

checksum_32.h (804B)


      1/*
      2 * Licensed under the GPL
      3 */
      4
      5#ifndef __UM_SYSDEP_CHECKSUM_H
      6#define __UM_SYSDEP_CHECKSUM_H
      7
      8static inline __sum16 ip_compute_csum(const void *buff, int len)
      9{
     10    return csum_fold (csum_partial(buff, len, 0));
     11}
     12
     13#define _HAVE_ARCH_IPV6_CSUM
     14static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
     15					  const struct in6_addr *daddr,
     16					  __u32 len, __u8 proto,
     17					  __wsum sum)
     18{
     19	__asm__(
     20		"addl 0(%1), %0		;\n"
     21		"adcl 4(%1), %0		;\n"
     22		"adcl 8(%1), %0		;\n"
     23		"adcl 12(%1), %0	;\n"
     24		"adcl 0(%2), %0		;\n"
     25		"adcl 4(%2), %0		;\n"
     26		"adcl 8(%2), %0		;\n"
     27		"adcl 12(%2), %0	;\n"
     28		"adcl %3, %0		;\n"
     29		"adcl %4, %0		;\n"
     30		"adcl $0, %0		;\n"
     31		: "=&r" (sum)
     32		: "r" (saddr), "r" (daddr),
     33		  "r"(htonl(len)), "r"(htonl(proto)), "0"(sum));
     34
     35	return csum_fold(sum);
     36}
     37
     38#endif