From 6b59607f10c038b37ca216d17516256e2ac467d2 Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Wed, 23 Jan 2019 02:42:39 +0100 Subject: [PATCH] x86: do not use i386 code for x86_64 memory functions arch/x86/lib/string.c contains assembler implementations of memcpy(), memmove(), and memset() written for i386. Don't use it on x86_64. Signed-off-by: Heinrich Schuchardt Signed-off-by: Alexander Graf --- arch/x86/include/asm/string.h | 31 +++++++++++++++++++++++-------- arch/x86/lib/Makefile | 2 +- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/arch/x86/include/asm/string.h b/arch/x86/include/asm/string.h index 38afd23684..c15b264a5c 100644 --- a/arch/x86/include/asm/string.h +++ b/arch/x86/include/asm/string.h @@ -9,22 +9,37 @@ extern char *strncpy(char *__dest, __const__ char *__src, __kernel_size_t __n); #undef __HAVE_ARCH_STRRCHR -extern char * strrchr(const char * s, int c); +extern char *strrchr(const char *s, int c); #undef __HAVE_ARCH_STRCHR -extern char * strchr(const char * s, int c); +extern char *strchr(const char *s, int c); + +#ifdef CONFIG_X86_64 + +#undef __HAVE_ARCH_MEMCPY +extern void *memcpy(void *, const void *, __kernel_size_t); + +#undef __HAVE_ARCH_MEMMOVE +extern void *memmove(void *, const void *, __kernel_size_t); + +#undef __HAVE_ARCH_MEMSET +extern void *memset(void *, int, __kernel_size_t); + +#else #define __HAVE_ARCH_MEMCPY -extern void * memcpy(void *, const void *, __kernel_size_t); +extern void *memcpy(void *, const void *, __kernel_size_t); #define __HAVE_ARCH_MEMMOVE -extern void * memmove(void *, const void *, __kernel_size_t); - -#undef __HAVE_ARCH_MEMCHR -extern void * memchr(const void *, int, __kernel_size_t); +extern void *memmove(void *, const void *, __kernel_size_t); #define __HAVE_ARCH_MEMSET -extern void * memset(void *, int, __kernel_size_t); +extern void *memset(void *, int, __kernel_size_t); + +#endif /* CONFIG_X86_64 */ + +#undef __HAVE_ARCH_MEMCHR +extern void *memchr(const void *, int, __kernel_size_t); #undef __HAVE_ARCH_MEMZERO extern void memzero(void *ptr, __kernel_size_t n); diff --git a/arch/x86/lib/Makefile b/arch/x86/lib/Makefile index 1e8efcc44f..56fd680033 100644 --- a/arch/x86/lib/Makefile +++ b/arch/x86/lib/Makefile @@ -7,6 +7,7 @@ ifndef CONFIG_X86_64 obj-y += bios.o obj-y += bios_asm.o obj-y += bios_interrupts.o +obj-y += string.o endif ifndef CONFIG_SPL_BUILD obj-$(CONFIG_CMD_BOOTM) += bootm.o @@ -32,7 +33,6 @@ obj-$(CONFIG_X86_RAMTEST) += ramtest.o obj-$(CONFIG_INTEL_MID) += scu.o obj-y += sections.o obj-y += sfi.o -obj-y += string.o obj-y += acpi.o obj-$(CONFIG_HAVE_ACPI_RESUME) += acpi_s3.o ifndef CONFIG_QEMU -- 2.30.2