Message ID | CAKv+Gu8dmYDqri7Nt_A6vKTQo1eqFa7G=wdYQ8ad7EaT_smA7Q@mail.gmail.com |
---|---|
State | New |
Headers | show |
On 21 April 2016 at 01:51, Russell King - ARM Linux <linux@arm.linux.org.uk> wrote: > On Wed, Apr 20, 2016 at 01:06:28PM +0200, Ard Biesheuvel wrote: >> @@ -21,15 +22,9 @@ ENTRY(secondary_trampoline) >> * where the physical memory does not start at 0x0. >> */ >> ARM_BE8(setend be) >> - adr r0, 1f >> - ldmia r0, {r1, r2} >> - sub r2, r2, #PAGE_OFFSET >> + ldr r2, =socfpga_cpu1start_addr - PAGE_OFFSET > > NAK. Where do you expect the assembler to place the literal pool for > this constant? The only way that'll work is if it's placed before > "ENTRY(secondary_trampoline_end)" below, but there's no guarantee > (afaik) where literal pools will be placed. > Ah yes, we'd still need to put an .ltorg directive before the end marker. Alternatively, we could keep the explicit literal but subtract PAGE_OFFSET there directly (but drop the unused '.' literal and replace adr+ldmia with ldr) >> ldr r3, [r2] >> ldr r4, [r3] >> ARM_BE8(rev r4, r4) >> bx r4 >> - >> - .align >> -1: .long . >> - .long socfpga_cpu1start_addr >> ENTRY(secondary_trampoline_end) >> >> _______________________________________________ >> linux-arm-kernel mailing list >> linux-arm-kernel@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > -- > RMK's Patch system: http://www.arm.linux.org.uk/developer/patches/ > FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up > according to speedtest.net. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
diff --git a/arch/arm/mach-socfpga/headsmp.S b/arch/arm/mach-socfpga/headsmp.S index 5d94b7a2fb10..7e4ab55cc529 100644 --- a/arch/arm/mach-socfpga/headsmp.S +++ b/arch/arm/mach-socfpga/headsmp.S @@ -13,6 +13,7 @@ #include <asm/assembler.h> .arch armv7-a + .arm ENTRY(secondary_trampoline) /* CPU1 will always fetch from 0x0 when it is brought out of reset. @@ -21,15 +22,9 @@ ENTRY(secondary_trampoline) * where the physical memory does not start at 0x0. */ ARM_BE8(setend be) - adr r0, 1f - ldmia r0, {r1, r2} - sub r2, r2, #PAGE_OFFSET + ldr r2, =socfpga_cpu1start_addr - PAGE_OFFSET ldr r3, [r2] ldr r4, [r3] ARM_BE8(rev r4, r4) bx r4 - - .align -1: .long . - .long socfpga_cpu1start_addr ENTRY(secondary_trampoline_end)