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>
* 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 */
* 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__ = .;
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