armv8: layerscape: load function pointer using ADR

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@walle.cc>
Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
This commit is contained in:
Michael Walle 2020-06-01 21:53:28 +02:00 committed by Priyanka Jain
parent f6c62f1c9e
commit 2eca7b9704

View file

@ -57,11 +57,11 @@ ENTRY(secondary_boot_func)
* table (each elem is padded to 64 bytes) * table (each elem is padded to 64 bytes)
*/ */
lsl x1, x10, #6 lsl x1, x10, #6
ldr x0, =__spin_table adr x0, __spin_table
/* physical address of this cpus spin table element */ /* physical address of this cpus spin table element */
add x11, x1, x0 add x11, x1, x0
ldr x0, =__real_cntfrq adr x0, __real_cntfrq
ldr x0, [x0] ldr x0, [x0]
msr cntfrq_el0, x0 /* set with real frequency */ msr cntfrq_el0, x0 /* set with real frequency */
str x9, [x11, #16] /* LPID */ str x9, [x11, #16] /* LPID */
@ -117,7 +117,7 @@ ENTRY(secondary_switch_to_el1)
orr x10, x2, x1, lsl #2 /* x10 has LPID */ orr x10, x2, x1, lsl #2 /* x10 has LPID */
lsl x1, x10, #6 lsl x1, x10, #6
ldr x0, =__spin_table adr x0, __spin_table
/* physical address of this cpus spin table element */ /* physical address of this cpus spin table element */
add x11, x1, x0 add x11, x1, x0