diff options
author | Vasily Gorbik <gor@linux.ibm.com> | 2018-06-12 23:58:50 +0300 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2018-06-25 11:14:39 +0300 |
commit | cad5b35da9f7e429131592421c463a93703bb02e (patch) | |
tree | fee7168c074307ea2883d158d761aaaf21dc0706 /arch/s390/boot | |
parent | a1d7d91f105413750b5c8fb6a13a8c969a8b1f81 (diff) | |
download | linux-cad5b35da9f7e429131592421c463a93703bb02e.tar.xz |
s390/decompressor: reuse lib/mem.S for mem functions
Reusing arch/s390/lib/mem.S file solves a problem that sclp_early_core.c
and its dependencies have to be compiled with -march=z900 (no need to
compile compressed/misc.c with -march=z900). This also allows to avoid
mem functions duplicates, makes code a bit smaller and optimized mem
functions are utilized.
Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/boot')
-rw-r--r-- | arch/s390/boot/Makefile | 4 | ||||
-rw-r--r-- | arch/s390/boot/compressed/misc.c | 37 | ||||
-rw-r--r-- | arch/s390/boot/mem.S | 2 |
3 files changed, 5 insertions, 38 deletions
diff --git a/arch/s390/boot/Makefile b/arch/s390/boot/Makefile index 5cf30b732eb6..70b50b41eda9 100644 --- a/arch/s390/boot/Makefile +++ b/arch/s390/boot/Makefile @@ -17,6 +17,8 @@ KBUILD_CFLAGS := $(KBUILD_CFLAGS_DECOMPRESSOR) ifneq ($(CC_FLAGS_MARCH),-march=z900) AFLAGS_REMOVE_head.o += $(CC_FLAGS_MARCH) AFLAGS_head.o += -march=z900 +AFLAGS_REMOVE_mem.o += $(CC_FLAGS_MARCH) +AFLAGS_mem.o += -march=z900 CFLAGS_REMOVE_als.o += $(CC_FLAGS_MARCH) CFLAGS_als.o += -march=z900 CFLAGS_REMOVE_sclp_early_core.o += $(CC_FLAGS_MARCH) @@ -25,7 +27,7 @@ endif CFLAGS_sclp_early_core.o += -I$(srctree)/drivers/s390/char -obj-y := head.o als.o ebcdic.o sclp_early_core.o +obj-y := head.o als.o ebcdic.o sclp_early_core.o mem.o targets := bzImage setup.a $(obj-y) subdir- := compressed diff --git a/arch/s390/boot/compressed/misc.c b/arch/s390/boot/compressed/misc.c index 511b2cc9b91a..f66ad73c205b 100644 --- a/arch/s390/boot/compressed/misc.c +++ b/arch/s390/boot/compressed/misc.c @@ -71,43 +71,6 @@ static int puts(const char *s) return 0; } -void *memset(void *s, int c, size_t n) -{ - char *xs; - - xs = s; - while (n--) - *xs++ = c; - return s; -} - -void *memcpy(void *dest, const void *src, size_t n) -{ - const char *s = src; - char *d = dest; - - while (n--) - *d++ = *s++; - return dest; -} - -void *memmove(void *dest, const void *src, size_t n) -{ - const char *s = src; - char *d = dest; - - if (d <= s) { - while (n--) - *d++ = *s++; - } else { - d += n; - s += n; - while (n--) - *--d = *--s; - } - return dest; -} - static void error(char *x) { unsigned long long psw = 0x000a0000deadbeefULL; diff --git a/arch/s390/boot/mem.S b/arch/s390/boot/mem.S new file mode 100644 index 000000000000..b33463633f03 --- /dev/null +++ b/arch/s390/boot/mem.S @@ -0,0 +1,2 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#include "../lib/mem.S" |