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

Pali Rohár pali at kernel.org
Sat Feb 6 16:45:50 CET 2021


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 at 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
> > 
> 
> [...]


More information about the U-Boot mailing list