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/