<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">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>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><div><br></div></div>-- <br>David Hendricks (dhendrix)<br>Systems Software Engineer, Google Inc.
</div></div>