powerpc/64e: fix CONFIG_RELOCATABLE build warnings
authorNicholas Piggin <npiggin@gmail.com>
Wed, 30 Jun 2021 07:46:14 +0000 (17:46 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 30 Jun 2021 12:21:19 +0000 (22:21 +1000)
CONFIG_RELOCATABLE=y causes build warnings from unresolved relocations.
Fix these by using TOC addressing for these cases.

Commit 24d33ac5b8ff ("powerpc/64s: Make prom_init require RELOCATABLE")
caused some 64e configs to select RELOCATABLE resulting in these
warnings, but the underlying issue was already there.

This passes basic qemu testing.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20210630074621.2109197-3-npiggin@gmail.com
arch/powerpc/kernel/exceptions-64e.S

index 22fcd95..d634bfc 100644 (file)
@@ -912,8 +912,14 @@ kernel_dbg_exc:
        b       interrupt_return
 
 .macro SEARCH_RESTART_TABLE
+#ifdef CONFIG_RELOCATABLE
+       ld      r11,PACATOC(r13)
+       ld      r14,__start___restart_table@got(r11)
+       ld      r15,__stop___restart_table@got(r11)
+#else
        LOAD_REG_IMMEDIATE_SYM(r14, r11, __start___restart_table)
        LOAD_REG_IMMEDIATE_SYM(r15, r11, __stop___restart_table)
+#endif
 300:
        cmpd    r14,r15
        beq     302f
@@ -1329,7 +1335,12 @@ a2_tlbinit_code_start:
 a2_tlbinit_after_linear_map:
 
        /* Now we branch the new virtual address mapped by this entry */
+#ifdef CONFIG_RELOCATABLE
+       ld      r5,PACATOC(r13)
+       ld      r3,1f@got(r5)
+#else
        LOAD_REG_IMMEDIATE_SYM(r3, r5, 1f)
+#endif
        mtctr   r3
        bctr