[PATCH v2 05/13] armv8: layerscape: load function pointer using ADR
Michael Walle
michael at walle.cc
Mon Jun 1 21:53:28 CEST 2020
Don't use LDR to load a pointer to a function. This will generate a
literal which cannot be relocated. Use ADR which is PC-relative and
therefore can easily be relocated.
Signed-off-by: Michael Walle <michael at walle.cc>
---
arch/arm/cpu/armv8/fsl-layerscape/spintable.S | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/spintable.S b/arch/arm/cpu/armv8/fsl-layerscape/spintable.S
index d71ec13eaf..ac9c622aee 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/spintable.S
+++ b/arch/arm/cpu/armv8/fsl-layerscape/spintable.S
@@ -57,11 +57,11 @@ ENTRY(secondary_boot_func)
* table (each elem is padded to 64 bytes)
*/
lsl x1, x10, #6
- ldr x0, =__spin_table
+ adr x0, __spin_table
/* physical address of this cpus spin table element */
add x11, x1, x0
- ldr x0, =__real_cntfrq
+ adr x0, __real_cntfrq
ldr x0, [x0]
msr cntfrq_el0, x0 /* set with real frequency */
str x9, [x11, #16] /* LPID */
@@ -117,7 +117,7 @@ ENTRY(secondary_switch_to_el1)
orr x10, x2, x1, lsl #2 /* x10 has LPID */
lsl x1, x10, #6
- ldr x0, =__spin_table
+ adr x0, __spin_table
/* physical address of this cpus spin table element */
add x11, x1, x0
--
2.20.1
More information about the U-Boot
mailing list