s390/decompressor: avoid reusing uncompressed image objects
authorVasily Gorbik <gor@linux.ibm.com>
Tue, 12 Jun 2018 13:52:01 +0000 (15:52 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 25 Jun 2018 08:14:39 +0000 (10:14 +0200)
Re-compile ebcdic.c and sclp_early_core.c for the decompressor,
using proper decompressor CFLAGS. This also allows to potentially use
instrumentation for those files when built for the main kernel image.

With kbuild there is no easy way to re-compile a source file from
another directory. Bypass ugly rules and Makefile meta-programming
with relative path includes of original files.

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>
arch/s390/boot/Makefile
arch/s390/boot/compressed/Makefile
arch/s390/boot/ebcdic.c [new file with mode: 0644]
arch/s390/boot/sclp_early_core.c [new file with mode: 0644]
drivers/s390/char/Makefile

index 05e92d4..5cf30b7 100644 (file)
@@ -15,14 +15,18 @@ KBUILD_CFLAGS := $(KBUILD_CFLAGS_DECOMPRESSOR)
 # message if the kernel is started on a machine which is too old
 #
 ifneq ($(CC_FLAGS_MARCH),-march=z900)
-AFLAGS_REMOVE_head.o   += $(CC_FLAGS_MARCH)
-AFLAGS_head.o          += -march=z900
-CFLAGS_REMOVE_als.o    += $(CC_FLAGS_MARCH)
-CFLAGS_als.o           += -march=z900
+AFLAGS_REMOVE_head.o           += $(CC_FLAGS_MARCH)
+AFLAGS_head.o                  += -march=z900
+CFLAGS_REMOVE_als.o            += $(CC_FLAGS_MARCH)
+CFLAGS_als.o                   += -march=z900
+CFLAGS_REMOVE_sclp_early_core.o        += $(CC_FLAGS_MARCH)
+CFLAGS_sclp_early_core.o       += -march=z900
 endif
 
-obj-y  := head.o als.o
-targets        := bzImage startup.a $(obj-y)
+CFLAGS_sclp_early_core.o += -I$(srctree)/drivers/s390/char
+
+obj-y  := head.o als.o ebcdic.o sclp_early_core.o
+targets        := bzImage setup.a $(obj-y)
 subdir-        := compressed
 
 OBJECTS := $(addprefix $(obj)/,$(obj-y))
index 855f7fd..86fe475 100644 (file)
@@ -16,9 +16,7 @@ targets += misc.o piggy.o sizes.h head.o
 KBUILD_AFLAGS := $(KBUILD_AFLAGS_DECOMPRESSOR)
 KBUILD_CFLAGS := $(KBUILD_CFLAGS_DECOMPRESSOR)
 
-OBJECTS := $(objtree)/arch/s390/kernel/ebcdic.o
-OBJECTS += $(objtree)/drivers/s390/char/sclp_early_core.o
-OBJECTS += $(obj)/head.o $(obj)/misc.o $(obj)/piggy.o
+OBJECTS := $(obj)/head.o $(obj)/misc.o $(obj)/piggy.o
 
 LDFLAGS_vmlinux := --oformat $(LD_BFD) -e startup -T
 $(obj)/vmlinux: $(obj)/vmlinux.lds $(objtree)/arch/s390/boot/startup.a $(OBJECTS)
diff --git a/arch/s390/boot/ebcdic.c b/arch/s390/boot/ebcdic.c
new file mode 100644 (file)
index 0000000..7391e7d
--- /dev/null
@@ -0,0 +1,2 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "../kernel/ebcdic.c"
diff --git a/arch/s390/boot/sclp_early_core.c b/arch/s390/boot/sclp_early_core.c
new file mode 100644 (file)
index 0000000..5a19fd7
--- /dev/null
@@ -0,0 +1,2 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "../../../drivers/s390/char/sclp_early_core.c"
index 0a4c13e..c6ab34f 100644 (file)
@@ -12,11 +12,6 @@ GCOV_PROFILE_sclp_early_core.o               := n
 KCOV_INSTRUMENT_sclp_early_core.o      := n
 UBSAN_SANITIZE_sclp_early_core.o       := n
 
-ifneq ($(CC_FLAGS_MARCH),-march=z900)
-CFLAGS_REMOVE_sclp_early_core.o        += $(CC_FLAGS_MARCH)
-CFLAGS_sclp_early_core.o               += -march=z900
-endif
-
 CFLAGS_sclp_early_core.o               += -D__NO_FORTIFY
 
 CFLAGS_REMOVE_sclp_early_core.o        += $(CC_FLAGS_EXPOLINE)