Hi,

> >> arch/arm/cpu/armv7/lowlevel_init.S:.pushsection .text.s_init, "ax"
> >> arch/arm/cpu/armv7/lowlevel_init.S:WEAK(s_init)
> >> arch/arm/cpu/armv7/lowlevel_init.S:ENDPROC(s_init)
> >> arch/arm/cpu/armv7/lowlevel_init.S:     bl      s_init
> >>
> >> Maybe such a default lowlevel_init for armv8 could also have an s_init ?
> >>
> >>> What's concern with lowlevel_init()? It's also wired into existing
> >>> early hook function which's located inside start.S
> >> I would like to avoid duplicating lowlevel_init functionality as much
> >> as possible , common lowlevel_init would be very welcome .
> >
> > Sure, I can add the s_init to common lowlevel_init and moving the codes to
> s_init.
> Thanks. Then the question is, how much of this stuff can be removed
> because it is part of generic lowlevel_init, I hope a lot.

I'm not sure I completely understand your question, but I can share what we're 
going to do.
Declaring a weak s_init function at lowlevel_init.S

.pushsection .text.s_init, "ax"
WEAK(s_init)
        bx      lr
ENDPROC(s_init)
.popsection

Calling s_init before lowlevel_init returned to parent call
              [...]
        bl s_init
        move lr, x29
              ret

We will move the codes to s_init which is declared in our platform driver, 
arch/arm/mach-socfpga .

The codes is needed to backup the data section as earlier as possible to support
warm reset / watchdog due to warm reset use case, where reloading SPL would be 
skipped after reset.

Thanks.

Regards,
Tien Fong

Reply via email to