powerpc: inline ip_fast_csum()
In several architectures, ip_fast_csum() is inlined There are functions like ip_send_check() which do nothing much more than calling ip_fast_csum(). Inlining ip_fast_csum() allows the compiler to optimise better Suggested-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> [scottwood: whitespace and cast fixes] Signed-off-by: Scott Wood <oss@buserror.net>
This commit is contained in:

committed by
Scott Wood

parent
03bc8b0fc8
commit
37e08cad8f
@@ -19,27 +19,6 @@
|
||||
|
||||
.text
|
||||
|
||||
/*
|
||||
* ip_fast_csum(buf, len) -- Optimized for IP header
|
||||
* len is in words and is always >= 5.
|
||||
*/
|
||||
_GLOBAL(ip_fast_csum)
|
||||
lwz r0,0(r3)
|
||||
lwzu r5,4(r3)
|
||||
addic. r4,r4,-2
|
||||
addc r0,r0,r5
|
||||
mtctr r4
|
||||
blelr-
|
||||
1: lwzu r4,4(r3)
|
||||
adde r0,r0,r4
|
||||
bdnz 1b
|
||||
addze r0,r0 /* add in final carry */
|
||||
rlwinm r3,r0,16,0,31 /* fold two halves together */
|
||||
add r3,r0,r3
|
||||
not r3,r3
|
||||
srwi r3,r3,16
|
||||
blr
|
||||
|
||||
/*
|
||||
* computes the checksum of a memory block at buff, length len,
|
||||
* and adds in "sum" (32-bit)
|
||||
|
@@ -17,33 +17,6 @@
|
||||
#include <asm/errno.h>
|
||||
#include <asm/ppc_asm.h>
|
||||
|
||||
/*
|
||||
* ip_fast_csum(r3=buf, r4=len) -- Optimized for IP header
|
||||
* len is in words and is always >= 5.
|
||||
*
|
||||
* In practice len == 5, but this is not guaranteed. So this code does not
|
||||
* attempt to use doubleword instructions.
|
||||
*/
|
||||
_GLOBAL(ip_fast_csum)
|
||||
lwz r0,0(r3)
|
||||
lwzu r5,4(r3)
|
||||
addic. r4,r4,-2
|
||||
addc r0,r0,r5
|
||||
mtctr r4
|
||||
blelr-
|
||||
1: lwzu r4,4(r3)
|
||||
adde r0,r0,r4
|
||||
bdnz 1b
|
||||
addze r0,r0 /* add in final carry */
|
||||
rldicl r4,r0,32,0 /* fold two 32-bit halves together */
|
||||
add r0,r0,r4
|
||||
srdi r0,r0,32
|
||||
rlwinm r3,r0,16,0,31 /* fold two halves together */
|
||||
add r3,r0,r3
|
||||
not r3,r3
|
||||
srwi r3,r3,16
|
||||
blr
|
||||
|
||||
/*
|
||||
* Computes the checksum of a memory block at buff, length len,
|
||||
* and adds in "sum" (32-bit).
|
||||
|
@@ -19,7 +19,6 @@ EXPORT_SYMBOL(strncmp);
|
||||
#ifndef CONFIG_GENERIC_CSUM
|
||||
EXPORT_SYMBOL(csum_partial);
|
||||
EXPORT_SYMBOL(csum_partial_copy_generic);
|
||||
EXPORT_SYMBOL(ip_fast_csum);
|
||||
#endif
|
||||
|
||||
EXPORT_SYMBOL(__copy_tofrom_user);
|
||||
|
Reference in New Issue
Block a user