summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-11-02 10:01:36 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-11-02 10:05:40 +0100
commitfac8a3a463e1eaa3fda3231fe3cb79078781ed24 (patch)
treea66c699d75da3a9c859d5a84ccb7d9d85e958d53 /c
parentsptests/sp35: Remove dead code (diff)
downloadrtems-fac8a3a463e1eaa3fda3231fe3cb79078781ed24.tar.bz2
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.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/sparc/shared/start/start.S14
-rw-r--r--c/src/lib/libbsp/sparc/shared/startup/linkcmds.base1
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 3d621fdcea..46498b8b55 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 219a060572..6cc44c1c7c 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