arm64: use PC-relative reference for secondary_holding_pen_release
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Tue, 10 Mar 2015 14:00:03 +0000 (15:00 +0100)
committerWill Deacon <will.deacon@arm.com>
Thu, 19 Mar 2015 19:46:01 +0000 (19:46 +0000)
Replace the confusing virtual/physical address arithmetic with a simple
PC-relative reference.

Tested-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/head.S

index 42ff10967dcc9064aae0ab9148cf2f23d8330aac..818213186dac13713943671f680bc26091b7d3d7 100644 (file)
@@ -564,10 +564,6 @@ ENTRY(__boot_cpu_mode)
        .popsection
 
 #ifdef CONFIG_SMP
-       .align  3
-1:     .quad   .
-       .quad   secondary_holding_pen_release
-
        /*
         * This provides a "holding pen" for platforms to hold all secondary
         * cores are held until we're ready for them to initialise.
@@ -579,10 +575,7 @@ ENTRY(secondary_holding_pen)
        mrs     x0, mpidr_el1
        ldr     x1, =MPIDR_HWID_BITMASK
        and     x0, x0, x1
-       adr     x1, 1b
-       ldp     x2, x3, [x1]
-       sub     x1, x1, x2
-       add     x3, x3, x1
+       adr_l   x3, secondary_holding_pen_release
 pen:   ldr     x4, [x3]
        cmp     x4, x0
        b.eq    secondary_startup