# HG changeset patch # User Paul Boddie # Date 1539809685 -7200 # Node ID ce5a30648166610e4f603f281e810596cb784ac5 # Parent 7ca24825ce7ef8e1ecd3a9fed70ab6ae53a6b320 Adopted a more explicit program section positioning scheme. diff -r 7ca24825ce7e -r ce5a30648166 blink.S --- a/blink.S Wed Oct 17 22:50:15 2018 +0200 +++ b/blink.S Wed Oct 17 22:54:45 2018 +0200 @@ -54,7 +54,10 @@ DEVCFG2<6:4> = FPLLMUL<2:0> = 111; DEVCFG2<2:0> = FPLLIDIV<2:0> = 011 */ -.text +/* The start routine is placed at the boot location. */ + +.section .boot, "a" + .globl _start _start: diff -r 7ca24825ce7e -r ce5a30648166 blink.ld --- a/blink.ld Wed Oct 17 22:50:15 2018 +0200 +++ b/blink.ld Wed Oct 17 22:54:45 2018 +0200 @@ -27,21 +27,17 @@ SECTIONS { - .text : { *(.text*) } > kseg0_boot_mem AT > physical_boot_mem - .flash : { *(.flash*) } > kseg0_program_mem AT > physical_program_mem - .bss : { *(.bss*) } > kseg1_data_mem - .got : { - _gp = ALIGN(16); - *(.got*) - } > kseg0_boot_mem AT > physical_boot_mem - .devcfg0 : { - *(.devcfg0) - } > config0 AT > physical_config0 - .devcfg1 : { - *(.devcfg1) - } > config1 AT > physical_config1 - .devcfg2 : { - *(.devcfg2) - } > config2 AT > physical_config2 + .boot : { *(.boot*) } > kseg0_boot_mem AT > physical_boot_mem + .vectors : { *(.vectors*) } > kseg0_program_mem AT > physical_program_mem + .text : { *(.text*) } > kseg0_program_mem AT > physical_program_mem + .bss : { *(.bss*) } > kseg1_data_mem + .rodata : { *(.rodata*) } > kseg0_program_mem AT > physical_program_mem + .got : { + _gp = ALIGN(16); + *(.got*) + } > kseg0_program_mem AT > physical_program_mem + .devcfg0 : { *(.devcfg0) } > config0 AT > physical_config0 + .devcfg1 : { *(.devcfg1) } > config1 AT > physical_config1 + .devcfg2 : { *(.devcfg2) } > config2 AT > physical_config2 /DISCARD/ : { *(.reginfo) *(.MIPS.abiflags) } }