mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/arm64: head: only use the macro load_paddr() in the MMU code
The macro load_paddr() requires to know the offset between the physical location of Xen and the virtual location. When using the MPU, x20 will always be 0. Rather than wasting a register for a compile-time constant value, it would be best if we can avoid using load_paddr() altogether in the common head.S code. The current use of load_paddr() are equivalent to adr_l() because the MMU is off. All the use of load_paddr() in arm64/head.S are now replaced with adr_l(). With that, load_paddr() can now be moved in arm64/mmu/head.S. For now, x20 is still unconditionally set. But this could change in the future if needed. Signed-off-by: Julien Grall <julien@xen.org> Reviewed-by: Michal Orzel <michal.orzel@amd.com>
This commit is contained in:
1 parent
c419d2dd35
commit
046f13a2b3
3 files changed
+8
-8
No files matched your search
@@ -259,7 +259,7 @@ real_start_efi:
|
||||
|
||||
/* Using the DTB in the .dtb section? */
|
||||
.ifnes CONFIG_DTB_FILE,""
|
||||
load_paddr x21, _sdtb
|
||||
adr_l x21, _sdtb
|
||||
.endif
|
||||
|
||||
/* Initialize the UART if earlyprintk has been enabled. */
|
||||
@@ -301,7 +301,7 @@ GLOBAL(init_secondary)
|
||||
bic x24, x0, x13 /* Mask out flags to get CPU ID */
|
||||
|
||||
/* Wait here until __cpu_up is ready to handle the CPU */
|
||||
load_paddr x0, smp_up_cpu
|
||||
adr_l x0, smp_up_cpu
|
||||
dsb sy
|
||||
2: ldr x1, [x0]
|
||||
cmp x1, x24
|
||||
|
||||
@@ -19,6 +19,12 @@
|
||||
#define XEN_FIRST_SLOT first_table_offset(XEN_VIRT_START)
|
||||
#define XEN_SECOND_SLOT second_table_offset(XEN_VIRT_START)
|
||||
|
||||
/* Load the physical address of a symbol into xb */
|
||||
.macro load_paddr xb, sym
|
||||
ldr \xb, =\sym
|
||||
add \xb, \xb, x20
|
||||
.endm
|
||||
|
||||
/*
|
||||
* Flush local TLBs
|
||||
*
|
||||
|
||||
@@ -62,12 +62,6 @@
|
||||
add \dst, \dst, :lo12:\sym
|
||||
.endm
|
||||
|
||||
/* Load the physical address of a symbol into xb */
|
||||
.macro load_paddr xb, sym
|
||||
ldr \xb, =\sym
|
||||
add \xb, \xb, x20
|
||||
.endm
|
||||
|
||||
/*
|
||||
* Register aliases.
|
||||
*/
|
||||
|
||||