1+ /*
2+ Linker File for Renesas RZ/N2L FSP
3+ */
4+
5+ MEMORY
6+ {
7+ ATCM : ORIGIN = 0x00000000 , LENGTH = 0x00020000
8+ BTCM : ORIGIN = 0x00100000 , LENGTH = 0x00020000
9+ SYSTEM_RAM : ORIGIN = 0x10000000 , LENGTH = 0x00180000
10+ SYSTEM_RAM_MIRROR : ORIGIN = 0x30000000 , LENGTH = 0x00180000
11+ xSPI0_CS0_SPACE_MIRROR : ORIGIN = 0x40000000 , LENGTH = 0x04000000
12+ xSPI0_CS1_SPACE_MIRROR : ORIGIN = 0x44000000 , LENGTH = 0x04000000
13+ xSPI1_CS0_SPACE_MIRROR : ORIGIN = 0x48000000 , LENGTH = 0x04000000
14+ xSPI1_CS1_SPACE_MIRROR : ORIGIN = 0x4C000000 , LENGTH = 0x04000000
15+ CS0_SPACE_MIRROR : ORIGIN = 0x50000000 , LENGTH = 0x04000000
16+ CS2_SPACE_MIRROR : ORIGIN = 0x54000000 , LENGTH = 0x04000000
17+ CS3_SPACE_MIRROR : ORIGIN = 0x58000000 , LENGTH = 0x04000000
18+ CS5_SPACE_MIRROR : ORIGIN = 0x5C000000 , LENGTH = 0x04000000
19+ xSPI0_CS0_SPACE : ORIGIN = 0x60000000 , LENGTH = 0x04000000
20+ xSPI0_CS1_SPACE : ORIGIN = 0x64000000 , LENGTH = 0x04000000
21+ xSPI1_CS0_SPACE : ORIGIN = 0x68000000 , LENGTH = 0x04000000
22+ xSPI1_CS1_SPACE : ORIGIN = 0x6C000000 , LENGTH = 0x04000000
23+ CS0_SPACE : ORIGIN = 0x70000000 , LENGTH = 0x04000000
24+ CS2_SPACE : ORIGIN = 0x74000000 , LENGTH = 0x04000000
25+ CS3_SPACE : ORIGIN = 0x78000000 , LENGTH = 0x04000000
26+ CS5_SPACE : ORIGIN = 0x7C000000 , LENGTH = 0x04000000
27+ }
28+
29+ SECTIONS
30+ {
31+ .flash_contents 0x60100000 : AT (0x60100000)
32+ {
33+ _mtext = .;
34+ . = . + (_text_end - _text_start);
35+ _mdata = .;
36+ . = . + (_data_end - _data_start);
37+ flash_contents_end = .;
38+ } > xSPI0_CS0_SPACE
39+ .text 0x10010000 : AT (_mtext)
40+ {
41+ _text_start = .;
42+
43+ /* Exception vector */
44+ _fvector_start = .;
45+ KEEP (*(.intvec ))
46+ _fvector_end = .;
47+
48+ *(.text *)
49+
50+ KEEP (*(.init ))
51+ KEEP (*(.fini ))
52+
53+ /* .ctors */
54+ *crtbegin.o (.ctors )
55+ *crtbegin?.o (.ctors )
56+ *(EXCLUDE_FILE (*crtend?.o *crtend.o ) .ctors )
57+ *(SORT (.ctors .*))
58+ *(.ctors )
59+ _ctor_end = .;
60+
61+ /* .dtors */
62+ *crtbegin.o (.dtors )
63+ *crtbegin?.o (.dtors )
64+ *(EXCLUDE_FILE (*crtend?.o *crtend.o ) .dtors )
65+ *(SORT (.dtors .*))
66+ *(.dtors )
67+ _dtor_end = .;
68+
69+ KEEP (*(.eh_frame *))
70+ } > SYSTEM_RAM
71+ .rvectors :
72+ {
73+ _rvectors_start = .;
74+ KEEP (*(.rvectors ))
75+ _rvectors_end = .;
76+ } > SYSTEM_RAM
77+ .ARM.extab :
78+ {
79+ *(.ARM .extab * .gnu .linkonce .armextab .*)
80+ } > SYSTEM_RAM
81+ __exidx_start = .;
82+ .ARM.exidx :
83+ {
84+ *(.ARM .exidx * .gnu .linkonce .armexidx .*)
85+ } > SYSTEM_RAM
86+ __exidx_end = .;
87+ .got :
88+ {
89+ *(.got )
90+ *(.got .plt )
91+ _text_end = .;
92+ } > SYSTEM_RAM
93+ .data : AT (_mdata)
94+ {
95+ _data_start = .;
96+
97+ *(vtable)
98+ *(.data .*)
99+ *(.data )
100+
101+ *(.rodata *)
102+ _erodata = .;
103+
104+ . = ALIGN (4 );
105+ /* preinit data */
106+ PROVIDE_HIDDEN (__preinit_array_start = .);
107+ KEEP (*(.preinit_array ))
108+ PROVIDE_HIDDEN (__preinit_array_end = .);
109+
110+ . = ALIGN (4 );
111+ /* init data */
112+ PROVIDE_HIDDEN (__init_array_start = .);
113+ KEEP (*(SORT (.init_array .*)))
114+ KEEP (*(.init_array ))
115+ PROVIDE_HIDDEN (__init_array_end = .);
116+
117+ . = ALIGN (4 );
118+ /* finit data */
119+ PROVIDE_HIDDEN (__fini_array_start = .);
120+ KEEP (*(SORT (.fini_array .*)))
121+ KEEP (*(.fini_array ))
122+ PROVIDE_HIDDEN (__fini_array_end = .);
123+
124+ KEEP (*(.jcr *))
125+
126+ . = ALIGN (4 );
127+
128+ /* All data end */
129+ _data_end = .;
130+ } > SYSTEM_RAM
131+ .bss :
132+ {
133+ . = ALIGN (4 );
134+ _bss_start = .;
135+ _bss = .;
136+ *(.bss *)
137+ *(COMMON)
138+ . = ALIGN (4 );
139+ _bss_end = .;
140+ _ebss = .;
141+ _end = .;
142+ } > SYSTEM_RAM
143+ .heap (NOLOAD) :
144+ {
145+ . = ALIGN (8 );
146+ __HeapBase = .;
147+ /* Place the STD heap here. */
148+ KEEP (*(.heap ))
149+ __HeapLimit = .;
150+ } > SYSTEM_RAM
151+ .thread_stack (NOLOAD) :
152+ {
153+ . = ALIGN (8 );
154+ __ThreadStackBase = .;
155+ /* Place the Thread stacks here. */
156+ KEEP (*(.stack *))
157+ __ThreadStackLimit = .;
158+ } > SYSTEM_RAM
159+ .sys_stack (NOLOAD) :
160+ {
161+ . = ALIGN (8 );
162+ __SysStackBase = .;
163+ /* Place the sys_stack here. */
164+ KEEP (*(.sys_stack ))
165+ __SysStackLimit = .;
166+ } > SYSTEM_RAM
167+ .svc_stack (NOLOAD) :
168+ {
169+ . = ALIGN (8 );
170+ __SvcStackBase = .;
171+ /* Place the svc_stack here. */
172+ KEEP (*(.svc_stack ))
173+ __SvcStackLimit = .;
174+ } > SYSTEM_RAM
175+ .irq_stack (NOLOAD) :
176+ {
177+ . = ALIGN (8 );
178+ __IrqStackBase = .;
179+ /* Place the irq_stack here. */
180+ KEEP (*(.irq_stack ))
181+ __IrqStackLimit = .;
182+ } > SYSTEM_RAM
183+ .fiq_stack (NOLOAD) :
184+ {
185+ . = ALIGN (8 );
186+ __FiqStackBase = .;
187+ /* Place the fiq_stack here. */
188+ KEEP (*(.fiq_stack ))
189+ __FiqStackLimit = .;
190+ } > SYSTEM_RAM
191+ .und_stack (NOLOAD) :
192+ {
193+ . = ALIGN (8 );
194+ __UndStackBase = .;
195+ /* Place the und_stack here. */
196+ KEEP (*(.und_stack ))
197+ __UndStackLimit = .;
198+ } > SYSTEM_RAM
199+ .abt_stack (NOLOAD) :
200+ {
201+ . = ALIGN (8 );
202+ __AbtStackBase = .;
203+ /* Place the abt_stack here. */
204+ KEEP (*(.abt_stack ))
205+ __AbtStackLimit = .;
206+ } > SYSTEM_RAM
207+ .shared_noncache_buffer 0x300C0000 : AT (0x300C0000)
208+ {
209+ . = ALIGN (32 );
210+ _sncbuffer_start = .;
211+ KEEP (*(.shared_noncache_buffer *))
212+ _sncbuffer_end = .;
213+ } > SYSTEM_RAM_MIRROR
214+ .noncache_buffer 0x30100000 : AT (0x30100000)
215+ {
216+ . = ALIGN (32 );
217+ _ncbuffer_start = .;
218+ KEEP (*(.noncache_buffer *))
219+ _ncbuffer_end = .;
220+ } > SYSTEM_RAM_MIRROR
221+ }
0 commit comments