63c2789f20ee930d2ab9c646c42c1974eb28e5ad
[processor-sdk/pdk.git] / packages / ti / drv / spi / example / mcspi_slavemode / am65xx / linker_mpu.lds
1 /* File: linker_mpu.lds
2 * gcc Linker script for MPU core
3 */
4 __STACK_SIZE = 0x10000;
5 __TI_STACK_SIZE = __STACK_SIZE;
7 MEMORY
8 {
9 MCU_RESVD : ORIGIN = 0x000041C00000, LENGTH = 0x00060000 /* MCUSS-OCMC RAM RESERVED FOR MCUSS & SOC Boot - 384KB */
10 OCMCRAM : ORIGIN = 0x000041C60000, LENGTH = 0x00020000 /* MCUSS-OCMC RAM - 128KB */
11 MSMC_SRAM : ORIGIN = 0x000070001000, LENGTH = 0xEF000 /* MSMC RAM GENERAL USE */
12 MSMC_SRAM_H : ORIGIN = 0x000070100000, LENGTH = 0xE2000 /* MSMC RAM GENERAL USE - High memory */
13 MSMC_DMSC : ORIGIN = 0x0000701F0000, LENGTH = 0x10000 /* Reserved for DMSC */
15 DDR_0 (RWX) : ORIGIN = 0x80000000, LENGTH = 0x10000000
16 DDR_1 (RWX) : ORIGIN = 0x90000000, LENGTH = 0x10000000
17 DDR_2 (RWX) : ORIGIN = 0xA0000000, LENGTH = 0x60000000
18 }
20 REGION_ALIAS("BOOTVECTOR", DDR_0);
21 REGION_ALIAS("REGION_TEXT", DDR_0);
22 REGION_ALIAS("REGION_BSS", DDR_0);
23 REGION_ALIAS("REGION_DATA", DDR_0);
24 REGION_ALIAS("REGION_STACK", DDR_0);
25 REGION_ALIAS("REGION_HEAP", DDR_0);
26 REGION_ALIAS("REGION_ARM_EXIDX", DDR_0);
27 REGION_ALIAS("REGION_ARM_EXTAB", DDR_0);
28 REGION_ALIAS("REGION_TEXT_STARTUP", DDR_0);
29 REGION_ALIAS("REGION_DATA_BUFFER", DDR_0);
30 REGION_ALIAS("REGION_FAR", DDR_0);
32 SECTIONS {
34 .vecs : {
35 *(.vecs)
36 } > BOOTVECTOR AT> BOOTVECTOR
38 .text.csl_a53_startup : {
39 *(.text.csl_a53_startup)
40 *(.Entry)
41 } > REGION_TEXT_STARTUP AT> REGION_TEXT_STARTUP
43 .text : {
44 CREATE_OBJECT_SYMBOLS
45 *(.text)
46 *(.text.*)
47 . = ALIGN(0x8);
48 KEEP (*(.ctors))
49 . = ALIGN(0x4);
50 KEEP (*(.dtors))
51 . = ALIGN(0x8);
52 __init_array_start = .;
53 KEEP (*(.init_array*))
54 __init_array_end = .;
55 *(.init)
56 *(.fini*)
57 } > REGION_TEXT AT> REGION_TEXT
59 PROVIDE (__etext = .);
60 PROVIDE (_etext = .);
61 PROVIDE (etext = .);
63 .rodata : {
64 *(.rodata)
65 *(.rodata*)
66 } > REGION_TEXT AT> REGION_TEXT
68 .data_buffer : ALIGN (8) {
69 __data_buffer_load__ = LOADADDR (.data_buffer);
70 __data_buffer_start__ = .;
71 *(.data_buffer)
72 *(.data_buffer*)
73 . = ALIGN (8);
74 __data_buffer_end__ = .;
75 } > REGION_DATA_BUFFER AT> REGION_DATA_BUFFER
77 .data : ALIGN (8) {
78 __data_load__ = LOADADDR (.data);
79 __data_start__ = .;
80 *(.data)
81 *(.data*)
82 . = ALIGN (8);
83 __data_end__ = .;
84 } > REGION_DATA AT> REGION_TEXT
86 .ARM.exidx : {
87 __exidx_start = .;
88 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
89 __exidx_end = .;
90 } > REGION_ARM_EXIDX AT> REGION_ARM_EXIDX
92 .ARM.extab : {
93 *(.ARM.extab* .gnu.linkonce.armextab.*)
94 } > REGION_ARM_EXTAB AT> REGION_ARM_EXTAB
96 /* usb application ramdisk buffer */
97 .bss:extMemCache:ramdisk (NOLOAD) : ALIGN (32) {
98 } > DDR_0
100 /* For NDK packet memory, we need to map this sections before .bss*/
101 .bss:NDK_PACKETMEM (NOLOAD) : ALIGN (128) {} > DDR_0
102 .bss:NDK_MMBUFFER (NOLOAD) : ALIGN (128) {} > DDR_0
104 /* USB or any other LLD buffer for benchmarking */
105 .benchmark_buffer (NOLOAD) : ALIGN (32) {
106 } > DDR_0
108 /* cal's application buffer */
109 .bss:frameBuffer (NOLOAD) : ALIGN (32) {
110 } > DDR_0
113 .bss : {
114 __bss_start__ = .;
115 *(.shbss)
116 *(.bss)
117 *(.bss.*)
118 . = ALIGN (8);
119 __bss_end__ = .;
120 . = ALIGN (8);
121 *(COMMON)
122 } > REGION_BSS AT> REGION_BSS
124 .far : {
125 __far_start__ = .;
126 *(.far)
127 *(.far:*)
128 *(.far.*)
129 . = ALIGN (8);
130 __far_end__ = .;
131 . = ALIGN (8);
132 } > REGION_FAR AT> REGION_FAR
134 .heap : {
135 __heap_start__ = .;
136 end = __heap_start__;
137 _end = end;
138 __end = end;
139 KEEP(*(.heap))
140 __heap_end__ = .;
141 __HeapLimit = __heap_end__;
142 } > REGION_HEAP AT> REGION_HEAP
144 .stack (NOLOAD) : ALIGN(16) {
145 _stack = .;
146 __stack = .;
147 KEEP(*(.stack))
148 } > REGION_STACK AT> REGION_STACK
150 __TI_STACK_BASE = __stack;
152 /* Stabs debugging sections. */
153 .stab 0 : { *(.stab) }
154 .stabstr 0 : { *(.stabstr) }
155 .stab.excl 0 : { *(.stab.excl) }
156 .stab.exclstr 0 : { *(.stab.exclstr) }
157 .stab.index 0 : { *(.stab.index) }
158 .stab.indexstr 0 : { *(.stab.indexstr) }
159 .comment 0 : { *(.comment) }
160 /*
161 * DWARF debug sections.
162 * Symbols in the DWARF debugging sections are relative to the beginning
163 * of the section so we begin them at 0.
164 */
165 /* DWARF 1 */
166 .debug 0 : { *(.debug) }
167 .line 0 : { *(.line) }
168 /* GNU DWARF 1 extensions */
169 .debug_srcinfo 0 : { *(.debug_srcinfo) }
170 .debug_sfnames 0 : { *(.debug_sfnames) }
171 /* DWARF 1.1 and DWARF 2 */
172 .debug_aranges 0 : { *(.debug_aranges) }
173 .debug_pubnames 0 : { *(.debug_pubnames) }
174 /* DWARF 2 */
175 .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
176 .debug_abbrev 0 : { *(.debug_abbrev) }
177 .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) }
178 .debug_frame 0 : { *(.debug_frame) }
179 .debug_str 0 : { *(.debug_str) }
180 .debug_loc 0 : { *(.debug_loc) }
181 .debug_macinfo 0 : { *(.debug_macinfo) }
182 /* SGI/MIPS DWARF 2 extensions */
183 .debug_weaknames 0 : { *(.debug_weaknames) }
184 .debug_funcnames 0 : { *(.debug_funcnames) }
185 .debug_typenames 0 : { *(.debug_typenames) }
186 .debug_varnames 0 : { *(.debug_varnames) }
187 /* DWARF 3 */
188 .debug_pubtypes 0 : { *(.debug_pubtypes) }
189 .debug_ranges 0 : { *(.debug_ranges) }
190 /* DWARF Extension. */
191 .debug_macro 0 : { *(.debug_macro) }
192 .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) }
193 /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
194 }