Add faster, architecture dependent memcpy()
Change-Id: I38d15f3f1ec65f0cb7974d2dd4ae6356433bddd8 Signed-off-by: Stefan Reinauer <reinauer@google.com> Reviewed-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: http://review.coreboot.org/736 Reviewed-by: Ronald G. Minnich <rminnich@gmail.com> Tested-by: build bot (Jenkins)
This commit is contained in:
parent
19e7e7d2e7
commit
0054afa11d
|
@ -76,6 +76,10 @@ config CMOS_DEFAULT_FILE
|
|||
config BOOTBLOCK_SOUTHBRIDGE_INIT
|
||||
string
|
||||
|
||||
config HAVE_ARCH_MEMCPY
|
||||
bool
|
||||
default y
|
||||
|
||||
config BIG_ENDIAN
|
||||
bool
|
||||
default n
|
||||
|
|
|
@ -8,8 +8,12 @@ ramstage-$(CONFIG_MMCONF_SUPPORT) += pci_ops_mmconf.c
|
|||
ramstage-y += pci_ops_auto.c
|
||||
ramstage-y += exception.c
|
||||
ramstage-$(CONFIG_IOAPIC) += ioapic.c
|
||||
ramstage-y += memcpy.c
|
||||
|
||||
romstage-y += romstage_console.c
|
||||
romstage-y += cbfs_and_run.c
|
||||
romstage-y += memcpy.c
|
||||
|
||||
smm-y += memcpy.c
|
||||
|
||||
$(obj)/arch/x86/lib/console.ramstage.o :: $(obj)/build.h
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
#include <string.h>
|
||||
|
||||
void *memcpy(void *__restrict __dest,
|
||||
__const void *__restrict __src, size_t __n)
|
||||
{
|
||||
asm("cld\n"
|
||||
"rep\n"
|
||||
"movsb"
|
||||
: /* no input (?) */
|
||||
:"S"(__src), "D"(__dest), "c"(__n)
|
||||
);
|
||||
return __dest;
|
||||
}
|
|
@ -2,7 +2,9 @@
|
|||
|
||||
romstage-y += memset.c
|
||||
romstage-y += memchr.c
|
||||
ifneq ($(CONFIG_HAVE_ARCH_MEMCPY),y)
|
||||
romstage-y += memcpy.c
|
||||
endif
|
||||
romstage-y += memcmp.c
|
||||
romstage-y += cbfs.c
|
||||
romstage-y += lzma.c
|
||||
|
@ -19,7 +21,9 @@ romstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
|
|||
|
||||
ramstage-y += memset.c
|
||||
ramstage-y += memchr.c
|
||||
ifneq ($(CONFIG_HAVE_ARCH_MEMCPY),y)
|
||||
ramstage-y += memcpy.c
|
||||
endif
|
||||
ramstage-y += memcmp.c
|
||||
ramstage-y += memmove.c
|
||||
ramstage-y += malloc.c
|
||||
|
@ -43,7 +47,10 @@ ramstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
|
|||
|
||||
driver-$(CONFIG_CONSOLE_NE2K) += ne2k.c
|
||||
|
||||
smm-y += memcpy.c cbfs.c memset.c memcmp.c
|
||||
ifneq ($(CONFIG_HAVE_ARCH_MEMCPY),y)
|
||||
smm-y += memcpy.c
|
||||
endif
|
||||
smm-y += cbfs.c memset.c memcmp.c
|
||||
smm-$(CONFIG_CONSOLE_SERIAL8250) += uart8250.c
|
||||
smm-$(CONFIG_CONSOLE_SERIAL8250MEM) += uart8250mem.c
|
||||
smm-$(CONFIG_USBDEBUG) += usbdebug.c
|
||||
|
|
Loading…
Reference in New Issue