diff mbox series

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

Message ID 20190826082720.19328-10-peng.fan@nxp.com
State Accepted
Commit fefe051335aa99147420fee607f7596e6e9c9044
Delegated to: Stefano Babic
Headers show
Series i.MX8 misc patches | expand

Commit Message

Peng Fan Aug. 26, 2019, 8:12 a.m. UTC
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@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 mbox series

Patch

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