From: Ard Biesheuvel <ardb@kernel.org> To: linux-arm-kernel@lists.infradead.org Cc: linux-efi@vger.kernel.org, Ard Biesheuvel <ardb@kernel.org>, Geert Uytterhoeven <geert+renesas@glider.be>, Nicolas Pitre <nico@fluxnic.net>, Linus Walleij <linus.walleij@linaro.org>, Russell King <linux@armlinux.org.uk> Subject: [PATCH 2/5] ARM: decompressor: split off _edata and stack base into separate object Date: Fri, 27 Mar 2020 11:59:03 +0100 [thread overview] Message-ID: <20200327105906.2665-3-ardb@kernel.org> (raw) In-Reply-To: <20200327105906.2665-1-ardb@kernel.org> In preparation of moving the handling of the LC0 object to a later stage in the decompressor startup code, move out _edata and the initial value of the stack pointer, which are now used in two places, and are needed earlier than the remaining contents of LC0. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> --- arch/arm/boot/compressed/head.S | 33 +++++++++----------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index bb674febf640..a6cf2f8115e5 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -259,19 +259,16 @@ not_angel: * Find the start of physical memory. * Try the DTB first, if available. */ - adr r0, LC0 - ldr r1, [r0] @ get absolute LC0 - ldr sp, [r0, #24] @ get stack location - sub r1, r0, r1 @ compute relocation offset - add sp, sp, r1 @ apply relocation + adr r0, LC1 + ldmia r0, {r1, r6} + add sp, r1, r0 @ get stack location + add r6, r6, r0 @ get &_edata #ifdef CONFIG_ARM_APPENDED_DTB /* * Look for an appended DTB. If found, use it and * move stack away from it. */ - ldr r6, [r0, #12] @ get &_edata - add r6, r6, r1 @ relocate it ldmia r6, {r0, r5} @ get DTB signature and size #ifndef __ARMEB__ ldr r1, =0xedfe0dd0 @ sig is 0xd00dfeed big endian @@ -345,22 +342,19 @@ not_angel: orrcc r4, r4, #1 @ remember we skipped cache_on blcs cache_on -restart: adr r0, LC0 - ldmia r0, {r1, r2, r3, r6, r11, r12} - ldr sp, [r0, #24] +restart: adr r0, LC1 + ldmia r0, {r1, r6} + add sp, r1, r0 + add r6, r6, r0 - /* - * We might be running at a different address. We need - * to fix up various pointers. - */ + adr r0, LC0 + ldmia r0, {r1, r2, r3, r11, r12} sub r0, r0, r1 @ calculate the delta offset - add r6, r6, r0 @ _edata get_inflated_image_size r9, r10, lr #ifndef CONFIG_ZBOOT_ROM /* malloc space is above the relocated stack (64k max) */ - add sp, sp, r0 add r10, sp, #0x10000 #else /* @@ -712,12 +706,15 @@ not_relocated: mov r0, #0 LC0: .word LC0 @ r1 .word __bss_start @ r2 .word _end @ r3 - .word _edata @ r6 .word _got_start @ r11 .word _got_end @ ip - .word .L_user_stack_end @ sp .size LC0, . - LC0 + .type LC1, #object +LC1: .word .L_user_stack_end - LC1 @ sp + .word _edata - LC1 @ r6 + .size LC1, . - LC1 + .Lheadroom: .word _end - restart + 16384 + 1024*1024 -- 2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: Ard Biesheuvel <ardb@kernel.org> To: linux-arm-kernel@lists.infradead.org Cc: linux-efi@vger.kernel.org, Geert Uytterhoeven <geert+renesas@glider.be>, Nicolas Pitre <nico@fluxnic.net>, Linus Walleij <linus.walleij@linaro.org>, Russell King <linux@armlinux.org.uk>, Ard Biesheuvel <ardb@kernel.org> Subject: [PATCH 2/5] ARM: decompressor: split off _edata and stack base into separate object Date: Fri, 27 Mar 2020 11:59:03 +0100 [thread overview] Message-ID: <20200327105906.2665-3-ardb@kernel.org> (raw) In-Reply-To: <20200327105906.2665-1-ardb@kernel.org> In preparation of moving the handling of the LC0 object to a later stage in the decompressor startup code, move out _edata and the initial value of the stack pointer, which are now used in two places, and are needed earlier than the remaining contents of LC0. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> --- arch/arm/boot/compressed/head.S | 33 +++++++++----------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index bb674febf640..a6cf2f8115e5 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -259,19 +259,16 @@ not_angel: * Find the start of physical memory. * Try the DTB first, if available. */ - adr r0, LC0 - ldr r1, [r0] @ get absolute LC0 - ldr sp, [r0, #24] @ get stack location - sub r1, r0, r1 @ compute relocation offset - add sp, sp, r1 @ apply relocation + adr r0, LC1 + ldmia r0, {r1, r6} + add sp, r1, r0 @ get stack location + add r6, r6, r0 @ get &_edata #ifdef CONFIG_ARM_APPENDED_DTB /* * Look for an appended DTB. If found, use it and * move stack away from it. */ - ldr r6, [r0, #12] @ get &_edata - add r6, r6, r1 @ relocate it ldmia r6, {r0, r5} @ get DTB signature and size #ifndef __ARMEB__ ldr r1, =0xedfe0dd0 @ sig is 0xd00dfeed big endian @@ -345,22 +342,19 @@ not_angel: orrcc r4, r4, #1 @ remember we skipped cache_on blcs cache_on -restart: adr r0, LC0 - ldmia r0, {r1, r2, r3, r6, r11, r12} - ldr sp, [r0, #24] +restart: adr r0, LC1 + ldmia r0, {r1, r6} + add sp, r1, r0 + add r6, r6, r0 - /* - * We might be running at a different address. We need - * to fix up various pointers. - */ + adr r0, LC0 + ldmia r0, {r1, r2, r3, r11, r12} sub r0, r0, r1 @ calculate the delta offset - add r6, r6, r0 @ _edata get_inflated_image_size r9, r10, lr #ifndef CONFIG_ZBOOT_ROM /* malloc space is above the relocated stack (64k max) */ - add sp, sp, r0 add r10, sp, #0x10000 #else /* @@ -712,12 +706,15 @@ not_relocated: mov r0, #0 LC0: .word LC0 @ r1 .word __bss_start @ r2 .word _end @ r3 - .word _edata @ r6 .word _got_start @ r11 .word _got_end @ ip - .word .L_user_stack_end @ sp .size LC0, . - LC0 + .type LC1, #object +LC1: .word .L_user_stack_end - LC1 @ sp + .word _edata - LC1 @ r6 + .size LC1, . - LC1 + .Lheadroom: .word _end - restart + 16384 + 1024*1024 -- 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-03-27 10:59 UTC|newest] Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-03-27 10:59 [PATCH 0/5] ARM: simplify handover from UEFI to decompressor Ard Biesheuvel 2020-03-27 10:59 ` Ard Biesheuvel 2020-03-27 10:59 ` [PATCH 1/5] ARM: decompressor: move headroom variable out of LC0 Ard Biesheuvel 2020-03-27 10:59 ` Ard Biesheuvel 2020-03-27 13:23 ` Geert Uytterhoeven 2020-03-27 13:23 ` Geert Uytterhoeven 2020-03-27 13:59 ` Ard Biesheuvel 2020-03-27 13:59 ` Ard Biesheuvel 2020-03-27 10:59 ` Ard Biesheuvel [this message] 2020-03-27 10:59 ` [PATCH 2/5] ARM: decompressor: split off _edata and stack base into separate object Ard Biesheuvel 2020-03-27 13:23 ` Geert Uytterhoeven 2020-03-27 13:23 ` Geert Uytterhoeven 2020-03-27 10:59 ` [PATCH 3/5] ARM: decompressor: defer loading of the contents of the LC0 structure Ard Biesheuvel 2020-03-27 10:59 ` Ard Biesheuvel 2020-03-27 13:24 ` Geert Uytterhoeven 2020-03-27 13:24 ` Geert Uytterhoeven 2020-03-27 10:59 ` [PATCH 4/5] ARM: decompressor: move GOT into .data for EFI enabled builds Ard Biesheuvel 2020-03-27 10:59 ` Ard Biesheuvel 2020-03-27 10:59 ` [PATCH 5/5] ARM: decompressor: run decompressor in place if loaded via UEFI Ard Biesheuvel 2020-03-27 10:59 ` 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=20200327105906.2665-3-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 \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.