mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/arm32: head: Replace load_paddr with adr_l when they are equivalent
Before the MMU is turned on, PC uses physical address. Thus, one can use adr_l instead of load_paddr to obtain the physical address of a symbol. The only exception (for this replacement) is create_table_entry() which is called before and after MMU is turned on. Also, in lookup_processor_type() "r10" is no longer used. The reason being __lookup_processor_type uses adr_l (thus r10 is no longer used to obtain the physical address offset). Consequently, there is no need to save/restore r10. Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com> Reviewed-by: Michal Orzel <michal.orzel@amd.com> [jgrall: Reword comment on top of __lookup_processor_type] Signed-off-by: Julien Grall <jgrall@amazon.com>
This commit is contained in:
1 parent
046f13a2b3
commit
9b807e23e7
1 file changed
+8
-11
@@ -171,7 +171,7 @@ past_zImage:
|
||||
|
||||
/* Using the DTB in the .dtb section? */
|
||||
.ifnes CONFIG_DTB_FILE,""
|
||||
load_paddr r8, _sdtb
|
||||
adr_l r8, _sdtb
|
||||
.endif
|
||||
|
||||
/* Initialize the UART if earlyprintk has been enabled. */
|
||||
@@ -213,7 +213,7 @@ GLOBAL(init_secondary)
|
||||
mrc CP32(r1, MPIDR)
|
||||
bic r7, r1, #(~MPIDR_HWID_MASK) /* Mask out flags to get CPU ID */
|
||||
|
||||
load_paddr r0, smp_up_cpu
|
||||
adr_l r0, smp_up_cpu
|
||||
dsb
|
||||
2: ldr r1, [r0]
|
||||
cmp r1, r7
|
||||
@@ -479,7 +479,7 @@ create_page_tables:
|
||||
* create_table_entry_paddr() will clobber the register storing
|
||||
* the physical address of the table to point to.
|
||||
*/
|
||||
load_paddr r5, boot_third
|
||||
adr_l r5, boot_third
|
||||
mov_w r4, XEN_VIRT_START
|
||||
.rept XEN_NR_ENTRIES(2)
|
||||
mov r0, r5 /* r0 := paddr(l3 table) */
|
||||
@@ -578,7 +578,7 @@ enable_mmu:
|
||||
flush_xen_tlb_local r0
|
||||
|
||||
/* Write Xen's PT's paddr into the HTTBR */
|
||||
load_paddr r0, boot_pgtable
|
||||
adr_l r0, boot_pgtable
|
||||
mov r1, #0 /* r0:r1 is paddr (boot_pagetable) */
|
||||
mcrr CP64(r0, r1, HTTBR)
|
||||
isb
|
||||
@@ -876,11 +876,10 @@ putn: mov pc, lr
|
||||
|
||||
/* This provides a C-API version of __lookup_processor_type */
|
||||
ENTRY(lookup_processor_type)
|
||||
stmfd sp!, {r4, r10, lr}
|
||||
mov r10, #0 /* r10 := offset between virt&phys */
|
||||
stmfd sp!, {r4, lr}
|
||||
bl __lookup_processor_type
|
||||
mov r0, r1
|
||||
ldmfd sp!, {r4, r10, pc}
|
||||
ldmfd sp!, {r4, pc}
|
||||
|
||||
/*
|
||||
* Read processor ID register (CP#15, CR0), and Look up in the linker-built
|
||||
@@ -888,8 +887,6 @@ ENTRY(lookup_processor_type)
|
||||
* the __proc_info lists since we aren't running with the MMU on (and therefore,
|
||||
* we are not in correct address space). We have to calculate the offset.
|
||||
*
|
||||
* r10: offset between virt&phys
|
||||
*
|
||||
* Returns:
|
||||
* r0: CPUID
|
||||
* r1: proc_info pointer
|
||||
@@ -897,8 +894,8 @@ ENTRY(lookup_processor_type)
|
||||
*/
|
||||
__lookup_processor_type:
|
||||
mrc CP32(r0, MIDR) /* r0 := our cpu id */
|
||||
load_paddr r1, __proc_info_start
|
||||
load_paddr r2, __proc_info_end
|
||||
adr_l r1, __proc_info_start
|
||||
adr_l r2, __proc_info_end
|
||||
1: ldr r3, [r1, #PROCINFO_cpu_mask]
|
||||
and r4, r0, r3 /* r4 := our cpu id with mask */
|
||||
ldr r3, [r1, #PROCINFO_cpu_val] /* r3 := cpu val in current proc info */
|
||||
|
||||