s390/boot: make head.S and als.c be part of the decompressor only
Since uncompressed kernel image does not have to be bootable anymore, move head.S, head_kdump.S and als.c to boot/ folder and compile them in just in the decompressor. 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
bd79d66329
commit
8282cd64d0
|
@ -113,8 +113,7 @@ export KBUILD_CFLAGS_DECOMPRESSOR
|
||||||
|
|
||||||
OBJCOPYFLAGS := -O binary
|
OBJCOPYFLAGS := -O binary
|
||||||
|
|
||||||
head-y := arch/s390/kernel/head.o
|
head-y := arch/s390/kernel/head64.o
|
||||||
head-y += arch/s390/kernel/head64.o
|
|
||||||
|
|
||||||
# See arch/s390/Kbuild for content of core part of the kernel
|
# See arch/s390/Kbuild for content of core part of the kernel
|
||||||
core-y += arch/s390/
|
core-y += arch/s390/
|
||||||
|
|
|
@ -3,15 +3,42 @@
|
||||||
# Makefile for the linux s390-specific parts of the memory manager.
|
# Makefile for the linux s390-specific parts of the memory manager.
|
||||||
#
|
#
|
||||||
|
|
||||||
targets := bzImage
|
KCOV_INSTRUMENT := n
|
||||||
subdir- := compressed
|
GCOV_PROFILE := n
|
||||||
|
UBSAN_SANITIZE := n
|
||||||
|
|
||||||
|
KBUILD_AFLAGS := $(KBUILD_AFLAGS_DECOMPRESSOR)
|
||||||
|
KBUILD_CFLAGS := $(KBUILD_CFLAGS_DECOMPRESSOR)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Use -march=z900 for als.c to be able to print an error
|
||||||
|
# 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
|
||||||
|
endif
|
||||||
|
|
||||||
|
obj-y := head.o als.o
|
||||||
|
targets := bzImage startup.a $(obj-y)
|
||||||
|
subdir- := compressed
|
||||||
|
|
||||||
|
OBJECTS := $(addprefix $(obj)/,$(obj-y))
|
||||||
|
|
||||||
$(obj)/bzImage: $(obj)/compressed/vmlinux FORCE
|
$(obj)/bzImage: $(obj)/compressed/vmlinux FORCE
|
||||||
$(call if_changed,objcopy)
|
$(call if_changed,objcopy)
|
||||||
|
|
||||||
$(obj)/compressed/vmlinux: FORCE
|
$(obj)/compressed/vmlinux: $(obj)/startup.a FORCE
|
||||||
$(Q)$(MAKE) $(build)=$(obj)/compressed $@
|
$(Q)$(MAKE) $(build)=$(obj)/compressed $@
|
||||||
|
|
||||||
|
quiet_cmd_ar = AR $@
|
||||||
|
cmd_ar = rm -f $@; $(AR) rcsTP$(KBUILD_ARFLAGS) $@ $(filter-out FORCE, $^)
|
||||||
|
|
||||||
|
$(obj)/startup.a: $(OBJECTS) FORCE
|
||||||
|
$(call if_changed,ar)
|
||||||
|
|
||||||
install: $(CONFIGURE) $(obj)/bzImage
|
install: $(CONFIGURE) $(obj)/bzImage
|
||||||
sh -x $(srctree)/$(obj)/install.sh $(KERNELRELEASE) $(obj)/bzImage \
|
sh -x $(srctree)/$(obj)/install.sh $(KERNELRELEASE) $(obj)/bzImage \
|
||||||
System.map "$(INSTALL_PATH)"
|
System.map "$(INSTALL_PATH)"
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
#include <asm/facility.h>
|
#include <asm/facility.h>
|
||||||
#include <asm/lowcore.h>
|
#include <asm/lowcore.h>
|
||||||
#include <asm/sclp.h>
|
#include <asm/sclp.h>
|
||||||
#include "entry.h"
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The code within this file will be called very early. It may _not_
|
* The code within this file will be called very early. It may _not_
|
|
@ -16,12 +16,12 @@ targets += misc.o piggy.o sizes.h head.o
|
||||||
KBUILD_AFLAGS := $(KBUILD_AFLAGS_DECOMPRESSOR)
|
KBUILD_AFLAGS := $(KBUILD_AFLAGS_DECOMPRESSOR)
|
||||||
KBUILD_CFLAGS := $(KBUILD_CFLAGS_DECOMPRESSOR)
|
KBUILD_CFLAGS := $(KBUILD_CFLAGS_DECOMPRESSOR)
|
||||||
|
|
||||||
OBJECTS := $(addprefix $(objtree)/arch/s390/kernel/, head.o ebcdic.o als.o)
|
OBJECTS := $(objtree)/arch/s390/kernel/ebcdic.o
|
||||||
OBJECTS += $(objtree)/drivers/s390/char/sclp_early_core.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
|
LDFLAGS_vmlinux := --oformat $(LD_BFD) -e startup -T
|
||||||
$(obj)/vmlinux: $(obj)/vmlinux.lds $(OBJECTS)
|
$(obj)/vmlinux: $(obj)/vmlinux.lds $(objtree)/arch/s390/boot/startup.a $(OBJECTS)
|
||||||
$(call if_changed,ld)
|
$(call if_changed,ld)
|
||||||
|
|
||||||
TRIM_HEAD_SIZE := 0x100000
|
TRIM_HEAD_SIZE := 0x100000
|
||||||
|
|
|
@ -9,38 +9,20 @@ ifdef CONFIG_FUNCTION_TRACER
|
||||||
CFLAGS_REMOVE_ftrace.o = $(CC_FLAGS_FTRACE)
|
CFLAGS_REMOVE_ftrace.o = $(CC_FLAGS_FTRACE)
|
||||||
|
|
||||||
# Do not trace early setup code
|
# Do not trace early setup code
|
||||||
CFLAGS_REMOVE_als.o = $(CC_FLAGS_FTRACE)
|
|
||||||
CFLAGS_REMOVE_early.o = $(CC_FLAGS_FTRACE)
|
CFLAGS_REMOVE_early.o = $(CC_FLAGS_FTRACE)
|
||||||
CFLAGS_REMOVE_early_nobss.o = $(CC_FLAGS_FTRACE)
|
CFLAGS_REMOVE_early_nobss.o = $(CC_FLAGS_FTRACE)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
GCOV_PROFILE_als.o := n
|
|
||||||
GCOV_PROFILE_early.o := n
|
GCOV_PROFILE_early.o := n
|
||||||
GCOV_PROFILE_early_nobss.o := n
|
GCOV_PROFILE_early_nobss.o := n
|
||||||
|
|
||||||
KCOV_INSTRUMENT_als.o := n
|
|
||||||
KCOV_INSTRUMENT_early.o := n
|
KCOV_INSTRUMENT_early.o := n
|
||||||
KCOV_INSTRUMENT_early_nobss.o := n
|
KCOV_INSTRUMENT_early_nobss.o := n
|
||||||
|
|
||||||
UBSAN_SANITIZE_als.o := n
|
|
||||||
UBSAN_SANITIZE_early.o := n
|
UBSAN_SANITIZE_early.o := n
|
||||||
UBSAN_SANITIZE_early_nobss.o := n
|
UBSAN_SANITIZE_early_nobss.o := n
|
||||||
|
|
||||||
#
|
|
||||||
# Use -march=z900 for als.c to be able to print an error
|
|
||||||
# message if the kernel is started on a machine which is too old
|
|
||||||
#
|
|
||||||
ifneq ($(CC_FLAGS_MARCH),-march=z900)
|
|
||||||
CFLAGS_REMOVE_als.o += $(CC_FLAGS_MARCH)
|
|
||||||
CFLAGS_REMOVE_als.o += $(CC_FLAGS_EXPOLINE)
|
|
||||||
CFLAGS_als.o += -march=z900
|
|
||||||
AFLAGS_REMOVE_head.o += $(CC_FLAGS_MARCH)
|
|
||||||
AFLAGS_head.o += -march=z900
|
|
||||||
endif
|
|
||||||
|
|
||||||
CFLAGS_als.o += -D__NO_FORTIFY
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Passing null pointers is ok for smp code, since we access the lowcore here.
|
# Passing null pointers is ok for smp code, since we access the lowcore here.
|
||||||
#
|
#
|
||||||
|
@ -61,13 +43,13 @@ CFLAGS_ptrace.o += -DUTS_MACHINE='"$(UTS_MACHINE)"'
|
||||||
|
|
||||||
obj-y := traps.o time.o process.o base.o early.o setup.o idle.o vtime.o
|
obj-y := traps.o time.o process.o base.o early.o setup.o idle.o vtime.o
|
||||||
obj-y += processor.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o nmi.o
|
obj-y += processor.o sys_s390.o ptrace.o signal.o cpcmd.o ebcdic.o nmi.o
|
||||||
obj-y += debug.o irq.o ipl.o dis.o diag.o vdso.o als.o early_nobss.o
|
obj-y += debug.o irq.o ipl.o dis.o diag.o vdso.o early_nobss.o
|
||||||
obj-y += sysinfo.o jump_label.o lgr.o os_info.o machine_kexec.o pgm_check.o
|
obj-y += sysinfo.o jump_label.o lgr.o os_info.o machine_kexec.o pgm_check.o
|
||||||
obj-y += runtime_instr.o cache.o fpu.o dumpstack.o guarded_storage.o sthyi.o
|
obj-y += runtime_instr.o cache.o fpu.o dumpstack.o guarded_storage.o sthyi.o
|
||||||
obj-y += entry.o reipl.o relocate_kernel.o kdebugfs.o alternative.o
|
obj-y += entry.o reipl.o relocate_kernel.o kdebugfs.o alternative.o
|
||||||
obj-y += nospec-branch.o
|
obj-y += nospec-branch.o
|
||||||
|
|
||||||
extra-y += head.o head64.o vmlinux.lds
|
extra-y += head64.o vmlinux.lds
|
||||||
|
|
||||||
obj-$(CONFIG_SYSFS) += nospec-sysfs.o
|
obj-$(CONFIG_SYSFS) += nospec-sysfs.o
|
||||||
CFLAGS_REMOVE_nospec-branch.o += $(CC_FLAGS_EXPOLINE)
|
CFLAGS_REMOVE_nospec-branch.o += $(CC_FLAGS_EXPOLINE)
|
||||||
|
@ -99,5 +81,5 @@ obj-$(CONFIG_TRACEPOINTS) += trace.o
|
||||||
obj-y += vdso64/
|
obj-y += vdso64/
|
||||||
obj-$(CONFIG_COMPAT) += vdso32/
|
obj-$(CONFIG_COMPAT) += vdso32/
|
||||||
|
|
||||||
chkbss := head.o head64.o als.o early_nobss.o
|
chkbss := head64.o early_nobss.o
|
||||||
include $(srctree)/arch/s390/scripts/Makefile.chkbss
|
include $(srctree)/arch/s390/scripts/Makefile.chkbss
|
||||||
|
|
|
@ -83,7 +83,6 @@ long sys_s390_sthyi(unsigned long function_code, void __user *buffer, u64 __user
|
||||||
|
|
||||||
DECLARE_PER_CPU(u64, mt_cycles[8]);
|
DECLARE_PER_CPU(u64, mt_cycles[8]);
|
||||||
|
|
||||||
void verify_facilities(void);
|
|
||||||
void gs_load_bc_cb(struct pt_regs *regs);
|
void gs_load_bc_cb(struct pt_regs *regs);
|
||||||
void set_fs_fixup(void);
|
void set_fs_fixup(void);
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
|
|
||||||
__HEAD
|
__HEAD
|
||||||
.org 0x100000 - 0x11000 # head.o ends at 0x11000
|
.org 0x100000
|
||||||
ENTRY(startup_continue)
|
ENTRY(startup_continue)
|
||||||
tm __LC_STFLE_FAC_LIST+5,0x80 # LPP available ?
|
tm __LC_STFLE_FAC_LIST+5,0x80 # LPP available ?
|
||||||
jz 0f
|
jz 0f
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")
|
OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")
|
||||||
OUTPUT_ARCH(s390:64-bit)
|
OUTPUT_ARCH(s390:64-bit)
|
||||||
ENTRY(startup)
|
ENTRY(startup_continue)
|
||||||
jiffies = jiffies_64;
|
jiffies = jiffies_64;
|
||||||
|
|
||||||
PHDRS {
|
PHDRS {
|
||||||
|
|
Loading…
Reference in New Issue