We don't need to clear BSS in assembler. Move it to C to reduce the amount
of assembly code needed.

Signed-off-by: Simon Glass <[email protected]>
---

 arch/blackfin/cpu/cpu.c   |  3 +++
 arch/blackfin/cpu/start.S | 13 -------------
 2 files changed, 3 insertions(+), 13 deletions(-)

diff --git a/arch/blackfin/cpu/cpu.c b/arch/blackfin/cpu/cpu.c
index 529322a..ef362d4 100644
--- a/arch/blackfin/cpu/cpu.c
+++ b/arch/blackfin/cpu/cpu.c
@@ -18,6 +18,7 @@
 #include <asm/blackfin.h>
 #include <asm/cplb.h>
 #include <asm/clock.h>
+#include <asm/sections.h>
 #include <asm/mach-common/bits/core.h>
 #include <asm/mach-common/bits/ebiu.h>
 #include <asm/mach-common/bits/trace.h>
@@ -323,6 +324,8 @@ void cpu_init_f(ulong bootflag, ulong loaded_from_ldr)
                memcpy(&_sdata_l1, &_data_l1_lma, (unsigned long)_data_l1_len);
        }
 
+       memset(__bss_start, '\0', __bss_stop - __bss_start);
+
        /*
         * Make sure our async settings are committed.  Some bootroms
         * (like the BF537) will reset some registers on us after it
diff --git a/arch/blackfin/cpu/start.S b/arch/blackfin/cpu/start.S
index 6265a51..01985ea 100644
--- a/arch/blackfin/cpu/start.S
+++ b/arch/blackfin/cpu/start.S
@@ -191,19 +191,6 @@ ENTRY(_start)
 #endif
 
 .Lnorelocate:
-       /* Initialize BSS section ... we know that memset() does not
-        * use the BSS, so it is safe to call here.  The bootrom LDR
-        * takes care of clearing things for us.
-        */
-       serial_early_puts("Zero BSS");
-       r0.l = ___bss_start;
-       r0.h = ___bss_start;
-       r1 = 0 (x);
-       r2.l = __bss_len;
-       r2.h = __bss_len;
-       call _memset;
-
-
        /* Setup the actual stack in external memory */
        sp.h = HI(CONFIG_STACKBASE);
        sp.l = LO(CONFIG_STACKBASE);
-- 
2.8.0.rc3.226.g39d4020

_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to