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 05e92d43d383548dfd10724fca8477e92b7028f0..5cf30b732eb69189c279e08947d7b5e107eaae79 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 855f7fdb1f6111684aac8291688351dfeb52f405..86fe47509f755da84b621e6aa979938a9f1f21fc 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 0a4c13e1e76eae984a66758801b5ac75d471879b..c6ab34f94b1b54c96d704abf3f19e6aa16eaca78 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)