Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
cris
include
arch-v10
arch
checksum.h
Go to the documentation of this file.
1
#ifndef _CRIS_ARCH_CHECKSUM_H
2
#define _CRIS_ARCH_CHECKSUM_H
3
4
/* Checksum some values used in TCP/UDP headers.
5
*
6
* The gain by doing this in asm is that C will not generate carry-additions
7
* for the 32-bit components of the checksum, so otherwise we would have had
8
* to split all of those into 16-bit components, then add.
9
*/
10
11
static
inline
__wsum
12
csum_tcpudp_nofold
(
__be32
saddr
,
__be32
daddr
,
unsigned
short
len,
13
unsigned
short
proto
,
__wsum
sum
)
14
{
15
__wsum
res
;
16
__asm__
(
"add.d %2, %0\n\t"
17
"ax\n\t"
18
"add.d %3, %0\n\t"
19
"ax\n\t"
20
"add.d %4, %0\n\t"
21
"ax\n\t"
22
"addq 0, %0\n"
23
:
"=r"
(res)
24
:
"0"
(sum),
"r"
(daddr),
"r"
(saddr),
"r"
((len + proto) << 8));
25
26
return
res
;
27
}
28
29
#endif
Generated on Thu Jan 10 2013 12:49:16 for Linux Kernel by
1.8.2