From 76cb841cb886eef6b3bee341a2266c76578724ad Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 6 May 2024 03:02:30 +0200 Subject: Adding upstream version 4.19.249. Signed-off-by: Daniel Baumann --- arch/s390/boot/compressed/head.S | 52 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 arch/s390/boot/compressed/head.S (limited to 'arch/s390/boot/compressed/head.S') diff --git a/arch/s390/boot/compressed/head.S b/arch/s390/boot/compressed/head.S new file mode 100644 index 000000000..df8dbbc17 --- /dev/null +++ b/arch/s390/boot/compressed/head.S @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Startup glue code to uncompress the kernel + * + * Copyright IBM Corp. 2010 + * + * Author(s): Martin Schwidefsky + */ + +#include +#include +#include +#include +#include +#include "sizes.h" + +__HEAD +ENTRY(startup_decompressor) + basr %r13,0 # get base +.LPG1: + # setup stack + lg %r15,.Lstack-.LPG1(%r13) + aghi %r15,-160 + brasl %r14,decompress_kernel + # Set up registers for memory mover. We move the decompressed image to + # 0x100000, where startup_continue of the decompressed image is supposed + # to be. + lgr %r4,%r2 + lg %r2,.Loffset-.LPG1(%r13) + lg %r3,.Lmvsize-.LPG1(%r13) + lgr %r5,%r3 + # Move the memory mover someplace safe so it doesn't overwrite itself. + 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 0x100000 in + # the decompressed image. + lgr %r6,%r2 + br %r1 +mover: + mvcle %r2,%r4,0 + jo mover + br %r6 +mover_end: + + .align 8 +.Lstack: + .quad 0x8000 + (1<<(PAGE_SHIFT+THREAD_SIZE_ORDER)) +.Loffset: + .quad 0x100000 +.Lmvsize: + .quad SZ__bss_start -- cgit v1.2.3