summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLucas Stach <dev@lynxeye.de>2020-01-13 20:36:37 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2020-01-14 12:06:59 +0100
commit32895789f97ec7d2e0b6d37285482d0cf548434f (patch)
treeaa0bfb6f02e312e4cd9fc03ff4d779769092c5ef
parentaa0746b675079e2c0e13aae48e1ff5fe7adeb22a (diff)
downloadbarebox-32895789f97ec7d2e0b6d37285482d0cf548434f.tar.gz
barebox-32895789f97ec7d2e0b6d37285482d0cf548434f.tar.xz
ARM: zynq: zed: partially revert zynq_cpu_lowlevel_init() chnages
Calling arm_cpu_lowlevel_init() from zynq_cpu_lowlevel_init() adds a stack push/pop to the latter function which doesn't work this early in the boot. As the BootROM apparently hands proccessor control to us in abort(!?!) mode, setting up a stack requires duplicating most of arm_cpu_lowlevel_init(). To get around this catch-22 move the call to arm_cpu_lowlevel_init back into the board lowlevel start function, so we don't need a stack at all. Signed-off-by: Lucas Stach <dev@lynxeye.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/boards/avnet-zedboard/lowlevel.c1
-rw-r--r--arch/arm/mach-zynq/cpu_init.c2
2 files changed, 1 insertions, 2 deletions
diff --git a/arch/arm/boards/avnet-zedboard/lowlevel.c b/arch/arm/boards/avnet-zedboard/lowlevel.c
index c987db75b0..8edc6293f2 100644
--- a/arch/arm/boards/avnet-zedboard/lowlevel.c
+++ b/arch/arm/boards/avnet-zedboard/lowlevel.c
@@ -284,6 +284,7 @@ ENTRY_FUNCTION(start_avnet_zedboard, r0, r1, r2)
void *fdt = __dtb_zynq_zed_start + get_runtime_offset();
+ arm_cpu_lowlevel_init();
zynq_cpu_lowlevel_init();
avnet_zedboard_ps7_init();
diff --git a/arch/arm/mach-zynq/cpu_init.c b/arch/arm/mach-zynq/cpu_init.c
index ec5ee59e16..ca7c4b2979 100644
--- a/arch/arm/mach-zynq/cpu_init.c
+++ b/arch/arm/mach-zynq/cpu_init.c
@@ -7,8 +7,6 @@
void zynq_cpu_lowlevel_init(void)
{
- arm_cpu_lowlevel_init();
-
enable_arm_errata_761320_war();
enable_arm_errata_794072_war();
enable_arm_errata_845369_war();