mirror of https://gitee.com/openkylin/linux.git
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:
parent
a1d7d91f10
commit
cad5b35da9
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
#include "../lib/mem.S"
|
Loading…
Reference in New Issue