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@xxxxxxxxxx> --- arch/arm/boards/avnet-zedboard/lowlevel.c | 1 + arch/arm/mach-zynq/cpu_init.c | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/arm/boards/avnet-zedboard/lowlevel.c b/arch/arm/boards/avnet-zedboard/lowlevel.c index c987db75b068..8edc6293f210 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 ec5ee59e169d..ca7c4b297988 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(); -- 2.24.1 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox