
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