From: mark.rutland@arm.com (Mark Rutland)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 7/9] arm64: kernel: drop use of x24 from primary boot path
Date: Tue, 30 Aug 2016 15:26:38 +0100 [thread overview]
Message-ID: <20160830142637.GJ1223@leverpostej> (raw)
In-Reply-To: <1472049366-10922-8-git-send-email-ard.biesheuvel@linaro.org>
On Wed, Aug 24, 2016 at 04:36:04PM +0200, Ard Biesheuvel wrote:
> Keeping __PHYS_OFFSET in x24 is actually less clear than simply taking
> the value of __PHYS_OFFSET using an adrp instruction in the three places
> that we need it. So change that.
>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Mark Rutland <mark.rutland@arm.com>
Mark.
> ---
> arch/arm64/kernel/head.S | 20 ++++++++++++--------
> 1 file changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
> index c112c153821e..27f51272de68 100644
> --- a/arch/arm64/kernel/head.S
> +++ b/arch/arm64/kernel/head.S
> @@ -211,8 +211,8 @@ efi_header_end:
> ENTRY(stext)
> bl preserve_boot_args
> bl el2_setup // Drop to EL1, w0=cpu_boot_mode
> - adrp x24, __PHYS_OFFSET
> - and x23, x24, MIN_KIMG_ALIGN - 1 // KASLR offset, defaults to 0
> + adrp x23, __PHYS_OFFSET
> + and x23, x23, MIN_KIMG_ALIGN - 1 // KASLR offset, defaults to 0
> bl set_cpu_boot_mode_flag
> bl __create_page_tables
> /*
> @@ -412,6 +412,8 @@ ENDPROC(__create_page_tables)
>
> /*
> * The following fragment of code is executed with the MMU enabled.
> + *
> + * x0 = __PHYS_OFFSET
> */
> .set initial_sp, init_thread_union + THREAD_START_SP
> __primary_switched:
> @@ -420,6 +422,12 @@ __primary_switched:
> msr vbar_el1, x8 // vector table address
> isb
>
> + str_l x21, __fdt_pointer, x5 // Save FDT pointer
> +
> + ldr_l x4, kimage_vaddr // Save the offset between
> + sub x4, x4, x0 // the kernel virtual and
> + str_l x4, kimage_voffset, x5 // physical mappings
> +
> // Clear BSS
> adr_l x0, __bss_start
> mov x1, xzr
> @@ -432,12 +440,6 @@ __primary_switched:
> mov x4, sp
> and x4, x4, #~(THREAD_SIZE - 1)
> msr sp_el0, x4 // Save thread_info
> - str_l x21, __fdt_pointer, x5 // Save FDT pointer
> -
> - ldr_l x4, kimage_vaddr // Save the offset between
> - sub x4, x4, x24 // the kernel virtual and
> - str_l x4, kimage_voffset, x5 // physical mappings
> -
> mov x29, #0
> #ifdef CONFIG_KASAN
> bl kasan_early_init
> @@ -792,6 +794,7 @@ __primary_switch:
> bl __relocate_kernel
> #ifdef CONFIG_RANDOMIZE_BASE
> ldr x8, =__primary_switched
> + adrp x0, __PHYS_OFFSET
> blr x8
>
> /*
> @@ -813,5 +816,6 @@ __primary_switch:
> #endif
> #endif
> ldr x8, =__primary_switched
> + adrp x0, __PHYS_OFFSET
> br x8
> ENDPROC(__primary_switch)
> --
> 2.7.4
>
next prev parent reply other threads:[~2016-08-30 14:26 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-24 14:35 [PATCH v2 0/9] arm64: clean up early boot function calls Ard Biesheuvel
2016-08-24 14:35 ` [PATCH v2 1/9] arm64: kernel: get rid of x25 and x26 with 'global' scope Ard Biesheuvel
2016-08-24 14:35 ` [PATCH v2 2/9] arm64: kernel: fix style issues in sleep.S Ard Biesheuvel
2016-08-24 16:13 ` Mark Rutland
2016-08-24 14:36 ` [PATCH v2 3/9] arm64: kernel: use ordinary return/argument register for el2_setup() Ard Biesheuvel
2016-08-24 16:20 ` Mark Rutland
2016-08-24 14:36 ` [PATCH v2 4/9] arm64: head.S: move KASLR processing out of __enable_mmu() Ard Biesheuvel
2016-08-24 20:36 ` Mark Rutland
2016-08-24 20:44 ` Ard Biesheuvel
2016-08-24 20:46 ` Mark Rutland
2016-08-25 13:59 ` Ard Biesheuvel
2016-08-30 10:24 ` Mark Rutland
2016-08-30 13:45 ` Mark Rutland
2016-08-24 14:36 ` [PATCH v2 5/9] arm64: kernel: use x30 for __enable_mmu return address Ard Biesheuvel
2016-08-24 14:36 ` [PATCH v2 6/9] arm64: call __enable_mmu as an ordinary function for secondary/resume Ard Biesheuvel
2016-08-30 14:07 ` Mark Rutland
2016-08-24 14:36 ` [PATCH v2 7/9] arm64: kernel: drop use of x24 from primary boot path Ard Biesheuvel
2016-08-30 14:26 ` Mark Rutland [this message]
2016-08-24 14:36 ` [PATCH v2 8/9] arm64: head.S: use ordinary stack frame for __primary_switched() Ard Biesheuvel
2016-08-30 14:38 ` Mark Rutland
2016-08-24 14:36 ` [PATCH v2 9/9] arm64: head.S: document the use of callee saved registers Ard Biesheuvel
2016-08-30 14:43 ` Mark Rutland
2016-08-30 14:48 ` [PATCH v2 0/9] arm64: clean up early boot function calls Mark Rutland
2016-08-30 14:50 ` 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=20160830142637.GJ1223@leverpostej \
--to=mark.rutland@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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 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.