
Adding the code to support early malloc and global data setup to every arch's assembler start-up is a pain. Also this code is not actually architecture-specific. We can use common code for all architectures and with a bit of care we can write this code in C.
This code is now in board_init_f_mem() but is only used on a few archs. This series expand the use of this function to ARM and adds TODOs for a few other archs. It als fixes a few problems that have come up, e.g. on Zynq.
Later work will enable use of this function on x86 also.
Simon Glass (10): Move board_init_f_mem() into a common location board_init_f_mem(): Don't require memset() board_init_f_mem(): Round down for stack alignment board_init_f_mem(): Don't create an unused early malloc() area arm: Adjust start-up code to use board_init_f_mem() arm64: Adjust start-up code to use board_init_f_mem() x86: Add a TODO to call board_init_f_mem() microblaze: Add a TODO to call board_init_f_mem() zynq: Move SPL console init out of board_init_f() Revert "ARM: zynq: disable CONFIG_SYS_MALLOC_F to fix MMC boot"
Makefile | 1 + arch/arm/cpu/armv7/zynq/spl.c | 2 +- arch/arm/lib/crt0.S | 20 ++++-------------- arch/arm/lib/crt0_64.S | 19 ++++++----------- arch/microblaze/cpu/start.S | 2 ++ arch/x86/cpu/start.S | 1 + common/board_f.c | 22 +------------------- common/init/Makefile | 7 +++++++ common/init/global_data.c | 42 ++++++++++++++++++++++++++++++++++++++ configs/zynq_microzed_defconfig | 1 - configs/zynq_zc70x_defconfig | 1 - configs/zynq_zc770_xm010_defconfig | 1 - configs/zynq_zc770_xm012_defconfig | 1 - configs/zynq_zc770_xm013_defconfig | 1 - configs/zynq_zed_defconfig | 1 - configs/zynq_zybo_defconfig | 1 - scripts/Makefile.spl | 1 + 17 files changed, 66 insertions(+), 58 deletions(-) create mode 100644 common/init/Makefile create mode 100644 common/init/global_data.c