summaryrefslogtreecommitdiff
path: root/arch/arm/mach-rockchip/save_boot_param.S
diff options
context:
space:
mode:
authorXu Ziyuan <xzy.xu@rock-chips.com>2016-07-12 19:09:49 +0800
committerSimon Glass <sjg@chromium.org>2016-07-25 20:44:18 -0600
commitb47ea79219f1de43fa21456c6c60c8390b8755d2 (patch)
tree7639d25c4dba2ed0fc87bd153111ba33a1dc2fa7 /arch/arm/mach-rockchip/save_boot_param.S
parent4579720412744dd13266a3505bb38ce2da819b4f (diff)
downloadu-boot-imx-b47ea79219f1de43fa21456c6c60c8390b8755d2.zip
u-boot-imx-b47ea79219f1de43fa21456c6c60c8390b8755d2.tar.gz
u-boot-imx-b47ea79219f1de43fa21456c6c60c8390b8755d2.tar.bz2
rockchip: add option to change method of loading u-boot
If we would like to boot from SD card, we have to implement mmc driver in SPL stage, and get a slightly large SPL binary. Rockchip SoC's bootrom code has the ability to load spl and u-boot, then boot. If CONFIG_ROCKCHIP_SPL_BACK_TO_BROM is enabled, the spl will return to bootrom in board_init_f(), then bootrom loads u-boot binary. Loading sequence after rework: bootrom ==> spl ==> bootrom ==> u-boot Signed-off-by: Ziyuan Xu <xzy.xu@rock-chips.com> Acked-by: Simon Glass <sjg@chromium.org> Fixed up spelling of U-Boot, boorom, opinion->option, Rochchip: Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'arch/arm/mach-rockchip/save_boot_param.S')
-rw-r--r--arch/arm/mach-rockchip/save_boot_param.S32
1 files changed, 32 insertions, 0 deletions
diff --git a/arch/arm/mach-rockchip/save_boot_param.S b/arch/arm/mach-rockchip/save_boot_param.S
new file mode 100644
index 0000000..85b407b
--- /dev/null
+++ b/arch/arm/mach-rockchip/save_boot_param.S
@@ -0,0 +1,32 @@
+/*
+ * (C) Copyright 2016 Rockchip Electronics Co., Ltd
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <linux/linkage.h>
+
+.globl SAVE_SP_ADDR
+SAVE_SP_ADDR:
+ .word 0
+
+/*
+ * void save_boot_params
+ *
+ * Save sp, lr, r1~r12
+ */
+ENTRY(save_boot_params)
+ push {r1-r12, lr}
+ ldr r0, =SAVE_SP_ADDR
+ str sp, [r0]
+ b save_boot_params_ret @ back to my caller
+ENDPROC(save_boot_params)
+
+
+.globl back_to_bootrom
+ENTRY(back_to_bootrom)
+ ldr r0, =SAVE_SP_ADDR
+ ldr sp, [r0]
+ mov r0, #0
+ pop {r1-r12, pc}
+ENDPROC(back_to_bootrom)