Re: Inflation of vmlinux by linker on x86_64
From: H. Peter Anvin
Date: Fri Sep 26 2008 - 16:07:26 EST
Joris van Rantwijk wrote:
On 26 sep 2008, at 20:52, H. Peter Anvin wrote:
Instead of adding a comment like this, we should simply rename it
memmove().
Yes. I tried, but it clashed with an existing memmove declaration in
asm-x86/string_32.h.
What is the accepted solution for this?
Redefining memmove should be allowed, but then it could no longer be a
static function.
Using the memmove implementation from the main kernel would be painful
and ugly.
We could also define "__memmove()" plus "#define memmove __memmove",
which would also be ugly.
Furthermore, we probably spend enough time copying that using a real
memmove() implementation, using string instructions, would be good.
Are string instructions that much faster?
We can also get some speedup by copying ints instead of chars.
String instructions are indeed very much faster, especially on recent
hardware where they are optimized in microcode.
In this case, I think the easiest thing to do is to provide an optimized
memmove and not making it a static function. I have a reasonably
optimized memmove in 32-bit assembly at:
http://git.kernel.org/?p=boot/syslinux/syslinux.git;a=blob;f=com32/lib/memmove.S;hb=HEAD
A 64-bit implementation can be done on similar principles.
-hpa
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/