[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 06/18] xen/arm32: head: Replace "ldr rX, =<label>" with "mov_w rX, <label>"
On Mon, 12 Dec 2022, Julien Grall wrote: > From: Julien Grall <jgrall@xxxxxxxxxx> > > "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@xxxxxxxxxx> Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> > --- > > 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 >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |