Commit | Line | Data |
---|---|---|
4726dd60 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
f11e044b MS |
2 | /* |
3 | * Copyright (C) 2008 Michal Simek <monstr@monstr.eu> | |
4 | * Copyright (C) 2006 Atmark Techno, Inc. | |
f11e044b MS |
5 | */ |
6 | ||
7 | #ifndef _ASM_MICROBLAZE_CHECKSUM_H | |
8 | #define _ASM_MICROBLAZE_CHECKSUM_H | |
9 | ||
f11e044b MS |
10 | /* |
11 | * computes the checksum of the TCP/UDP pseudo-header | |
12 | * returns a 16-bit checksum, already complemented | |
13 | */ | |
14f87389 | 14 | #define csum_tcpudp_nofold csum_tcpudp_nofold |
f11e044b | 15 | static inline __wsum |
01cfbad7 AD |
16 | csum_tcpudp_nofold(__be32 saddr, __be32 daddr, __u32 len, |
17 | __u8 proto, __wsum sum) | |
f11e044b MS |
18 | { |
19 | __asm__("add %0, %0, %1\n\t" | |
20 | "addc %0, %0, %2\n\t" | |
21 | "addc %0, %0, %3\n\t" | |
22 | "addc %0, %0, r0\n\t" | |
23 | : "+&d" (sum) | |
02b08045 MS |
24 | : "d" (saddr), "d" (daddr), |
25 | #ifdef __MICROBLAZEEL__ | |
26 | "d" ((len + proto) << 8) | |
27 | #else | |
28 | "d" (len + proto) | |
29 | #endif | |
30 | ); | |
f11e044b MS |
31 | return sum; |
32 | } | |
33 | ||
14f87389 | 34 | #include <asm-generic/checksum.h> |
f11e044b MS |
35 | |
36 | #endif /* _ASM_MICROBLAZE_CHECKSUM_H */ |