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)

Reply via email to