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

Message ID 20230202102538.999026-1-arnd@kernel.org
State New
Headers
Series ARM: proc-v7: fix out-of-range adr instruction |

Commit Message

Arnd Bergmann Feb. 2, 2023, 10:25 a.m. UTC
  From: Arnd Bergmann <arnd@arndb.de>

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")
Suggested-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/mm/proc-v7.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Patch

diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
index 6b4ef9539b68..fe1469aa5be5 100644
--- a/arch/arm/mm/proc-v7.S
+++ b/arch/arm/mm/proc-v7.S
@@ -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