404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.145.48.156: ~ $
/*
 * Copyright (C) 2010 Tobias Klauser <tklauser@distanz.ch>
 * Copyright (C) 2004 Microtronix Datacom Ltd.
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License. See the file "COPYING" in the main directory of this archive
 * for more details.
 */

#ifndef _ASM_NIOS_CHECKSUM_H
#define _ASM_NIOS_CHECKSUM_H

/* Take these from lib/checksum.c */
extern __wsum csum_partial(const void *buff, int len, __wsum sum);
extern __wsum csum_partial_copy(const void *src, void *dst, int len,
				__wsum sum);
extern __wsum csum_partial_copy_from_user(const void __user *src, void *dst,
					int len, __wsum sum, int *csum_err);
#define csum_partial_copy_nocheck(src, dst, len, sum)	\
	csum_partial_copy((src), (dst), (len), (sum))

extern __sum16 ip_fast_csum(const void *iph, unsigned int ihl);
extern __sum16 ip_compute_csum(const void *buff, int len);

/*
 * Fold a partial checksum
 */
static inline __sum16 csum_fold(__wsum sum)
{
	__asm__ __volatile__(
		"add	%0, %1, %0\n"
		"cmpltu	r8, %0, %1\n"
		"srli	%0, %0, 16\n"
		"add	%0, %0, r8\n"
		"nor	%0, %0, %0\n"
		: "=r" (sum)
		: "r" (sum << 16), "0" (sum)
		: "r8");
	return (__force __sum16) sum;
}

/*
 * 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__ __volatile__(
		"add	%0, %1, %0\n"
		"cmpltu	r8, %0, %1\n"
		"add	%0, %0, r8\n"	/* add carry */
		"add	%0, %2, %0\n"
		"cmpltu	r8, %0, %2\n"
		"add	%0, %0, r8\n"	/* add carry */
		"add	%0, %3, %0\n"
		"cmpltu	r8, %0, %3\n"
		"add	%0, %0, r8\n"	/* add carry */
		: "=r" (sum), "=r" (saddr)
		: "r" (daddr), "r" ((len + proto) << 8),
		  "0" (sum),
		  "1" (saddr)
		: "r8");

	return sum;
}

static inline __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr,
					__u32 len, __u8 proto,
					__wsum sum)
{
	return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));
}

#endif /* _ASM_NIOS_CHECKSUM_H */

Filemanager

Name Type Size Permission Actions
Kbuild File 958 B 0644
asm-macros.h File 6.71 KB 0644
asm-offsets.h File 813 B 0644
cache.h File 1.14 KB 0644
cacheflush.h File 1.91 KB 0644
checksum.h File 2.03 KB 0644
cpuinfo.h File 1.42 KB 0644
delay.h File 547 B 0644
dma-mapping.h File 547 B 0644
elf.h File 3.2 KB 0644
entry.h File 2.6 KB 0644
io.h File 1.72 KB 0644
irq.h File 907 B 0644
irqflags.h File 1.75 KB 0644
kgdb.h File 1.88 KB 0644
linkage.h File 809 B 0644
mmu.h File 445 B 0644
mmu_context.h File 1.69 KB 0644
page.h File 3.08 KB 0644
pgalloc.h File 1.86 KB 0644
pgtable-bits.h File 1.05 KB 0644
pgtable.h File 7.99 KB 0644
processor.h File 2.18 KB 0644
ptrace.h File 2.29 KB 0644
registers.h File 2.15 KB 0644
setup.h File 1.04 KB 0644
shmparam.h File 804 B 0644
string.h File 618 B 0644
switch_to.h File 866 B 0644
syscall.h File 2.6 KB 0644
syscalls.h File 883 B 0644
thread_info.h File 3.37 KB 0644
timex.h File 912 B 0644
tlb.h File 963 B 0644
tlbflush.h File 1.56 KB 0644
traps.h File 514 B 0644
uaccess.h File 5.18 KB 0644