x86: do not use i386 code for x86_64 memory functions
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Wed, 23 Jan 2019 01:42:39 +0000 (02:42 +0100)
committerAlexander Graf <agraf@suse.de>
Wed, 13 Feb 2019 08:40:06 +0000 (09:40 +0100)
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 <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
arch/x86/include/asm/string.h
arch/x86/lib/Makefile

index 38afd236843a6cc95a442ed4c690211b1d59fab7..c15b264a5c08c4d5b62bfa67037205dd63b844da 100644 (file)
@@ -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);
index 1e8efcc44f9fb918b1dea5534001c2525242ad53..56fd680033b0544954440326e501833210fecd24 100644 (file)
@@ -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