[RESEND PATCH 12/16] arm: omap3: Compile lowlevel_init() function only when it is used

Pali Rohár
2021-02-06T15:45:50Z

On Saturday 06 February 2021 16:40:18 Marek Vasut wrote:
> On 2/5/21 8:12 PM, Pali Roh?r wrote:
> > 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.
> >
> > Signed-off-by: Pali Roh?r <pali@kernel.org>
> > ---
> > arch/arm/mach-omap2/omap3/lowlevel_init.S | 6 +++++-
> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/arm/mach-omap2/omap3/lowlevel_init.S b/arch/arm/mach-omap2/omap3/lowlevel_init.S
> > index 2a05b5e521..4fa89418a1 100644
> > --- a/arch/arm/mach-omap2/omap3/lowlevel_init.S
> > +++ b/arch/arm/mach-omap2/omap3/lowlevel_init.S
> > @@ -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
>
> This hunk above seems like an unrelated change ^ ?

Entry 'lowlevel_init' is defined 3 lines below and is available only
when !CONFIG_SKIP_LOWLEVEL_INIT && !CONFIG_SKIP_LOWLEVEL_INIT_ONLY.

Few lines above is code which copies DPLL code into SRAM and this code
ends at address where 'lowlevel_init' entry starts.

Entry 'cpy_clk_code' is compiled also when CONFIG_SKIP_LOWLEVEL_INIT is
defined, therefore it is required to define label which is outside of
the #if code defined below and ends after the 'go_to_speed' code.

So I defined a new 'go_to_speed_end' label to allow compiling
'cpy_clk_code' entry when CONFIG_SKIP_LOWLEVEL_INIT is defined.

> > +#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
> >
>
> …