Hi Philipp, On 26 July 2017 at 04:40, Philipp Tomsich <philipp.toms...@theobroma-systems.com> wrote: > The back-to-bootrom support for Rockchip is equivalent to an > (assembly) implementation of setjmp/longjmp (i.e. it saves the > stack-pointer, link-register and callee-saved registers). Up until > now, this had only been implemented for AArch32 (i.e. ARMv7 or older), > which puts the new ARMv8 devices (which boot in AArch64 mode) at a > slight disadvantage. > > To allow use of the 'back-to-bootrom' feature on new devices (e.g. the > RK3368), this commit adds an implementation for AArch64. > > Signed-off-by: Philipp Tomsich <philipp.toms...@theobroma-systems.com> > --- > > Changes in v2: None > > arch/arm/mach-rockchip/save_boot_param.S | 37 > ++++++++++++++++++++++++++++++++ > 1 file changed, 37 insertions(+)
Reviewed-by: Simon Glass <s...@chromium.org> > > diff --git a/arch/arm/mach-rockchip/save_boot_param.S > b/arch/arm/mach-rockchip/save_boot_param.S > index 5e6c8db..945a9dd 100644 > --- a/arch/arm/mach-rockchip/save_boot_param.S > +++ b/arch/arm/mach-rockchip/save_boot_param.S > @@ -1,11 +1,47 @@ > /* > * (C) Copyright 2016 Rockchip Electronics Co., Ltd > + * (C) Copyright 2017 Theobroma Systems Design und Consulting GmbH > * > * SPDX-License-Identifier: GPL-2.0+ > */ > > #include <linux/linkage.h> > > +#if defined(CONFIG_ARM64) > +.globl SAVE_SP_ADDR > +SAVE_SP_ADDR: > + .quad 0 > + > +ENTRY(save_boot_params) > + sub sp, sp, #0x100 Can you please add a comment as to why this is 0x100? > + stp x29, x30, [sp, #0x50] > + stp x27, x28, [sp, #0x40] > + stp x25, x26, [sp, #0x30] > + stp x23, x24, [sp, #0x20] > + stp x21, x22, [sp, #0x10] > + stp x19, x20, [sp, #0] > + ldr x8, =SAVE_SP_ADDR > + mov x9, sp > + str x9, [x8] > + b save_boot_params_ret /* back to my caller */ > +ENDPROC(save_boot_params) > + > +.globl _back_to_bootrom_s > +ENTRY(_back_to_bootrom_s) > + ldr x0, =SAVE_SP_ADDR > + ldr x0, [x0] > + mov sp, x0 > + ldp x29, x30, [sp, #0x50] > + ldp x27, x28, [sp, #0x40] > + ldp x25, x26, [sp, #0x30] > + ldp x23, x24, [sp, #0x20] > + ldp x21, x22, [sp, #0x10] > + ldp x19, x20, [sp] > + add sp, sp, #0x100 > + mov x0, xzr > + ret > +ENDPROC(_back_to_bootrom_s) > +#else > .globl SAVE_SP_ADDR > SAVE_SP_ADDR: > .word 0 > @@ -30,3 +66,4 @@ ENTRY(_back_to_bootrom_s) > mov r0, #0 > pop {r1-r12, pc} > ENDPROC(_back_to_bootrom_s) > +#endif > -- > 2.1.4 > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot