This introduces a new Kconfig option SPL_CLEAR_BSS_F. If enabled, it clears
the bss before calling board_init_f() instead of clearing it before calling
board_init_r().

This also ensures that variables placed in BSS can be shared between
board_init_f() and board_init_r() in SPL.

Such global variables are used, for example, when loading things from FAT
before SDRAM is available: the full heap required for FAT uses global
variables and clearing BSS after board_init_f() would reset the heap state.
An example for such a usage is socfpa_arria10 where an FPGA configuration
is required before SDRAM can be used.

Make the new option depend on ARM for now until more implementations follow.

Signed-off-by: Simon Goldschmidt <simon.k.r.goldschm...@gmail.com>
---

Changes in v3:
- improve commit message to show why CONFIG_CLEAR_BSS_F is needed

Changes in v2:
- make CONFIG_SPL_CLEAR_BSS_F depend on ARM for now

 common/spl/Kconfig | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/common/spl/Kconfig b/common/spl/Kconfig
index 206c24076d..6a4270516a 100644
--- a/common/spl/Kconfig
+++ b/common/spl/Kconfig
@@ -156,6 +156,18 @@ config SPL_STACK_R_MALLOC_SIMPLE_LEN
          to give board_init_r() a larger heap then the initial heap in
          SRAM which is limited to SYS_MALLOC_F_LEN bytes.
 
+config SPL_CLEAR_BSS_F
+       bool "Clear BSS section before calling board_init_f"
+       depends on ARM
+       help
+         The BSS section is initialized to zero. In SPL, this is normally done
+         before calling board_init_r().
+         For platforms using BSS in board_init_f() already, enable this to
+         clear the BSS section before calling board_init_f() instead of
+         clearing it before calling board_init_r(). This also ensures that
+         variables placed in BSS can be shared between board_init_f() and
+         board_init_r().
+
 config SPL_SEPARATE_BSS
        bool "BSS section is in a different memory region from text"
        help
-- 
2.17.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to