arm: omap3: Compile lowlevel_init() function only when it is used
authorPali Rohár <pali@kernel.org>
Sun, 7 Feb 2021 13:50:12 +0000 (14:50 +0100)
committerMarek Vasut <marex@denx.de>
Wed, 3 Mar 2021 03:12:46 +0000 (04:12 +0100)
Function lowlevel_init() is called only from cpu_init_crit() and this
function is wrapped into #if .. #endif section. So compile also
lowlevel_init() function under same #if condition.

Function cpy_clk_code() uses lowlevel_init symbol to get address where
go_to_speed code ends. As this symbol is not available anymore when
compiling with CONFIG_SKIP_LOWLEVEL_INIT, defines a new label
go_to_speed_end at the place where go_to_speed code ends.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Acked-by: Pavel Machek <pavel@ucw.cz>
arch/arm/mach-omap2/omap3/lowlevel_init.S

index 2a05b5e..4fa8941 100644 (file)
@@ -45,7 +45,7 @@ ENDPROC(do_omap3_emu_romcode_call)
 ENTRY(cpy_clk_code)
        /* Copy DPLL code into SRAM */
        adr     r0, go_to_speed         /* copy from start of go_to_speed... */
-       adr     r2, lowlevel_init       /* ... up to start of low_level_init */
+       adr     r2, go_to_speed_end     /* ... up to start of go_to_speed_end */
 next2:
        ldmia   r0!, {r3 - r10}         /* copy from source address [r0] */
        stmia   r1!, {r3 - r10}         /* copy to   target address [r1] */
@@ -167,8 +167,11 @@ pll_div_add5:
 pll_div_val5:
        .word CLSEL1_EMU_VAL
 
+go_to_speed_end:
 #endif
 
+#if !defined(CONFIG_SKIP_LOWLEVEL_INIT) && \
+       !defined(CONFIG_SKIP_LOWLEVEL_INIT_ONLY)
 ENTRY(lowlevel_init)
        ldr     sp, SRAM_STACK
        str     ip, [sp]        /* stash ip register */
@@ -187,6 +190,7 @@ ENTRY(lowlevel_init)
        b       s_init
 
 ENDPROC(lowlevel_init)
+#endif
 
        /* the literal pools origin */
        .ltorg