1 /*******************************************************************************
\r
2 * (c) Copyright 2016-2018 Microsemi SoC Products Group. All rights reserved.
\r
4 * file name : microsemi-riscv-ram.ld
\r
5 * Mi-V soft processor linker script for creating a SoftConsole downloadable
\r
6 * debug image executing in SRAM.
\r
8 * This linker script assumes that the SRAM is connected at on the Mi-V soft
\r
9 * processor memory space. The start address and size of the memory space must
\r
10 * be correct as per the Libero design.
\r
12 * SVN $Revision: 9661 $
\r
13 * SVN $Date: 2018-01-15 16:13:33 +0530 (Mon, 15 Jan 2018) $
\r
16 OUTPUT_ARCH( "riscv" )
\r
22 ram (rwx) : ORIGIN = 0x80000000, LENGTH = 512k
\r
25 RAM_START_ADDRESS = 0x80000000; /* Must be the same value MEMORY region ram ORIGIN above. */
\r
26 RAM_SIZE = 512k; /* Must be the same value MEMORY region ram LENGTH above. */
\r
27 STACK_SIZE = 64k; /* needs to be calculated for your application */
\r
28 HEAP_SIZE = 64k; /* needs to be calculated for your application */
\r
34 KEEP (*(SORT_NONE(.text.entry)))
\r
36 *(.text .text.* .gnu.linkonce.t.*)
\r
40 KEEP (*crtbegin.o(.ctors))
\r
41 KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
\r
42 KEEP (*(SORT(.ctors.*)))
\r
43 KEEP (*crtend.o(.ctors))
\r
44 KEEP (*crtbegin.o(.dtors))
\r
45 KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
\r
46 KEEP (*(SORT(.dtors.*)))
\r
47 KEEP (*crtend.o(.dtors))
\r
49 *(.rodata .rodata.* .gnu.linkonce.r.*)
\r
50 *(.gcc_except_table)
\r
57 PROVIDE_HIDDEN (__preinit_array_start = .);
\r
58 KEEP (*(.preinit_array))
\r
59 PROVIDE_HIDDEN (__preinit_array_end = .);
\r
60 PROVIDE_HIDDEN (__init_array_start = .);
\r
61 KEEP (*(SORT(.init_array.*)))
\r
62 KEEP (*(.init_array))
\r
63 PROVIDE_HIDDEN (__init_array_end = .);
\r
64 PROVIDE_HIDDEN (__fini_array_start = .);
\r
65 KEEP (*(.fini_array))
\r
66 KEEP (*(SORT(.fini_array.*)))
\r
67 PROVIDE_HIDDEN (__fini_array_end = .);
\r
72 /* short/global data section */
\r
73 .sdata : ALIGN(0x10)
\r
75 __sdata_load = LOADADDR(.sdata);
\r
77 PROVIDE( __global_pointer$ = . + 0x800);
\r
78 *(.srodata.cst16) *(.srodata.cst8) *(.srodata.cst4) *(.srodata.cst2)
\r
80 *(.sdata .sdata.* .gnu.linkonce.s.*)
\r
88 __data_load = LOADADDR(.data);
\r
92 *(.data .data.* .gnu.linkonce.d.*)
\r
101 *(.sbss .sbss.* .gnu.linkonce.sb.*)
\r
112 *(.bss .bss.* .gnu.linkonce.b.*)
\r
118 /* End of uninitialized data segment */
\r
121 .heap : ALIGN(0x10)
\r
127 _heap_end = __heap_end;
\r
130 .stack : ALIGN(0x10)
\r
132 __stack_bottom = .;
\r
136 __freertos_irq_stack_top = .;
\r