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.
This commit is contained in:
Sebastian Huber
2016-11-02 10:01:36 +01:00
parent b7694c8c9b
commit fac8a3a463
2 changed files with 8 additions and 7 deletions

View File

@@ -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

View File

@@ -162,6 +162,7 @@ SECTIONS
edata = .;
_edata = .;
} > ram
_data_load_start = LOADADDR (.data);
.rtemsrwset : {
KEEP (*(SORT(.rtemsrwset.*)))
} >ram