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