OUTPUT_ARCH(riscv) | |
/* required to correctly link newlib */ | |
GROUP( -lc -lgloss -lgcc -lsupc++ ) | |
SEARCH_DIR(.) | |
__DYNAMIC = 0; | |
MEMORY | |
{ | |
rom (rx) : ORIGIN = 0x00008000, LENGTH = 0x2000 | |
ram (w) : ORIGIN = 0x10000000, LENGTH = 0x10000 | |
flash (rx) : ORIGIN = 0x20000000, LENGTH = 0x100000 | |
} | |
/* Memory Allocation */ | |
_heap_size = 0xe000; | |
_stack_size = 0x2000; | |
_stack_start = ORIGIN(ram) + _heap_size + _stack_size; | |
_flash_start = ORIGIN(flash); | |
/* We have to align each sector to word boundaries as our current s19->slm | |
* conversion scripts are not able to handle non-word aligned sections. */ | |
SECTIONS | |
{ | |
.vectors : | |
{ | |
. = ALIGN(4); | |
KEEP(*(.vectors)) | |
} > rom | |
.text : { | |
. = ALIGN(4); | |
_stext = .; | |
*(.text) | |
_etext = .; | |
__CTOR_LIST__ = .; | |
LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) | |
*(.ctors) | |
LONG(0) | |
__CTOR_END__ = .; | |
__DTOR_LIST__ = .; | |
LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) | |
*(.dtors) | |
LONG(0) | |
__DTOR_END__ = .; | |
*(.lit) | |
*(.shdata) | |
_endtext = .; | |
} > rom | |
.rodata : { | |
. = ALIGN(4); | |
*(.rodata); | |
*(.rodata.*) | |
} > rom | |
.shbss : | |
{ | |
. = ALIGN(4); | |
*(.shbss) | |
} > rom | |
.data : { | |
. = ALIGN(4); | |
sdata = .; | |
_sdata = .; | |
*(.data); | |
*(.data.*) | |
edata = .; | |
_edata = .; | |
} > rom | |
.bss : | |
{ | |
. = ALIGN(4); | |
_bss_start = .; | |
*(.bss) | |
*(.bss.*) | |
*(.sbss) | |
*(.sbss.*) | |
*(COMMON) | |
_bss_end = .; | |
} > ram | |
.stab 0 (NOLOAD) : | |
{ | |
[ .stab ] | |
} | |
.stabstr 0 (NOLOAD) : | |
{ | |
[ .stabstr ] | |
} | |
} |