Commit 183ab05f authored by Vasily Gorbik's avatar Vasily Gorbik Committed by Martin Schwidefsky
Browse files

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: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 8e533fdd
Loading
Loading
Loading
Loading
+4 −11
Original line number Original line Diff line number Diff line
@@ -23,16 +23,12 @@ LDFLAGS_vmlinux := --oformat $(LD_BFD) -e startup -T
$(obj)/vmlinux: $(obj)/vmlinux.lds $(objtree)/arch/s390/boot/startup.a $(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
# 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'
sed-sizes := -e 's/^\([0-9a-fA-F]*\) . \(__bss_start\|_end\)$$/\#define SZ\2 (0x\1 - $(TRIM_HEAD_SIZE))/p'


quiet_cmd_sizes = GEN     $@
quiet_cmd_sizes = GEN     $@
      cmd_sizes = $(NM) $< | sed -n $(sed-sizes) > $@
      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
$(obj)/sizes.h: vmlinux
	$(call if_changed,sizes)
	$(call if_changed,sizes)


@@ -42,13 +38,10 @@ $(obj)/head.o: $(obj)/sizes.h
CFLAGS_misc.o += -I$(objtree)/$(obj)
CFLAGS_misc.o += -I$(objtree)/$(obj)
$(obj)/misc.o: $(obj)/sizes.h
$(obj)/misc.o: $(obj)/sizes.h


OBJCOPYFLAGS_vmlinux.bin.full :=  -R .comment -S
OBJCOPYFLAGS_vmlinux.bin :=  -R .comment -S
$(obj)/vmlinux.bin.full: vmlinux
$(obj)/vmlinux.bin: vmlinux
	$(call if_changed,objcopy)
	$(call if_changed,objcopy)


$(obj)/vmlinux.bin: $(obj)/vmlinux.bin.full
	$(call if_changed,trim_head)

vmlinux.bin.all-y := $(obj)/vmlinux.bin
vmlinux.bin.all-y := $(obj)/vmlinux.bin


suffix-$(CONFIG_KERNEL_GZIP)  := .gz
suffix-$(CONFIG_KERNEL_GZIP)  := .gz
+0 −1
Original line number Original line Diff line number Diff line
@@ -16,7 +16,6 @@
#include <asm/page.h>
#include <asm/page.h>


__HEAD
__HEAD
	.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
+1 −1
Original line number Original line Diff line number Diff line
@@ -30,7 +30,7 @@ PHDRS {


SECTIONS
SECTIONS
{
{
	. = 0x00000000;
	. = 0x100000;
	.text : {
	.text : {
		/* Text and read-only data */
		/* Text and read-only data */
		HEAD_TEXT
		HEAD_TEXT