[PATCH] bsps/sparc: Fix BSS initialization

Sebastian Huber sebastian.huber at embedded-brains.de
Tue May 13 12:34:46 UTC 2014


Use __bss_start available via %g4 to clear the BSS section.  The usage
of _edata resulted in a copy of [_edata, __bss_start) from ROM to RAM
and then a clear to zero of this area.

Clear now only [__bss_start, _end).
---
 c/src/lib/libbsp/sparc/shared/start/start.S |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/c/src/lib/libbsp/sparc/shared/start/start.S b/c/src/lib/libbsp/sparc/shared/start/start.S
index 26da7b4..b191c7e 100644
--- a/c/src/lib/libbsp/sparc/shared/start/start.S
+++ b/c/src/lib/libbsp/sparc/shared/start/start.S
@@ -344,8 +344,7 @@ copy_data:
         /* clear the bss */
 1:
 
-        sethi %hi(_edata),%g2
-        or    %g2,%lo(_edata),%g2       ! g2 = start of bss
+        mov   %g4, %g2                  ! g2 = start of bss
         sethi %hi(_end),%g3
         or    %g3,%lo(_end),%g3         ! g3 = end of bss
         mov   %g0,%g1                   ! so std has two zeros
-- 
1.7.7




More information about the devel mailing list