diff options
author | Vasily Gorbik <gor@linux.ibm.com> | 2018-06-27 17:10:14 +0200 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2018-07-02 11:24:58 +0200 |
commit | 183ab05ff285555c56b7f00bb4fd52d80a9513fb (patch) | |
tree | de41bc46e49ae9c232a7402ac5d68ea78b2356ac /arch/s390 | |
parent | 8e533fdd092598db73312af801dbddea8cab6f9c (diff) | |
download | linux-stable-183ab05ff285555c56b7f00bb4fd52d80a9513fb.tar.gz linux-stable-183ab05ff285555c56b7f00bb4fd52d80a9513fb.tar.bz2 linux-stable-183ab05ff285555c56b7f00bb4fd52d80a9513fb.zip |
s390: get rid of the first mb of uncompressed image
Instead of generating uncompressed kernel image starting at 0, filling
first mb with zeros (with ".org 0x100000") and then trimming it off
from vmlinux.bin before compression, simply generate a kernel image
starting from 0x100000.
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>
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/boot/compressed/Makefile | 15 | ||||
-rw-r--r-- | arch/s390/kernel/head64.S | 1 | ||||
-rw-r--r-- | arch/s390/kernel/vmlinux.lds.S | 2 |
3 files changed, 5 insertions, 13 deletions
diff --git a/arch/s390/boot/compressed/Makefile b/arch/s390/boot/compressed/Makefile index 9d3bd7d066e9..04609478d18b 100644 --- a/arch/s390/boot/compressed/Makefile +++ b/arch/s390/boot/compressed/Makefile @@ -23,16 +23,12 @@ LDFLAGS_vmlinux := --oformat $(LD_BFD) -e startup -T $(obj)/vmlinux: $(obj)/vmlinux.lds $(objtree)/arch/s390/boot/startup.a $(OBJECTS) $(call if_changed,ld) -TRIM_HEAD_SIZE := 0x100000 - -sed-sizes := -e 's/^\([0-9a-fA-F]*\) . \(__bss_start\|_end\)$$/\#define SZ\2 (0x\1 - $(TRIM_HEAD_SIZE))/p' +# extract required uncompressed vmlinux symbols and adjust them to reflect offsets inside vmlinux.bin +sed-sizes := -e 's/^\([0-9a-fA-F]*\) . \(__bss_start\|_end\)$$/\#define SZ\2 (0x\1 - 0x100000)/p' quiet_cmd_sizes = GEN $@ cmd_sizes = $(NM) $< | sed -n $(sed-sizes) > $@ -quiet_cmd_trim_head = TRIM $@ - cmd_trim_head = tail -c +$$(($(TRIM_HEAD_SIZE) + 1)) $< > $@ - $(obj)/sizes.h: vmlinux $(call if_changed,sizes) @@ -42,13 +38,10 @@ $(obj)/head.o: $(obj)/sizes.h CFLAGS_misc.o += -I$(objtree)/$(obj) $(obj)/misc.o: $(obj)/sizes.h -OBJCOPYFLAGS_vmlinux.bin.full := -R .comment -S -$(obj)/vmlinux.bin.full: vmlinux +OBJCOPYFLAGS_vmlinux.bin := -R .comment -S +$(obj)/vmlinux.bin: vmlinux $(call if_changed,objcopy) -$(obj)/vmlinux.bin: $(obj)/vmlinux.bin.full - $(call if_changed,trim_head) - vmlinux.bin.all-y := $(obj)/vmlinux.bin suffix-$(CONFIG_KERNEL_GZIP) := .gz diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S index 161b795d3109..6f43faeaaf32 100644 --- a/arch/s390/kernel/head64.S +++ b/arch/s390/kernel/head64.S @@ -16,7 +16,6 @@ #include <asm/page.h> __HEAD - .org 0x100000 ENTRY(startup_continue) tm __LC_STFLE_FAC_LIST+5,0x80 # LPP available ? jz 0f diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S index 51adfe251bcd..35f7ca8a1685 100644 --- a/arch/s390/kernel/vmlinux.lds.S +++ b/arch/s390/kernel/vmlinux.lds.S @@ -30,7 +30,7 @@ PHDRS { SECTIONS { - . = 0x00000000; + . = 0x100000; .text : { /* Text and read-only data */ HEAD_TEXT |