+++ /dev/null
-
-/* Linker script for Magpie RAM-based applications */
-
-/*
-Currently, ROM code reserves the first 8KB of RAM for its data/bss.
-The next 12KB or RAM is used for RAM software's literals and read-only data.
-After that comes 64KB reserved for RAM software's data and bss.
-Then 92KB of RAM is reserved for text (code).
-The last 8KB of RAM is reserved for ROM patches, customer DataSets,
-and RAM software expansion. (There is also some additional RAM between
-segments that can be used, if needed.)
- ROM reserved: 0x00500000..0x00501fff
- Literals: 0x00502000..0x00504fff
- Data: 0x00505000..0x00514fff
- Text: 0x00915000..0x0092bfff
-TBD: May want to use a 2-pass link approach in order to
-eliminate fixed boundaries. Support for physical addressing
-in Tensilica tools would be helpful, but it's not coming
-any time soon.
-*/
-
-/* dram_seg: 0x504000, see target.rom.ld */
-
-/* ***** */
- /*lit_seg : org = 0x00508000, len = 0x9000
- iram_seg : org = 0x00911000, len = 0xb000
- dram_seg : org = 0x0051c000, len = 0x6000 */
-MEMORY
-{
- lit_seg : org = 0x004E8000, len = 0x1E600
- iram_seg : org = 0x00906600, len = 0x9500
- dram_seg : org = 0x0050FB00, len = 0x6000
-
-}
-
-PHDRS
-{
- lit_phdr PT_LOAD;
- dram_phdr PT_LOAD;
- iram_phdr PT_LOAD;
-}
-
-/* Default entry point: */
-ENTRY(app_start)
-
-SECTIONS
-{
- /*
- * This empty section is used to convince RAM linkage
- * to share litbase with ROM code.
- */
- .lit4 (NOLOAD) :
- {
- _rom_literal_start = ABSOLUTE(.);
- . += 0x1a600; /* Reserved virtual space for physical mem gap and ROM */
- _lit4_start = ABSOLUTE(.);
- _lit4_end = ABSOLUTE(.);
- _rom_literal_end = ABSOLUTE(.);
- } >lit_seg :NONE
-
- .dport0.rodata :
- {
- _dport0_rodata_start = ABSOLUTE(.); /* 0x505000 */
- *(.dport0.rodata)
- *(.dport.rodata)
- _dport0_rodata_end = ABSOLUTE(.);
- } >lit_seg :lit_phdr
-
- .dport0.literal :
- {
- _dport0_literal_start = ABSOLUTE(.);
- *(.dport0.literal)
- *(.dport.literal)
- _dport0_literal_end = ABSOLUTE(.);
- } >lit_seg :lit_phdr
-
- .dram0.rodata :
- {
- _dram0_rodata_start = ABSOLUTE(.);
- *(.dram0.rodata)
- *(.dram.rodata)
- _dram0_rodata_end = ABSOLUTE(.);
- } >lit_seg :lit_phdr
-
- .rodata :
- {
- _rodata_start = ABSOLUTE(.);
- *(.rodata)
- *(.rodata.*)
- *(.gnu.linkonce.r.*)
- *(.rodata1)
- __XT_EXCEPTION_TABLE__ = ABSOLUTE(.);
- *(.xt_except_table)
- *(.gcc_except_table)
- *(.gnu.linkonce.e.*)
- *(.gnu.version_r)
- . = ALIGN(4); /* this table MUST be 4-byte aligned */
- _bss_table_start = ABSOLUTE(.);
- LONG(_dport0_bss_start)
- LONG(_dport0_bss_end)
- LONG(_bss_start)
- LONG(_bss_end)
- _bss_table_end = ABSOLUTE(.);
- _rodata_end = ABSOLUTE(.);
- } >lit_seg :lit_phdr
-
- .literals :
- {
- _literals_start = ABSOLUTE(.);
- *(*.lit4)
- *(.gnu.linkonce.lit4.*)
- _literals_end = ABSOLUTE(.);
- } >lit_seg :lit_phdr
-
- .dram0.literal :
- {
- _dram0_literal_start = ABSOLUTE(.);
- *(.dram0.literal)
- *(.dram.literal)
- _dram0_literal_end = ABSOLUTE(.);
- } >lit_seg :lit_phdr
-
- .dport0.data :
- {
- _dport0_data_start = ABSOLUTE(.);
- *(.dport0.data)
- *(.dport.data)
- _dport0_data_end = ABSOLUTE(.);
- } >dram_seg :dram_phdr
-
- .dport0.bss :
- {
- . = ALIGN (8);
- _dport0_bss_start = ABSOLUTE(.);
- *(.dport0.bss)
- . = ALIGN (8);
- _dport0_bss_end = ABSOLUTE(.);
- } >dram_seg :dram_phdr
-
- .dram0.data :
- {
- _dram0_data_start = ABSOLUTE(.);
- *(.dram0.data)
- *(.dram.data)
- _dram0_data_end = ABSOLUTE(.);
- } >dram_seg :dram_phdr
-
- .data :
- {
- _data_start = ABSOLUTE(.);
- *(.data)
- *(.data.*)
- *(.gnu.linkonce.d.*)
- *(.data1)
- *(.sdata)
- *(.sdata.*)
- *(.gnu.linkonce.s.*)
- *(.sdata2)
- *(.sdata2.*)
- *(.gnu.linkonce.s2.*)
- *(.jcr)
- *(.eh_frame)
- /* C++ constructor and destructor tables, properly ordered: */
- KEEP (*crtbegin.o(.ctors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
- KEEP (*(SORT(.ctors.*)))
- KEEP (*(.ctors))
- KEEP (*crtbegin.o(.dtors))
- KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
- KEEP (*(SORT(.dtors.*)))
- KEEP (*(.dtors))
- /* C++ exception handlers table: */
- __XT_EXCEPTION_DESCS__ = ABSOLUTE(.);
- *(.xt_except_desc)
- *(.gnu.linkonce.h.*)
- __XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
- *(.xt_except_desc_end)
- *(.dynamic)
- *(.gnu.version_d)
- _data_end = ABSOLUTE(.);
- } >dram_seg :dram_phdr
-
- .bss :
- {
- . = ALIGN (8);
- _bss_start = ABSOLUTE(.);
- *(.dynsbss)
- *(.sbss)
- *(.sbss.*)
- *(.gnu.linkonce.sb.*)
- *(.scommon)
- *(.sbss2)
- *(.sbss2.*)
- *(.gnu.linkonce.sb2.*)
- *(.dynbss)
- *(.bss)
- *(.bss.*)
- *(.gnu.linkonce.b.*)
- *(COMMON)
- *(.dram0.bss)
- . = ALIGN (8);
- _bss_end = ABSOLUTE(.);
- _end = ALIGN(0x8);
- PROVIDE(end = ALIGN(0x8));
- _fw_image_end = ABSOLUTE(.);
- /*_stack_sentry = ALIGN(0x8);*/
- } >dram_seg :dram_phdr
-
- .text :
- {
- _stext = .;
- _text_start = ABSOLUTE(.);
- *(.entry.text)
- *(.init.literal)
- *(.init)
- *(.literal .text .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
- *(.fini.literal)
- *(.fini)
- *(.gnu.version)
- _text_end = ABSOLUTE(.);
- _etext = .;
- } >iram_seg :iram_phdr
-
- .iram0.text :
- {
- _iram0_text_start = ABSOLUTE(.);
- *(.iram0.literal .iram.literal .iram.text.literal .iram0.text .iram.text)
- _iram0_text_end = ABSOLUTE(.);
- } >iram_seg :iram_phdr
-
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
-
- .xt.insn 0 :
- {
- KEEP (*(.xt.insn))
- KEEP (*(.gnu.linkonce.x.*))
- }
- .xt.prop 0 :
- {
- KEEP (*(.xt.prop))
- KEEP (*(.gnu.linkonce.prop.*))
- }
- .xt.lit 0 :
- {
- KEEP (*(.xt.lit))
- KEEP (*(.gnu.linkonce.p.*))
- }
-}
-
-INCLUDE "rom.addrs.ld"
-