diff options
author | Felix Fietkau <nbd@nbd.name> | 2017-02-28 06:53:39 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2017-02-28 20:22:10 +0100 |
commit | f9da6238e49e90f5e687b9f205583af264c029a1 (patch) | |
tree | a94b693501524f937303e693a7f46edb1466c7f5 | |
parent | a29163faabc82fd370419cd1cb48e891ddade8a3 (diff) | |
download | upstream-f9da6238e49e90f5e687b9f205583af264c029a1.tar.gz upstream-f9da6238e49e90f5e687b9f205583af264c029a1.tar.bz2 upstream-f9da6238e49e90f5e687b9f205583af264c029a1.zip |
kernel: fix MIPS memory function optimization build error in decompressor
Fixes the following build error:
CC arch/mips/boot/compressed/decompress.o
OBJCOPY arch/mips/boot/compressed/vmlinux.bin
XZKERN arch/mips/boot/compressed/vmlinux.bin.z
OBJCOPY arch/mips/boot/compressed/piggy.o
LD vmlinuz
arch/mips/boot/compressed/decompress.o: In function `lzma2_lzma':
/tmp2/mehrtens/linux/arch/mips/boot/compressed/../../../../lib/xz/xz_dec_lzma2.c:884: undefined reference to `memmove'
make[1]: *** [vmlinuz] Error 1
make: *** [vmlinuz] Error 2
lib/decompress_unxz.c only defines its own memmove function if there is no
macro with the same name.
Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r-- | target/linux/generic/patches-4.9/306-mips_mem_functions_performance.patch | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/target/linux/generic/patches-4.9/306-mips_mem_functions_performance.patch b/target/linux/generic/patches-4.9/306-mips_mem_functions_performance.patch index 9818677425..dc83a62c86 100644 --- a/target/linux/generic/patches-4.9/306-mips_mem_functions_performance.patch +++ b/target/linux/generic/patches-4.9/306-mips_mem_functions_performance.patch @@ -1,9 +1,10 @@ --- a/arch/mips/include/asm/string.h +++ b/arch/mips/include/asm/string.h -@@ -133,11 +133,44 @@ strncmp(__const__ char *__cs, __const__ +@@ -140,4 +140,42 @@ extern void *memcpy(void *__to, __const_ + #define __HAVE_ARCH_MEMMOVE + extern void *memmove(void *__dest, __const__ void *__src, size_t __n); - #define __HAVE_ARCH_MEMSET - extern void *memset(void *__s, int __c, size_t __count); ++#ifndef __ZBOOT__ +#define memset(__s, __c, len) \ +({ \ + size_t __len = (len); \ @@ -14,9 +15,7 @@ + __ret = __builtin_memset((__s), (__c), __len); \ + __ret; \ +}) - - #define __HAVE_ARCH_MEMCPY - extern void *memcpy(void *__to, __const__ void *__from, size_t __n); ++ +#define memcpy(dst, src, len) \ +({ \ + size_t __len = (len); \ @@ -27,9 +26,7 @@ + __ret = __builtin_memcpy((dst), (src), __len); \ + __ret; \ +}) - - #define __HAVE_ARCH_MEMMOVE - extern void *memmove(void *__dest, __const__ void *__src, size_t __n); ++ +#define memmove(dst, src, len) \ +({ \ + size_t __len = (len); \ @@ -43,7 +40,8 @@ + +#define __HAVE_ARCH_MEMCMP +#define memcmp(src1, src2, len) __builtin_memcmp((src1), (src2), (len)) - ++#endif ++ #endif /* _ASM_STRING_H */ --- a/arch/mips/lib/Makefile +++ b/arch/mips/lib/Makefile @@ -81,3 +79,15 @@ +} +EXPORT_SYMBOL(memcmp); + +--- a/arch/mips/boot/compressed/Makefile ++++ b/arch/mips/boot/compressed/Makefile +@@ -23,7 +23,8 @@ KBUILD_CFLAGS := $(shell echo $(KBUILD_C + KBUILD_CFLAGS := $(filter-out -fstack-protector, $(KBUILD_CFLAGS)) + + KBUILD_CFLAGS := $(LINUXINCLUDE) $(KBUILD_CFLAGS) -D__KERNEL__ \ +- -DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) -D"VMLINUX_LOAD_ADDRESS_ULL=$(VMLINUX_LOAD_ADDRESS)ull" ++ -DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) -D"VMLINUX_LOAD_ADDRESS_ULL=$(VMLINUX_LOAD_ADDRESS)ull" \ ++ -D__ZBOOT__ + + KBUILD_AFLAGS := $(LINUXINCLUDE) $(KBUILD_AFLAGS) -D__ASSEMBLY__ \ + -DBOOT_HEAP_SIZE=$(BOOT_HEAP_SIZE) \ |