From: Julien Grall <julien@xen.org>
To: xen-devel@lists.xenproject.org
Cc: Luca.Fancellu@arm.com, Julien Grall <jgrall@amazon.com>,
Stefano Stabellini <sstabellini@kernel.org>,
Julien Grall <julien@xen.org>,
Bertrand Marquis <bertrand.marquis@arm.com>,
Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v4 06/14] xen/arm32: head: Replace "ldr rX, =<label>" with "mov_w rX, <label>"
Date: Fri, 13 Jan 2023 10:11:28 +0000 [thread overview]
Message-ID: <20230113101136.479-7-julien@xen.org> (raw)
In-Reply-To: <20230113101136.479-1-julien@xen.org>
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 v4:
* Add Stefano's reviewed-by tag
* Add missing space
* Add Michal's reviewed-by tag
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 5c1044710386..b680a4553fb6 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:[~2023-01-13 10:11 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-13 10:11 [PATCH v4 00/14] xen/arm: Don't switch TTBR while the MMU is on Julien Grall
2023-01-13 10:11 ` [PATCH v4 01/14] xen/arm64: flushtlb: Reduce scope of barrier for local TLB flush Julien Grall
2023-01-13 11:36 ` Henry Wang
2023-01-13 10:11 ` [PATCH v4 02/14] xen/arm64: flushtlb: Implement the TLBI repeat workaround for TLB flush by VA Julien Grall
2023-01-13 13:22 ` Henry Wang
2023-01-13 17:56 ` Luca Fancellu
2023-01-16 8:36 ` Julien Grall
2023-01-13 10:11 ` [PATCH v4 03/14] xen/arm32: flushtlb: Reduce scope of barrier for local TLB flush Julien Grall
2023-01-13 13:46 ` Henry Wang
2023-01-13 10:11 ` [PATCH v4 04/14] xen/arm: flushtlb: Reduce scope of barrier for the TLB range flush Julien Grall
2023-01-13 13:53 ` Henry Wang
2023-01-13 10:11 ` [PATCH v4 05/14] xen/arm: Clean-up the memory layout Julien Grall
2023-01-13 13:57 ` Henry Wang
2023-01-24 19:30 ` Julien Grall
2023-01-13 10:11 ` Julien Grall [this message]
2023-01-13 10:45 ` [PATCH v4 06/14] xen/arm32: head: Replace "ldr rX, =<label>" with "mov_w rX, <label>" Michal Orzel
2023-01-13 10:47 ` Julien Grall
2023-01-14 0:51 ` Henry Wang
2023-01-13 10:11 ` [PATCH v4 07/14] xen/arm32: head: Jump to the runtime mapping in enable_mmu() Julien Grall
2023-01-14 1:33 ` Henry Wang
2023-01-13 10:11 ` [PATCH v4 08/14] xen/arm32: head: Introduce an helper to flush the TLBs Julien Grall
2023-01-13 10:46 ` Michal Orzel
2023-01-14 2:16 ` Henry Wang
2023-01-13 10:11 ` [PATCH v4 09/14] xen/arm32: head: Remove restriction where to load Xen Julien Grall
2023-01-13 14:58 ` Luca Fancellu
2023-01-16 8:43 ` Julien Grall
2023-01-16 8:14 ` Michal Orzel
2023-01-16 8:55 ` Julien Grall
2023-01-16 9:32 ` Michal Orzel
2023-01-13 10:11 ` [PATCH v4 10/14] xen/arm32: head: Widen the use of the temporary mapping Julien Grall
2023-01-13 15:37 ` Luca Fancellu
2023-01-16 8:20 ` Michal Orzel
2023-01-24 19:43 ` Julien Grall
2023-01-27 19:19 ` Julien Grall
2023-01-13 10:11 ` [PATCH v4 11/14] xen/arm64: Rework the memory layout Julien Grall
2023-01-13 15:58 ` Luca Fancellu
2023-01-16 8:46 ` Michal Orzel
2023-01-16 9:29 ` Julien Grall
2023-01-16 10:59 ` Michal Orzel
2023-01-13 10:11 ` [PATCH v4 12/14] xen/arm64: mm: Introduce helpers to prepare/enable/disable the identity mapping Julien Grall
2023-01-13 16:26 ` Luca Fancellu
2023-01-16 8:53 ` Michal Orzel
2023-01-27 19:30 ` Julien Grall
2023-01-13 10:11 ` [PATCH v4 13/14] xen/arm64: mm: Rework switch_ttbr() Julien Grall
2023-01-13 16:50 ` Luca Fancellu
2023-01-16 9:23 ` Michal Orzel
2023-01-16 9:32 ` Julien Grall
2023-01-13 10:11 ` [PATCH v4 14/14] xen/arm64: smpboot: Directly switch to the runtime page-tables Julien Grall
2023-01-13 17:42 ` Luca Fancellu
2023-01-16 9:06 ` Luca Fancellu
2023-01-27 19:39 ` Julien Grall
2023-01-24 19:35 ` [PATCH v4 00/14] 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=20230113101136.479-7-julien@xen.org \
--to=julien@xen.org \
--cc=Luca.Fancellu@arm.com \
--cc=Volodymyr_Babchuk@epam.com \
--cc=bertrand.marquis@arm.com \
--cc=jgrall@amazon.com \
--cc=sstabellini@kernel.org \
--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.