s390/decompressor: trim the kernel image up to 1M
authorVasily Gorbik <gor@linux.ibm.com>
Tue, 12 Jun 2018 13:11:40 +0000 (15:11 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 25 Jun 2018 08:14:38 +0000 (10:14 +0200)
Move head64.S main kernel entry point "startup_continue" to 0x100000 and
trim everything which is below 1M during build. So, that the decompressor
would unpack the main kernel image, move it to 0x100000 and jump to
startup_continue.

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/compressed/Makefile
arch/s390/boot/compressed/head.S
arch/s390/kernel/head64.S

index 4f81d14..9b48e7b 100644 (file)
@@ -24,7 +24,7 @@ LDFLAGS_vmlinux := --oformat $(LD_BFD) -e startup -T
 $(obj)/vmlinux: $(obj)/vmlinux.lds $(OBJECTS)
        $(call if_changed,ld)
 
-TRIM_HEAD_SIZE := 0x11000
+TRIM_HEAD_SIZE := 0x100000
 
 sed-sizes := -e 's/^\([0-9a-fA-F]*\) . \(__bss_start\|_end\)$$/\#define SZ\2 (0x\1 - $(TRIM_HEAD_SIZE))/p'
 
index 9f94eca..1c69907 100644 (file)
@@ -23,7 +23,7 @@ ENTRY(startup_continue)
        aghi    %r15,-160
        brasl   %r14,decompress_kernel
        # Set up registers for memory mover. We move the decompressed image to
-       # 0x11000, where startup_continue of the decompressed image is supposed
+       # 0x100000, where startup_continue of the decompressed image is supposed
        # to be.
        lgr     %r4,%r2
        lg      %r2,.Loffset-.LPG1(%r13)
@@ -33,7 +33,7 @@ ENTRY(startup_continue)
        la      %r1,0x200
        mvc     0(mover_end-mover,%r1),mover-.LPG1(%r13)
        # When the memory mover is done we pass control to
-       # arch/s390/kernel/head64.S:startup_continue which lives at 0x11000 in
+       # arch/s390/kernel/head64.S:startup_continue which lives at 0x100000 in
        # the decompressed image.
        lgr     %r6,%r2
        br      %r1
@@ -47,6 +47,6 @@ mover_end:
 .Lstack:
        .quad   0x8000 + (1<<(PAGE_SHIFT+THREAD_SIZE_ORDER))
 .Loffset:
-       .quad   0x11000
+       .quad   0x100000
 .Lmvsize:
        .quad   SZ__bss_start
index 791cb90..53e5cb0 100644 (file)
@@ -16,6 +16,7 @@
 #include <asm/page.h>
 
 __HEAD
+       .org    0x100000 - 0x11000              # head.o ends at 0x11000
 ENTRY(startup_continue)
        tm      __LC_STFLE_FAC_LIST+5,0x80      # LPP available ?
        jz      0f
@@ -88,7 +89,6 @@ ENTRY(startup_continue)
 
 ENTRY(_ehead)
 
-       .org    0x100000 - 0x11000      # head.o ends at 0x11000
 #
 # startup-code, running in absolute addressing mode
 #