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>
This commit is contained in:
Vasily Gorbik 2018-06-12 22:58:50 +02:00 committed by Martin Schwidefsky
parent a1d7d91f10
commit cad5b35da9
3 changed files with 5 additions and 38 deletions

View File

@ -17,6 +17,8 @@ KBUILD_CFLAGS := $(KBUILD_CFLAGS_DECOMPRESSOR)
ifneq ($(CC_FLAGS_MARCH),-march=z900) ifneq ($(CC_FLAGS_MARCH),-march=z900)
AFLAGS_REMOVE_head.o += $(CC_FLAGS_MARCH) AFLAGS_REMOVE_head.o += $(CC_FLAGS_MARCH)
AFLAGS_head.o += -march=z900 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_REMOVE_als.o += $(CC_FLAGS_MARCH)
CFLAGS_als.o += -march=z900 CFLAGS_als.o += -march=z900
CFLAGS_REMOVE_sclp_early_core.o += $(CC_FLAGS_MARCH) CFLAGS_REMOVE_sclp_early_core.o += $(CC_FLAGS_MARCH)
@ -25,7 +27,7 @@ endif
CFLAGS_sclp_early_core.o += -I$(srctree)/drivers/s390/char 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) targets := bzImage setup.a $(obj-y)
subdir- := compressed subdir- := compressed

View File

@ -71,43 +71,6 @@ static int puts(const char *s)
return 0; 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) static void error(char *x)
{ {
unsigned long long psw = 0x000a0000deadbeefULL; unsigned long long psw = 0x000a0000deadbeefULL;

2
arch/s390/boot/mem.S Normal file
View File

@ -0,0 +1,2 @@
/* SPDX-License-Identifier: GPL-2.0 */
#include "../lib/mem.S"