Commit | Line | Data |
---|---|---|
f11e044b MS |
1 | /* |
2 | * Copyright (C) 2008 Michal Simek <monstr@monstr.eu> | |
3 | * Copyright (C) 2006 Atmark Techno, Inc. | |
4 | * | |
5 | * This file is subject to the terms and conditions of the GNU General Public | |
6 | * License. See the file "COPYING" in the main directory of this archive | |
7 | * for more details. | |
8 | */ | |
9 | ||
10 | #ifndef _ASM_MICROBLAZE_CHECKSUM_H | |
11 | #define _ASM_MICROBLAZE_CHECKSUM_H | |
12 | ||
f11e044b MS |
13 | /* |
14 | * computes the checksum of the TCP/UDP pseudo-header | |
15 | * returns a 16-bit checksum, already complemented | |
16 | */ | |
14f87389 | 17 | #define csum_tcpudp_nofold csum_tcpudp_nofold |
f11e044b MS |
18 | static inline __wsum |
19 | csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len, | |
20 | unsigned short proto, __wsum sum) | |
21 | { | |
22 | __asm__("add %0, %0, %1\n\t" | |
23 | "addc %0, %0, %2\n\t" | |
24 | "addc %0, %0, %3\n\t" | |
25 | "addc %0, %0, r0\n\t" | |
26 | : "+&d" (sum) | |
02b08045 MS |
27 | : "d" (saddr), "d" (daddr), |
28 | #ifdef __MICROBLAZEEL__ | |
29 | "d" ((len + proto) << 8) | |
30 | #else | |
31 | "d" (len + proto) | |
32 | #endif | |
33 | ); | |
f11e044b MS |
34 | return sum; |
35 | } | |
36 | ||
14f87389 | 37 | #include <asm-generic/checksum.h> |
f11e044b MS |
38 | |
39 | #endif /* _ASM_MICROBLAZE_CHECKSUM_H */ |