37 lines
		
	
	
		
			806 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			806 B
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0 */
 | 
						|
/*
 | 
						|
 * Copyright (C) 2008 Michal Simek <monstr@monstr.eu>
 | 
						|
 * Copyright (C) 2006 Atmark Techno, Inc.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef _ASM_MICROBLAZE_CHECKSUM_H
 | 
						|
#define _ASM_MICROBLAZE_CHECKSUM_H
 | 
						|
 | 
						|
/*
 | 
						|
 * computes the checksum of the TCP/UDP pseudo-header
 | 
						|
 * returns a 16-bit checksum, already complemented
 | 
						|
 */
 | 
						|
#define csum_tcpudp_nofold	csum_tcpudp_nofold
 | 
						|
static inline __wsum
 | 
						|
csum_tcpudp_nofold(__be32 saddr, __be32 daddr, __u32 len,
 | 
						|
		   __u8 proto, __wsum sum)
 | 
						|
{
 | 
						|
	__asm__("add %0, %0, %1\n\t"
 | 
						|
		"addc %0, %0, %2\n\t"
 | 
						|
		"addc %0, %0, %3\n\t"
 | 
						|
		"addc %0, %0, r0\n\t"
 | 
						|
		: "+&d" (sum)
 | 
						|
		: "d" (saddr), "d" (daddr),
 | 
						|
#ifdef __MICROBLAZEEL__
 | 
						|
	"d" ((len + proto) << 8)
 | 
						|
#else
 | 
						|
	"d" (len + proto)
 | 
						|
#endif
 | 
						|
);
 | 
						|
	return sum;
 | 
						|
}
 | 
						|
 | 
						|
#include <asm-generic/checksum.h>
 | 
						|
 | 
						|
#endif /* _ASM_MICROBLAZE_CHECKSUM_H */
 |