From: Stefano Stabellini <sstabellini@kernel.org>
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, michal.orzel@amd.com,
Luca.Fancellu@arm.com, Julien Grall <jgrall@amazon.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Bertrand Marquis <bertrand.marquis@arm.com>,
Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH v3 06/18] xen/arm32: head: Replace "ldr rX, =<label>" with "mov_w rX, <label>"
Date: Mon, 12 Dec 2022 16:31:39 -0800 (PST) [thread overview]
Message-ID: <alpine.DEB.2.22.394.2212121631330.3075842@ubuntu-linux-20-04-desktop> (raw)
In-Reply-To: <20221212095523.52683-7-julien@xen.org>
On Mon, 12 Dec 2022, Julien Grall wrote:
> From: Julien Grall <jgrall@amazon.com>
>
> "ldr rX, =<label>" is used to load a value from the literal pool. This
> implies a memory access.
>
> This can be avoided by using the macro mov_w which encode the value in
> the immediate of two instructions.
>
> So replace all "ldr rX, =<label>" with "mov_w rX, <label>".
>
> No functional changes intended.
>
> Signed-off-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
> ---
>
> Changes in v3:
> * Patch added
> ---
> xen/arch/arm/arm32/head.S | 38 +++++++++++++++++++-------------------
> 1 file changed, 19 insertions(+), 19 deletions(-)
>
> diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S
> index a558c2a6876e..ce680be91be1 100644
> --- a/xen/arch/arm/arm32/head.S
> +++ b/xen/arch/arm/arm32/head.S
> @@ -62,7 +62,7 @@
> .endm
>
> .macro load_paddr rb, sym
> - ldr \rb, =\sym
> + mov_w \rb, \sym
> add \rb, \rb, r10
> .endm
>
> @@ -149,7 +149,7 @@ past_zImage:
> mov r8, r2 /* r8 := DTB base address */
>
> /* Find out where we are */
> - ldr r0, =start
> + mov_w r0, start
> adr r9, start /* r9 := paddr (start) */
> sub r10, r9, r0 /* r10 := phys-offset */
>
> @@ -170,7 +170,7 @@ past_zImage:
> bl enable_mmu
>
> /* We are still in the 1:1 mapping. Jump to the runtime Virtual Address. */
> - ldr r0, =primary_switched
> + mov_w r0, primary_switched
> mov pc, r0
> primary_switched:
> /*
> @@ -190,7 +190,7 @@ primary_switched:
> /* Setup the arguments for start_xen and jump to C world */
> mov r0, r10 /* r0 := Physical offset */
> mov r1, r8 /* r1 := paddr(FDT) */
> - ldr r2, =start_xen
> + mov_w r2, start_xen
> b launch
> ENDPROC(start)
>
> @@ -198,7 +198,7 @@ GLOBAL(init_secondary)
> cpsid aif /* Disable all interrupts */
>
> /* Find out where we are */
> - ldr r0, =start
> + mov_w r0, start
> adr r9, start /* r9 := paddr (start) */
> sub r10, r9, r0 /* r10 := phys-offset */
>
> @@ -227,7 +227,7 @@ GLOBAL(init_secondary)
>
>
> /* We are still in the 1:1 mapping. Jump to the runtime Virtual Address. */
> - ldr r0, =secondary_switched
> + mov_w r0, secondary_switched
> mov pc, r0
> secondary_switched:
> /*
> @@ -236,7 +236,7 @@ secondary_switched:
> *
> * XXX: This is not compliant with the Arm Arm.
> */
> - ldr r4, =init_ttbr /* VA of HTTBR value stashed by CPU 0 */
> + mov_w r4, init_ttbr /* VA of HTTBR value stashed by CPU 0 */
> ldrd r4, r5, [r4] /* Actual value */
> dsb
> mcrr CP64(r4, r5, HTTBR)
> @@ -254,7 +254,7 @@ secondary_switched:
> #endif
> PRINT("- Ready -\r\n")
> /* Jump to C world */
> - ldr r2, =start_secondary
> + mov_w r2, start_secondary
> b launch
> ENDPROC(init_secondary)
>
> @@ -297,8 +297,8 @@ ENDPROC(check_cpu_mode)
> */
> zero_bss:
> PRINT("- Zero BSS -\r\n")
> - ldr r0, =__bss_start /* r0 := vaddr(__bss_start) */
> - ldr r1, =__bss_end /* r1 := vaddr(__bss_start) */
> + mov_w r0, __bss_start /* r0 := vaddr(__bss_start) */
> + mov_w r1, __bss_end /* r1 := vaddr(__bss_start) */
>
> mov r2, #0
> 1: str r2, [r0], #4
> @@ -330,8 +330,8 @@ cpu_init:
>
> cpu_init_done:
> /* Set up memory attribute type tables */
> - ldr r0, =MAIR0VAL
> - ldr r1, =MAIR1VAL
> + mov_w r0, MAIR0VAL
> + mov_w r1,MAIR1VAL
> mcr CP32(r0, HMAIR0)
> mcr CP32(r1, HMAIR1)
>
> @@ -341,10 +341,10 @@ cpu_init_done:
> * PT walks are write-back, write-allocate in both cache levels,
> * Full 32-bit address space goes through this table.
> */
> - ldr r0, =(TCR_RES1|TCR_SH0_IS|TCR_ORGN0_WBWA|TCR_IRGN0_WBWA|TCR_T0SZ(0))
> + mov_w r0, (TCR_RES1|TCR_SH0_IS|TCR_ORGN0_WBWA|TCR_IRGN0_WBWA|TCR_T0SZ(0))
> mcr CP32(r0, HTCR)
>
> - ldr r0, =HSCTLR_SET
> + mov_w r0, HSCTLR_SET
> mcr CP32(r0, HSCTLR)
> isb
>
> @@ -452,7 +452,7 @@ ENDPROC(cpu_init)
> */
> create_page_tables:
> /* Prepare the page-tables for mapping Xen */
> - ldr r0, =XEN_VIRT_START
> + mov_w r0, XEN_VIRT_START
> create_table_entry boot_pgtable, boot_second, r0, 1
> create_table_entry boot_second, boot_third, r0, 2
>
> @@ -576,7 +576,7 @@ remove_identity_mapping:
> cmp r1, #XEN_FIRST_SLOT
> beq 1f
> /* It is not in slot 0, remove the entry */
> - ldr r0, =boot_pgtable /* r0 := root table */
> + mov_w r0, boot_pgtable /* r0 := root table */
> lsl r1, r1, #3 /* r1 := Slot offset */
> strd r2, r3, [r0, r1]
> b identity_mapping_removed
> @@ -590,7 +590,7 @@ remove_identity_mapping:
> cmp r1, #XEN_SECOND_SLOT
> beq identity_mapping_removed
> /* It is not in slot 1, remove the entry */
> - ldr r0, =boot_second /* r0 := second table */
> + mov_w r0, boot_second /* r0 := second table */
> lsl r1, r1, #3 /* r1 := Slot offset */
> strd r2, r3, [r0, r1]
>
> @@ -620,7 +620,7 @@ ENDPROC(remove_identity_mapping)
> setup_fixmap:
> #if defined(CONFIG_EARLY_PRINTK)
> /* Add UART to the fixmap table */
> - ldr r0, =EARLY_UART_VIRTUAL_ADDRESS
> + mov_w r0, EARLY_UART_VIRTUAL_ADDRESS
> create_mapping_entry xen_fixmap, r0, r11, type=PT_DEV_L3
> #endif
> /* Map fixmap into boot_second */
> @@ -643,7 +643,7 @@ ENDPROC(setup_fixmap)
> * Clobbers r3
> */
> launch:
> - ldr r3, =init_data
> + mov_w r3, init_data
> add r3, #INITINFO_stack /* Find the boot-time stack */
> ldr sp, [r3]
> add sp, #STACK_SIZE /* (which grows down from the top). */
> --
> 2.38.1
>
next prev parent reply other threads:[~2022-12-13 0:32 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-12 9:55 [PATCH v3 00/18] xen/arm: Don't switch TTBR while the MMU is on Julien Grall
2022-12-12 9:55 ` [PATCH v3 01/18] xen/arm64: flushtlb: Reduce scope of barrier for local TLB flush Julien Grall
2022-12-13 9:11 ` Michal Orzel
2022-12-13 9:45 ` Julien Grall
2022-12-13 9:50 ` Michal Orzel
2023-01-23 16:19 ` Ayan Kumar Halder
2022-12-12 9:55 ` [PATCH v3 02/18] xen/arm64: flushtlb: Implement the TLBI repeat workaround for TLB flush by VA Julien Grall
2022-12-13 9:23 ` Michal Orzel
2022-12-12 9:55 ` [PATCH v3 03/18] xen/arm32: flushtlb: Reduce scope of barrier for local TLB flush Julien Grall
2022-12-13 10:48 ` Michal Orzel
2022-12-12 9:55 ` [PATCH v3 04/18] xen/arm: flushtlb: Reduce scope of barrier for the TLB range flush Julien Grall
2022-12-13 11:15 ` Michal Orzel
2022-12-12 9:55 ` [PATCH v3 05/18] xen/arm: Clean-up the memory layout Julien Grall
2022-12-13 10:57 ` Michal Orzel
2022-12-13 11:00 ` Michal Orzel
2022-12-12 9:55 ` [PATCH v3 06/18] xen/arm32: head: Replace "ldr rX, =<label>" with "mov_w rX, <label>" Julien Grall
2022-12-13 0:31 ` Stefano Stabellini [this message]
2022-12-13 11:10 ` Michal Orzel
2022-12-12 9:55 ` [PATCH v3 07/18] xen/arm32: head: Jump to the runtime mapping in enable_mmu() Julien Grall
2022-12-13 0:46 ` Stefano Stabellini
2022-12-12 9:55 ` [PATCH v3 08/18] xen/arm32: head: Introduce an helper to flush the TLBs Julien Grall
2022-12-14 14:24 ` Michal Orzel
2023-01-12 19:38 ` Julien Grall
2022-12-12 9:55 ` [PATCH v3 09/18] xen/arm32: head: Remove restriction where to load Xen Julien Grall
2022-12-13 18:23 ` Julien Grall
2022-12-12 9:55 ` [PATCH v3 10/18] xen/arm32: head: Widen the use of the temporary mapping Julien Grall
2022-12-12 9:55 ` [PATCH v3 11/18] xen/arm: Enable use of dump_pt_walk() early during boot Julien Grall
2022-12-13 1:06 ` Stefano Stabellini
2022-12-12 9:55 ` [PATCH v3 12/18] xen/arm64: Rework the memory layout Julien Grall
2022-12-13 1:22 ` Stefano Stabellini
2022-12-13 18:31 ` Julien Grall
2022-12-12 9:55 ` [PATCH v3 13/18] xen/arm: mm: Allow xen_pt_update() to work with the current root table Julien Grall
2022-12-13 1:24 ` Stefano Stabellini
2022-12-12 9:55 ` [PATCH v3 14/18] xen/arm: mm: Allow dump_hyp_walk() to work on " Julien Grall
2022-12-13 1:24 ` Stefano Stabellini
2022-12-12 9:55 ` [PATCH v3 15/18] xen/arm64: mm: Introduce helpers to prepare/enable/disable the identity mapping Julien Grall
2022-12-13 1:41 ` Stefano Stabellini
2023-01-12 22:03 ` Julien Grall
2022-12-12 9:55 ` [PATCH v3 16/18] xen/arm: linker: Indent correctly _stext Julien Grall
2022-12-13 1:42 ` Stefano Stabellini
2022-12-12 9:55 ` [PATCH v3 17/18] xen/arm: linker: The identitymap check should cover the whole .text.header Julien Grall
2022-12-13 1:44 ` Stefano Stabellini
2022-12-12 9:55 ` [PATCH v3 18/18] xen/arm64: mm: Rework switch_ttbr() Julien Grall
2022-12-13 2:00 ` Stefano Stabellini
2022-12-13 19:08 ` Julien Grall
2022-12-13 22:56 ` Stefano Stabellini
2022-12-13 23:01 ` Julien Grall
2022-12-15 11:48 ` [PATCH v3 00/18] xen/arm: Don't switch TTBR while the MMU is on Julien Grall
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=alpine.DEB.2.22.394.2212121631330.3075842@ubuntu-linux-20-04-desktop \
--to=sstabellini@kernel.org \
--cc=Luca.Fancellu@arm.com \
--cc=Volodymyr_Babchuk@epam.com \
--cc=bertrand.marquis@arm.com \
--cc=jgrall@amazon.com \
--cc=julien@xen.org \
--cc=michal.orzel@amd.com \
--cc=xen-devel@lists.xenproject.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.