Adjust the code to work as on ARM, where the compiler generates the BSS
symbols. This makes it easier to move the BSS memset() to C code.

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

 arch/blackfin/cpu/start.S    |  4 ++--
 arch/blackfin/cpu/u-boot.lds | 18 ++++++++++++++++--
 arch/blackfin/lib/sections.c |  2 +-
 3 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/arch/blackfin/cpu/start.S b/arch/blackfin/cpu/start.S
index 823a1df..6265a51 100644
--- a/arch/blackfin/cpu/start.S
+++ b/arch/blackfin/cpu/start.S
@@ -196,8 +196,8 @@ ENTRY(_start)
         * takes care of clearing things for us.
         */
        serial_early_puts("Zero BSS");
-       r0.l = __bss_start;
-       r0.h = __bss_start;
+       r0.l = ___bss_start;
+       r0.h = ___bss_start;
        r1 = 0 (x);
        r2.l = __bss_len;
        r2.h = __bss_len;
diff --git a/arch/blackfin/cpu/u-boot.lds b/arch/blackfin/cpu/u-boot.lds
index 1c0df25..ba95bf3 100644
--- a/arch/blackfin/cpu/u-boot.lds
+++ b/arch/blackfin/cpu/u-boot.lds
@@ -130,6 +130,16 @@ SECTIONS
        __end = __data_l1_lma;
        __image_binary_end = __data_l1_lma;
 
+       /*
+        * Compiler-generated __bss_start and __bss_stop:
+        * see arch/blackfin/lib/sections.c
+       */
+       .bss_start (NOLOAD) :
+       {
+               . = ALIGN(4);
+               KEEP(*(.__bss_start));
+       } >ram_data
+
        .bss :
        {
                . = ALIGN(4);
@@ -139,8 +149,12 @@ SECTIONS
                *(COMMON)
                . = ALIGN(4);
        } >ram_data
-       __bss_end = .;
-       __bss_start = ADDR(.bss);
+
+       .bss_stop (NOLOAD):
+       {
+               KEEP(*(.__bss_stop));
+       } >ram_data
+
        __bss_len = SIZEOF(.bss);
        __init_end = .;
 }
diff --git a/arch/blackfin/lib/sections.c b/arch/blackfin/lib/sections.c
index 86fc4df..a67530b 100644
--- a/arch/blackfin/lib/sections.c
+++ b/arch/blackfin/lib/sections.c
@@ -7,5 +7,5 @@
  */
 
 char __bss_start[0] __attribute__((section(".__bss_start")));
-char __bss_end[0] __attribute__((section(".__bss_end")));
+char __bss_stop[0] __attribute__((section(".__bss_stop")));
 char __init_end[0] __attribute__((section(".__init_end")));
-- 
2.8.0.rc3.226.g39d4020

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

Reply via email to