[U-Boot] [PATCH 09/13] imx8: save args passed from ATF

Peng Fan peng.fan at nxp.com
Mon Aug 26 08:12:09 UTC 2019


We use information from ATF to know whether OP-TEE is running or not.
So save args passed from ATF.

Signed-off-by: Peng Fan <peng.fan at nxp.com>
---
 arch/arm/include/asm/arch-imx8/sys_proto.h |  1 +
 arch/arm/mach-imx/imx8/Makefile            |  2 +-
 arch/arm/mach-imx/imx8/lowlevel_init.S     | 36 ++++++++++++++++++++++++++++++
 3 files changed, 38 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/mach-imx/imx8/lowlevel_init.S

diff --git a/arch/arm/include/asm/arch-imx8/sys_proto.h b/arch/arm/include/asm/arch-imx8/sys_proto.h
index b8d2a0b8f0..0e981ae950 100644
--- a/arch/arm/include/asm/arch-imx8/sys_proto.h
+++ b/arch/arm/include/asm/arch-imx8/sys_proto.h
@@ -16,6 +16,7 @@ struct pass_over_info_t {
 	u32 g_ap_mu;
 };
 
+extern unsigned long boot_pointer[];
 void build_info(void);
 enum boot_device get_boot_device(void);
 int print_bootinfo(void);
diff --git a/arch/arm/mach-imx/imx8/Makefile b/arch/arm/mach-imx/imx8/Makefile
index 7fc34762a2..97f9d22945 100644
--- a/arch/arm/mach-imx/imx8/Makefile
+++ b/arch/arm/mach-imx/imx8/Makefile
@@ -4,7 +4,7 @@
 # SPDX-License-Identifier:	GPL-2.0+
 #
 
-obj-y += cpu.o iomux.o misc.o
+obj-y += cpu.o iomux.o misc.o lowlevel_init.o
 obj-$(CONFIG_OF_SYSTEM_SETUP) += fdt.o
 
 ifdef CONFIG_SPL_BUILD
diff --git a/arch/arm/mach-imx/imx8/lowlevel_init.S b/arch/arm/mach-imx/imx8/lowlevel_init.S
new file mode 100644
index 0000000000..a66243c5e4
--- /dev/null
+++ b/arch/arm/mach-imx/imx8/lowlevel_init.S
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2019 NXP
+ */
+
+#include <config.h>
+
+.align 8
+.global boot_pointer
+boot_pointer:
+	.space 32
+
+/*
+ * Routine: save_boot_params (called after reset from start.S)
+ */
+
+.global save_boot_params
+save_boot_params:
+	/* The firmware provided ATAG/FDT address can be found in r2/x0 */
+	adr	x0, boot_pointer
+	stp	x1, x2, [x0], #16
+	stp	x3, x4, [x0], #16
+
+	/*
+	 * We use absolute address not PC relative address for return.
+	 * When running SPL on iMX8, the A core starts at address 0,
+	 * an alias to OCRAM 0x100000, our linker address for SPL is
+	 * from 0x100000. So using absolute address can jump to the OCRAM
+	 * address from the alias. The alias only map first 96KB of OCRAM,
+	 * so this require the SPL size can't beyond 96KB.
+	 * But when using SPL DM, the size increase significantly and
+	 * always beyonds 96KB. That's why we have to jump to OCRAM.
+	 * Normal u-boot also runs into this codes, but there is no impact.
+	 */
+	ldr	x1, =save_boot_params_ret
+	br	x1
-- 
2.16.4



More information about the U-Boot mailing list