MEMORY { TEXTMEM (ARX) : ORIGIN = 0x10000, LENGTH = 32K DATAMEM (AW) : ORIGIN = 0x20000, LENGTH = 32K LOADMEM (AW) : ORIGIN = 0x30000, LENGTH = 32K } /* Map should be: SIZE VMA LMA .bss1 10 20000 20000 .bss2 30 20000 20010 .bss3 20 20000 20040 .mbss 230 20030 20060 .mtext 20 10000 30000 .text1 80 10020 30020 .text2 40 10020 300a0 .text3 20 10020 300e0 .data1 30 20260 30100 .data2 40 20260 30130 .data3 50 20260 30170 */ SECTIONS { OVERLAY : { .bss1 { *(.bss1) } .bss2 { *(.bss2) } .bss3 { *(.bss3) } } > DATAMEM end_of_bss_overlays = . ; .mtext : { *(.mtext) } > TEXTMEM AT > LOADMEM .mbss : AT (__load_stop_bss3) { *(.mbss) . += 0x200; } > DATAMEM OVERLAY : { .text1 { *(.text1) } .text2 { *(.text2) } .text3 { *(.text3) } } > TEXTMEM AT > LOADMEM end_of_text_overlays = . ; OVERLAY : { .data1 { *(.data1) } .data2 { *(.data2) } .data3 { *(.data3) } } > DATAMEM AT > LOADMEM end_of_data_overlays = . ; . = 0x8000; /DISCARD/ : { *(.reginfo) *(.MIPS.abiflags) *(.MIPS.options) } }