imx: add lowlevel init for ARM64
authorPeng Fan <peng.fan@nxp.com>
Mon, 15 Apr 2019 05:20:43 +0000 (05:20 +0000)
committerStefano Babic <sbabic@denx.de>
Thu, 25 Apr 2019 17:16:24 +0000 (19:16 +0200)
Sometimes we met SERROR, but only to catch it when Linux boots up.
Let's enable catching in U-Boot to catch it ealier and ease debug.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
arch/arm/mach-imx/Makefile
arch/arm/mach-imx/lowlevel.S [new file with mode: 0644]

index c3ed62aed6832596af6bae29d67063260bb612c6..37675d05586fc5fe93c5560f10c959a3f261b190 100644 (file)
@@ -204,7 +204,7 @@ endif
 
 targets += $(addprefix ../../../,SPL spl/u-boot-spl.cfgout u-boot-dtb.cfgout u-boot.cfgout u-boot.uim spl/u-boot-nand-spl.imx)
 
-obj-$(CONFIG_ARM64) += sip.o
+obj-$(CONFIG_ARM64) += lowlevel.o sip.o
 
 obj-$(CONFIG_MX5) += mx5/
 obj-$(CONFIG_MX6) += mx6/
diff --git a/arch/arm/mach-imx/lowlevel.S b/arch/arm/mach-imx/lowlevel.S
new file mode 100644 (file)
index 0000000..158fdb7
--- /dev/null
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2019 NXP
+ */
+
+#include <linux/linkage.h>
+
+ENTRY(lowlevel_init)
+       mrs     x0, CurrentEL
+       cmp     x0, #8
+       b.eq    1f
+       ret
+1:
+       msr daifclr, #4
+
+       /* set HCR_EL2.AMO to catch SERROR */
+       mrs     x0, hcr_el2
+       orr     x0, x0, #0x20
+       msr     hcr_el2, x0
+       isb
+       ret
+ENDPROC(lowlevel_init)