Message ID | 20240203163631.177508-5-raymond.mao@linaro.org |
---|---|
State | Accepted |
Commit | 5103e69344d60eb8c8d2cf804ec00d0ef3975124 |
Delegated to: | Tom Rini |
Headers | show |
Series | Handoff bloblist from previous boot stage | expand |
On Sat, 3 Feb 2024 at 18:37, Raymond Mao <raymond.mao@linaro.org> wrote: > > Save boot arguments r[0-3] into an array for handover of bloblist from > previous boot stage. > > Signed-off-by: Raymond Mao <raymond.mao@linaro.org> > Suggested-by: Ard Biesheuvel <ardb@kernel.org> > --- > Changes in v2 > - New patch file created for v2. > Changes in v3 > - Swap value of r0 with r2. > Changes in v4 > - Fix a bug when saving the boot args. > Changes in V5 > - Drop the dependence on OF_BOARD. > Changes in V7 > - Exclude the saved_args when BLOBLIST is disabled. > Changes in V8 > - Use PC-relative reference for saved_args. > - Add 4-byte alignment for saved_args. > > arch/arm/cpu/armv7/start.S | 29 +++++++++++++++++++++++++++++ > 1 file changed, 29 insertions(+) > > diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S > index 69e281b086..7730a16e51 100644 > --- a/arch/arm/cpu/armv7/start.S > +++ b/arch/arm/cpu/armv7/start.S > @@ -152,9 +152,38 @@ ENDPROC(c_runtime_cpu_setup) > * > *************************************************************************/ > WEAK(save_boot_params) > +#if (IS_ENABLED(CONFIG_BLOBLIST)) > + /* Calculate the PC-relative address of saved_args */ > + adr r12, saved_args_offset > + ldr r13, saved_args_offset > + add r12, r12, r13 > + > + /* > + * Intentionally swapping r0 with r2 in order to simplify the C > + * function we use later. > + */ > + str r2, [r12] > + str r1, [r12, #4] > + str r0, [r12, #8] > + str r3, [r12, #12] > +#endif > b save_boot_params_ret @ back to my caller > ENDPROC(save_boot_params) > > +#if (IS_ENABLED(CONFIG_BLOBLIST)) > +saved_args_offset: > + .long saved_args - . /* offset from current code to save_args */ > + > + .section .data > + .align 2 > + .global saved_args > +saved_args: > + .rept 4 > + .word 0 > + .endr > +END(saved_args) > +#endif > + > #ifdef CONFIG_ARMV7_LPAE > WEAK(switch_to_hypervisor) > b switch_to_hypervisor_ret > -- > 2.25.1 > Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S index 69e281b086..7730a16e51 100644 --- a/arch/arm/cpu/armv7/start.S +++ b/arch/arm/cpu/armv7/start.S @@ -152,9 +152,38 @@ ENDPROC(c_runtime_cpu_setup) * *************************************************************************/ WEAK(save_boot_params) +#if (IS_ENABLED(CONFIG_BLOBLIST)) + /* Calculate the PC-relative address of saved_args */ + adr r12, saved_args_offset + ldr r13, saved_args_offset + add r12, r12, r13 + + /* + * Intentionally swapping r0 with r2 in order to simplify the C + * function we use later. + */ + str r2, [r12] + str r1, [r12, #4] + str r0, [r12, #8] + str r3, [r12, #12] +#endif b save_boot_params_ret @ back to my caller ENDPROC(save_boot_params) +#if (IS_ENABLED(CONFIG_BLOBLIST)) +saved_args_offset: + .long saved_args - . /* offset from current code to save_args */ + + .section .data + .align 2 + .global saved_args +saved_args: + .rept 4 + .word 0 + .endr +END(saved_args) +#endif + #ifdef CONFIG_ARMV7_LPAE WEAK(switch_to_hypervisor) b switch_to_hypervisor_ret
Save boot arguments r[0-3] into an array for handover of bloblist from previous boot stage. Signed-off-by: Raymond Mao <raymond.mao@linaro.org> Suggested-by: Ard Biesheuvel <ardb@kernel.org> --- Changes in v2 - New patch file created for v2. Changes in v3 - Swap value of r0 with r2. Changes in v4 - Fix a bug when saving the boot args. Changes in V5 - Drop the dependence on OF_BOARD. Changes in V7 - Exclude the saved_args when BLOBLIST is disabled. Changes in V8 - Use PC-relative reference for saved_args. - Add 4-byte alignment for saved_args. arch/arm/cpu/armv7/start.S | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)