summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2015-01-26 22:10:47 -0800
committerKeith Packard <keithp@keithp.com>2015-01-26 22:10:47 -0800
commite1d5bcb1968e280b8ebdf6c8b12e8a87167fd890 (patch)
treeda4ea6779b61505872bef5e2826e31696900b359 /src
parent32c68670af9f8aa690c64d64502e559c0df0c1db (diff)
altos/stmf0: Fix linker scripts to make ao_boot work
The flash loader ended up assuming ao_boot was at the start of ram, while the application stuck it after the interrupt table (where it needs to go). Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
-rw-r--r--src/stmf0/altos-loader.ld9
-rw-r--r--src/stmf0/altos.ld5
2 files changed, 6 insertions, 8 deletions
diff --git a/src/stmf0/altos-loader.ld b/src/stmf0/altos-loader.ld
index 2feb515d..86cf1838 100644
--- a/src/stmf0/altos-loader.ld
+++ b/src/stmf0/altos-loader.ld
@@ -29,14 +29,15 @@ SECTIONS {
* Rom contents
*/
- .text : {
+ .interrupt : {
__text_start__ = .;
*(.interrupt) /* Interrupt vectors */
+ } > rom
- . = ORIGIN(rom) + 0x100;
-
+ .text ORIGIN(rom) + 0x100 : {
ao_romconfig.o(.romconfig*)
ao_product.o(.romconfig*)
+
*(.text*) /* Executable code */
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
*(.rodata*) /* Constants */
@@ -47,7 +48,7 @@ SECTIONS {
* the application and bootloader share the same addresses.
* This must be all uninitialized data
*/
- .boot (NOLOAD) : {
+ .boot ORIGIN(ram) + SIZEOF(.interrupt) (NOLOAD) : {
__boot_start__ = .;
*(.boot)
__boot_end__ = .;
diff --git a/src/stmf0/altos.ld b/src/stmf0/altos.ld
index 742d8419..9dbc83d0 100644
--- a/src/stmf0/altos.ld
+++ b/src/stmf0/altos.ld
@@ -54,13 +54,10 @@ SECTIONS {
ao_product.o(.romconfig*)
*(.text*) /* Executable code */
+ *(.ARM.exidx* .gnu.linkonce.armexidx.*)
*(.rodata*) /* Constants */
} > rom
-
- .ARM.exidx : {
- *(.ARM.exidx* .gnu.linkonce.armexidx.*)
- } > rom
__text_end__ = .;
/* Boot data which must live at the start of ram so that