On Tue, 4 Jan 2022 19:34:58 -0500 Jesse Taube <mr.bossman...@gmail.com> wrote:
Hi, > From: Icenowy Zheng <icen...@aosc.io> > > The ARMv7 start code has support for saving some boot params at the > entry point, which is used by some SoCs to return to BROM. > > Port this to ARM926EJ-S start code. > > Signed-off-by: Icenowy Zheng <icen...@aosc.io> > Signed-off-by: Jesse Taube <mr.bossman...@gmail.com> Reviewed-by: Andre Przywara <andre.przyw...@arm.com> Cheers, Andre > --- > arch/arm/cpu/arm926ejs/start.S | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S > index 0afcc47aad..aca7793c57 100644 > --- a/arch/arm/cpu/arm926ejs/start.S > +++ b/arch/arm/cpu/arm926ejs/start.S > @@ -17,6 +17,7 @@ > #include <asm-offsets.h> > #include <config.h> > #include <common.h> > +#include <linux/linkage.h> > > /* > ************************************************************************* > @@ -32,8 +33,13 @@ > */ > > .globl reset > + .globl save_boot_params_ret > + .type save_boot_params_ret,%function > > reset: > + /* Allow the board to save important registers */ > + b save_boot_params > +save_boot_params_ret: > /* > * set the cpu to SVC32 mode > */ > @@ -110,3 +116,16 @@ flush_dcache: > #endif > mov pc, lr /* back to my caller */ > #endif /* CONFIG_IS_ENABLED(SKIP_LOWLEVEL_INIT) */ > + > +/************************************************************************* > + * > + * void save_boot_params(u32 r0, u32 r1, u32 r2, u32 r3) > + * __attribute__((weak)); > + * > + * Stack pointer is not yet initialized at this moment > + * Don't save anything to stack even if compiled with -O0 > + * > + *************************************************************************/ > +WEAK(save_boot_params) > + b save_boot_params_ret /* back to my caller */ > +ENDPROC(save_boot_params)