#include "config.h" ENTRY(start) OUTPUT_FORMAT(elf32-sh) INPUT(crt0.o) #define PLUGINSIZE 0x8000 #ifdef DEBUG #define DRAMSIZE 0x1f0000 - PLUGINSIZE #define ORIGADDR 0x09010000 #else #define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGINSIZE #define ORIGADDR 0x09000000 #endif #define ENDADDR (ORIGADDR + DRAMSIZE) MEMORY { #ifdef NEO_MEMORY ROM : ORIGIN = 0x00020000, LENGTH = 0x1E0000 SRAM : ORIGIN = 0x0C000000, LENGTH = 0x40000 #else DRAM : ORIGIN = ORIGADDR, LENGTH = DRAMSIZE #endif IRAM : ORIGIN = 0x0f000000, LENGTH = 0x1000 } SECTIONS { #ifdef NEO_MEMORY .bss : { _edata = .; *(.bss) *(COMMON) _end = .; } > SRAM .text : { . = ALIGN(0x4); *(.vectors); . = ALIGN(0x200); *(.init.text) *(.text) } > ROM .rodata : { *(.rodata) *(.rodata.str1.4) . = ALIGN(0x4); } > ROM .data : AT ( LOADADDR(.romdata) ) { _datastart = .; *(.data) _dataend = .; } > SRAM .iram : AT ( _iramcopy ) { _iramstart = .; *(.icode) *(.idata) _iramend = .; } > IRAM .romdata : { _datacopy = .; . += SIZEOF(.data); _iramcopy = .; . += SIZEOF(.iram); } > ROM .stack : { _stackbegin = .; *(.stack) . += 0x1000; _stackend = .; } > SRAM .mp3buf : { _mp3buffer = .; } > SRAM .mp3end 0x0C040000 - 0x300: { _mp3end = .; } > SRAM .plugin 0x0C040000: { _pluginbuf = .; } > SRAM #else .vectors : { *(.resetvectors); *(.vectors); . = ALIGN(0x200); *(.init.text) } > DRAM .text : { *(.text) . = ALIGN(0x4); } > DRAM .data : { *(.data) } > DRAM .rodata : { *(.rodata) *(.rodata.str1.4) . = ALIGN(0x4); } > DRAM .stack : { *(.stack) _stackbegin = .; /* We put the copy of the .iram section here to save space */ _iramcopy = .; . += 0x2000; _stackend = .; } > DRAM .bss : { _edata = .; *(.bss) *(COMMON) _end = .; } > DRAM #ifdef DEBUG .heap : { _poolstart = .; . = 0x20000; _poolend = .; } > DRAM #endif .mp3buf : { _mp3buffer = .; } > DRAM .mp3end ENDADDR: { _mp3end = .; } > DRAM .plugin ENDADDR: { _pluginbuf = .; } .iram 0xf000000 : AT ( _iramcopy ) { _iramstart = .; *(.icode) *(.idata) _iramend = .; } > IRAM #endif }