[rtems commit] bsps/sparc: Fix copy of initialized data

Sebastian Huber sebh at rtems.org
Wed Nov 2 09:06:04 UTC 2016


Module:    rtems
Branch:    master
Commit:    fac8a3a463e1eaa3fda3231fe3cb79078781ed24
Changeset: http://git.rtems.org/rtems/commit/?id=fac8a3a463e1eaa3fda3231fe3cb79078781ed24

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Wed Nov  2 10:01:36 2016 +0100

bsps/sparc: Fix copy of initialized data

The text and data sections may have different alignment requirements.
Support a data section alignment greater than 16.

---

 c/src/lib/libbsp/sparc/shared/start/start.S         | 14 +++++++-------
 c/src/lib/libbsp/sparc/shared/startup/linkcmds.base |  1 +
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/c/src/lib/libbsp/sparc/shared/start/start.S b/c/src/lib/libbsp/sparc/shared/start/start.S
index 3d621fd..46498b8 100644
--- a/c/src/lib/libbsp/sparc/shared/start/start.S
+++ b/c/src/lib/libbsp/sparc/shared/start/start.S
@@ -359,19 +359,19 @@ cpu0:
         /*
          *  Copy the initialized data to RAM
          *
-         *  FROM:   _endtext
+         *  FROM:   _data_load_start
          *  TO:     _data_start
          *  LENGTH: (__bss_start - _data_start) bytes
          */
 
-        sethi %hi(_endtext),%g1
-        or    %g1,%lo(_endtext),%g1     ! g1 = start of initialized data in ROM
+        sethi %hi(_data_load_start),%g1 ! g1 = start of initialized data in ROM
+        or    %g1,%lo(_data_load_start),%g1
 
-        sethi %hi(_data_start),%g3
-        or    %g3,%lo(_data_start),%g3  ! g3 = start of initialized data in RAM
+        sethi %hi(_data_start),%g3      ! g3 = start of initialized data in RAM
+        or    %g3,%lo(_data_start),%g3
 
-        sethi %hi(__bss_start), %g2
-        or    %g2,%lo(__bss_start),%g2  ! g2 = end of initialized data in RAM
+        sethi %hi(__bss_start), %g2     ! g2 = end of initialized data in RAM
+        or    %g2,%lo(__bss_start),%g2
 
 	cmp   %g1, %g3
 	be    1f
diff --git a/c/src/lib/libbsp/sparc/shared/startup/linkcmds.base b/c/src/lib/libbsp/sparc/shared/startup/linkcmds.base
index 219a060..6cc44c1 100644
--- a/c/src/lib/libbsp/sparc/shared/startup/linkcmds.base
+++ b/c/src/lib/libbsp/sparc/shared/startup/linkcmds.base
@@ -162,6 +162,7 @@ SECTIONS
     edata = .;
     _edata = .;
   } > ram
+  _data_load_start = LOADADDR (.data);
   .rtemsrwset : {
     KEEP (*(SORT(.rtemsrwset.*)))
   } >ram



More information about the vc mailing list