Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.22-rc2 29 lines 787 B view raw
1#ifndef _ASM_CRIS_ARCH_CHECKSUM_H 2#define _ASM_CRIS_ARCH_CHECKSUM_H 3 4/* 5 * Check values used in TCP/UDP headers. 6 * 7 * The gain of doing this in assembler instead of C, is that C doesn't 8 * generate carry-additions for the 32-bit components of the 9 * checksum. Which means it would be necessary to split all those into 10 * 16-bit components and then add. 11 */ 12static inline __wsum 13csum_tcpudp_nofold(__be32 saddr, __be32 daddr, 14 unsigned short len, unsigned short proto, __wsum sum) 15{ 16 __wsum res; 17 18 __asm__ __volatile__ ("add.d %2, %0\n\t" 19 "addc %3, %0\n\t" 20 "addc %4, %0\n\t" 21 "addc 0, %0\n\t" 22 : "=r" (res) 23 : "0" (sum), "r" (daddr), "r" (saddr), \ 24 "r" ((len + proto) << 8)); 25 26 return res; 27} 28 29#endif /* _ASM_CRIS_ARCH_CHECKSUM_H */