From: Ard Biesheuvel <ardb@kernel.org>
To: linux-efi@vger.kernel.org
Cc: Geert Uytterhoeven <geert+renesas@glider.be>,
Nicolas Pitre <nico@fluxnic.net>,
Heinrich Schuchardt <xypron.glpk@gmx.de>,
Linus Walleij <linus.walleij@linaro.org>,
Russell King <linux@armlinux.org.uk>,
Ard Biesheuvel <ardb@kernel.org>,
linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 3/5] ARM: decompressor: defer loading of the contents of the LC0 structure
Date: Wed, 6 May 2020 10:19:37 +0200 [thread overview]
Message-ID: <20200506081939.8986-4-ardb@kernel.org> (raw)
In-Reply-To: <20200506081939.8986-1-ardb@kernel.org>
The remaining contents of LC0 are only used after the point in the
decompressor startup code where we enter via 'wont_overwrite'. So
move the loading of the LC0 structure after it. This will allow us
to jump to wont_overwrite directly from the EFI stub, and execute
the decompressor in place at the offset it was loaded by the UEFI
firmware.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Nicolas Pitre <nico@fluxnic.net>
---
arch/arm/boot/compressed/head.S | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index 449457d00c4e..9dea394b286b 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -349,10 +349,6 @@ restart: adr r0, LC1
add sp, sp, r0
add r6, r6, r0
- adr r0, LC0
- ldmia r0, {r1, r2, r3, r11, r12}
- sub r0, r0, r1 @ calculate the delta offset
-
get_inflated_image_size r9, r10, lr
#ifndef CONFIG_ZBOOT_ROM
@@ -370,9 +366,6 @@ restart: adr r0, LC1
mov r5, #0 @ init dtb size to 0
#ifdef CONFIG_ARM_APPENDED_DTB
/*
- * r0 = delta
- * r2 = BSS start
- * r3 = BSS end
* r4 = final kernel address (possibly with LSB set)
* r5 = appended dtb size (still unknown)
* r6 = _edata
@@ -380,8 +373,6 @@ restart: adr r0, LC1
* r8 = atags/device tree pointer
* r9 = size of decompressed image
* r10 = end of this image, including bss/stack/malloc space if non XIP
- * r11 = GOT start
- * r12 = GOT end
* sp = stack pointer
*
* if there are device trees (dtb) appended to zImage, advance r10 so that the
@@ -429,7 +420,6 @@ restart: adr r0, LC1
/* temporarily relocate the stack past the DTB work space */
add sp, sp, r5
- stmfd sp!, {r0-r3, ip, lr}
mov r0, r8
mov r1, r6
mov r2, r5
@@ -448,7 +438,6 @@ restart: adr r0, LC1
mov r2, r5
bleq atags_to_fdt
- ldmfd sp!, {r0-r3, ip, lr}
sub sp, sp, r5
#endif
@@ -585,6 +574,10 @@ dtb_check_done:
mov pc, r0
wont_overwrite:
+ adr r0, LC0
+ ldmia r0, {r1, r2, r3, r11, r12}
+ sub r0, r0, r1 @ calculate the delta offset
+
/*
* If delta is zero, we are running at the address we were linked at.
* r0 = delta
--
2.17.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-05-06 8:22 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-06 8:19 [PATCH v3 0/5] ARM: simplify handover from UEFI to decompressor Ard Biesheuvel
2020-05-06 8:19 ` [PATCH v3 1/5] ARM: decompressor: move headroom variable out of LC0 Ard Biesheuvel
2020-05-06 8:19 ` [PATCH v3 2/5] ARM: decompressor: split off _edata and stack base into separate object Ard Biesheuvel
2020-05-06 8:19 ` Ard Biesheuvel [this message]
2020-05-06 8:19 ` [PATCH v3 4/5] ARM: decompressor: move GOT into .data for EFI enabled builds Ard Biesheuvel
2020-05-06 8:19 ` [PATCH v3 5/5] ARM: decompressor: run decompressor in place if loaded via UEFI Ard Biesheuvel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200506081939.8986-4-ardb@kernel.org \
--to=ardb@kernel.org \
--cc=geert+renesas@glider.be \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-efi@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=nico@fluxnic.net \
--cc=xypron.glpk@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).