arm: arm926ej-s: start.S: port save_boot_params support from armv7 code
authorIcenowy Zheng <icenowy@aosc.io>
Sat, 29 Jan 2022 15:23:00 +0000 (10:23 -0500)
committerAndre Przywara <andre.przywara@arm.com>
Fri, 4 Feb 2022 00:09:57 +0000 (00:09 +0000)
The ARMv7 start code has support for saving some boot params at the
entry point, which is used by some SoCs to return to BROM.

Port this to ARM926EJ-S start code.

Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Jesse Taube <Mr.Bossman075@gmail.com>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
arch/arm/cpu/arm926ejs/start.S

index 0afcc47..aca7793 100644 (file)
@@ -17,6 +17,7 @@
 #include <asm-offsets.h>
 #include <config.h>
 #include <common.h>
+#include <linux/linkage.h>
 
 /*
  *************************************************************************
  */
 
        .globl  reset
+       .globl  save_boot_params_ret
+       .type   save_boot_params_ret,%function
 
 reset:
+       /* Allow the board to save important registers */
+       b       save_boot_params
+save_boot_params_ret:
        /*
         * set the cpu to SVC32 mode
         */
@@ -110,3 +116,16 @@ flush_dcache:
 #endif
        mov     pc, lr          /* back to my caller */
 #endif /* CONFIG_IS_ENABLED(SKIP_LOWLEVEL_INIT) */
+
+/*************************************************************************
+ *
+ * void save_boot_params(u32 r0, u32 r1, u32 r2, u32 r3)
+ *     __attribute__((weak));
+ *
+ * Stack pointer is not yet initialized at this moment
+ * Don't save anything to stack even if compiled with -O0
+ *
+ *************************************************************************/
+WEAK(save_boot_params)
+       b       save_boot_params_ret    /* back to my caller */
+ENDPROC(save_boot_params)