Skip to contentSkip to conversation

ARM: proc-v7: fix out-of-range adr instruction

PATCH New Arnd Bergmann 1 participant 1 message Feb 2, 2023 Arm (32-bit)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM: proc-v7: fix out-of-range adr instruction

From: Arnd Bergmann <[email protected]>

Before the change to CONFIG_ARCH_MULTIPLATFORM, some CONFIG_ARM_ERRATA_* options were always hidden, but now they are user visible in expert configurations, which caused a compile-time failure in randconfig builds with all of the errata enabled.

arch/arm/mm/proc-v7.S:545: Error: invalid constant (fffffffffffffbf4) after fixup /tmp/proc-v7-5b364b.s:1611:2: error: out of range pc-relative fixup value
adr r3, v7_crval

The problem is that the extra code size puts the v7_crval definition just outside of the range of the 'adr' instruction. Use the adr_l macro instead to allow longer offsets.

Fixes 84fc86360623 ("ARM: make ARCH_MULTIPLATFORM user-visible")
---
 arch/arm/mm/proc-v7.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/mm/proc-v7.S +1 -1
index 6b4ef9539b68..fe1469aa5be5 100644
@@ -544,7 +544,7 @@ __errata_finish:
 	mcr	p14, 6, r0, c0, c0, 0		@ stop userspace TEEHBR access
 1:
 #endif
-	adr	r3, v7_crval
+	adr_l	r3, v7_crval
 	ldmia	r3, {r3, r6}
  ARM_BE8(orr	r6, r6, #1 << 25)		@ big-endian page tables
 #ifdef CONFIG_SWP_EMULATE
Signature · 1 line
2.39.0