<div dir="ltr">It wouldn't be terrible to have a generally better memmove implementation either.<div><br></div><div>Gabe</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Aug 15, 2013 at 6:23 PM, David Hendricks <span dir="ltr"><<a href="mailto:dhendrix@google.com" target="_blank">dhendrix@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote"><div class="im">On Thu, Aug 15, 2013 at 8:43 AM, ron minnich <span dir="ltr"><<a href="mailto:rminnich@gmail.com" target="_blank">rminnich@gmail.com</a>></span> wrote:<br>



<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">It seems to me you could improve our memmove?<br>
<br>
Also, if we want to define another Kconfig variable this is pretty easy to fix.</blockquote><div><br></div></div><div>There is CONFIG_CPU_DMP_VORTEX86EX which might be useful.</div><div><br></div><div>Maybe Andrew can try something like this:</div>



<div><div><br></div><div>diff --git a/src/arch/x86/lib/Makefile.inc b/src/arch/x86/lib/Makefile.inc<br></div><div>index 8588c76..b529d35 100644</div><div>--- a/src/arch/x86/lib/Makefile.inc</div><div>+++ b/src/arch/x86/lib/Makefile.inc</div>


<div>@@ -6,7 +6,6 @@ ramstage-y += exception.c</div><div> ramstage-$(CONFIG_IOAPIC) += ioapic.c</div><div> ramstage-y += memset.c</div><div> ramstage-y += memcpy.c</div><div>-ramstage-y += memmove.c</div><div> ramstage-y += ebda.c</div>


<div> ramstage-y += rom_media.c</div><div> ramstage-$(CONFIG_COOP_MULTITASKING) += thread.c</div><div>@@ -16,16 +15,26 @@ romstage-$(CONFIG_EARLY_CONSOLE) += romstage_console.c</div><div> romstage-y += cbfs_and_run.c</div>


<div> romstage-y += memset.c</div><div> romstage-y += memcpy.c</div><div>-romstage-y += memmove.c</div><div> romstage-y += rom_media.c</div><div> </div><div> smm-y += memset.c</div><div> smm-y += memcpy.c</div><div>-smm-y += memmove.c</div>


<div> smm-y += rom_media.c</div><div> </div><div> rmodules-y += memset.c</div><div> rmodules-y += memcpy.c</div><div> rmodules-y += memmove.c</div><div> </div><div>+ifeq ($(CONFIG_CPU_DMP_VORTEX86EX),y)</div><div>+# Old memmove implementation from Linux always use REP MOVSL</div>


<div>+# which is much faster on some CPUs.</div><div>+ramstage-y += memmove_old.c</div><div>+romstage-y += memmove_old.c</div><div>+smm-y += memmove_old.c</div><div>+else</div><div>+ramstage-y += memmove.c</div><div>+romstage-y += memmove.c</div>


<div>+smm-y += memmove.c</div><div>+endif</div><div>+</div></div><span class="HOEnZb"><font color="#888888"><div><br></div></font></span></div><span class="HOEnZb"><font color="#888888">-- <br>David Hendricks (dhendrix)<br>
Systems Software Engineer, Google Inc.
</font></span></div></div>
<br>--<br>
coreboot mailing list: <a href="mailto:coreboot@coreboot.org">coreboot@coreboot.org</a><br>
<a href="http://www.coreboot.org/mailman/listinfo/coreboot" target="_blank">http://www.coreboot.org/mailman/listinfo/coreboot</a><br></blockquote></div><br></div>