- The current startup sequence performs the call to the bsp_fdt_copy() and then
  performs memset to the BSS region. In bsp_fdt_copy(), RTEMS allocates
  memory for bsp_fdt_blob into BSS region which is yet to initialize. With
  current startup sequence, the bsp_fdt_blob is getting erased after memset.
  The proposed fix performs the BSS region memset operation and then performs a
  call to the bsp_fdt_copy().
---
 bsps/riscv/shared/start/start.S | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/bsps/riscv/shared/start/start.S b/bsps/riscv/shared/start/start.S
index 04a62a26ce..277760a388 100644
--- a/bsps/riscv/shared/start/start.S
+++ b/bsps/riscv/shared/start/start.S
@@ -74,17 +74,17 @@ SYM(_start):
        LADDR   sp, _ISR_Stack_area_end
 #endif
 
+/* Clear .bss */
+LADDR  a0, bsp_section_bss_begin
+li     a1, 0
+LADDR  a2, bsp_section_bss_size
+call   memset
+
 #ifdef BSP_START_COPY_FDT_FROM_U_BOOT
        mv      a0, a1
        call    bsp_fdt_copy
 #endif
 
-       /* Clear .bss */
-       LADDR   a0, bsp_section_bss_begin
-       li      a1, 0
-       LADDR   a2, bsp_section_bss_size
-       call    memset
-
 #ifdef RTEMS_SMP
        /* Give go to secondary processors */
        LADDR   t0, .Lsecondary_processor_go
-- 
2.25.1

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to