Messages in this thread | | | Date | Fri, 26 Sep 2008 13:07:11 -0700 | From | "H. Peter Anvin" <> | Subject | Re: Inflation of vmlinux by linker on x86_64 |
| |
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
| |