summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/plugins/plugin.lds65
1 files changed, 35 insertions, 30 deletions
diff --git a/apps/plugins/plugin.lds b/apps/plugins/plugin.lds
index d5cfaae406..10ce98fca4 100644
--- a/apps/plugins/plugin.lds
+++ b/apps/plugins/plugin.lds
@@ -247,15 +247,16 @@ SECTIONS
247 { 247 {
248 *(.rodata*) 248 *(.rodata*)
249#if defined(IRAMSIZE) && IRAMSIZE == 0 249#if defined(IRAMSIZE) && IRAMSIZE == 0
250 *(.irodata) 250 *(.irodata)
251#endif 251#endif
252 . = ALIGN(0x4);
252 } > PLUGIN_RAM 253 } > PLUGIN_RAM
253 254
254 .data : 255 .data :
255 { 256 {
256 *(.data*) 257 *(.data*)
257#if defined(IRAMSIZE) && IRAMSIZE == 0 258#if defined(IRAMSIZE) && IRAMSIZE == 0
258 *(.idata) 259 *(.idata)
259#endif 260#endif
260 } > PLUGIN_RAM 261 } > PLUGIN_RAM
261 262
@@ -265,11 +266,15 @@ SECTIONS
265 . = ALIGN(CACHEALIGN_SIZE); 266 . = ALIGN(CACHEALIGN_SIZE);
266 *(.ncdata*) 267 *(.ncdata*)
267 . = ALIGN(CACHEALIGN_SIZE); 268 . = ALIGN(CACHEALIGN_SIZE);
268 } AT> PLUGIN_RAM 269/* EABI currently needs iramcopy defined here, otherwise .iram can sometimes
269 . -= NOCACHE_BASE; 270 have an incorrect load address, breaking codecs. */
271#if defined(IRAMSIZE)
272 iramcopy = . - NOCACHE_BASE;
270#endif 273#endif
271 274 } AT> PLUGIN_RAM
272#if defined(IRAMSIZE) && IRAMSIZE != 0 275/* This definition is used when NOCACHE_BASE is 0. The address offset bug only
276 seems to occur when the empty .ncdata is present. */
277#elif defined(IRAMSIZE)
273 iramcopy = .; 278 iramcopy = .;
274#endif 279#endif
275 280
@@ -281,13 +286,33 @@ SECTIONS
281#endif 286#endif
282 } 287 }
283 288
284 .bss . (NOLOAD) : 289#if defined(IRAMSIZE) && IRAMSIZE != 0
290 .iram IRAMORIG : AT ( iramcopy)
291 {
292 iramstart = .;
293 *(.icode)
294 *(.irodata)
295 *(.idata)
296 iramend = .;
297 } > PLUGIN_IRAM
298
299
300 .ibss (NOLOAD) :
301 {
302 iedata = .;
303 *(.ibss)
304 . = ALIGN(0x4);
305 iend = .;
306 } > PLUGIN_IRAM
307#endif
308
309 .bss (NOLOAD) :
285 { 310 {
286 plugin_bss_start = .; 311 plugin_bss_start = .;
287 _plugin_bss_start = .; 312 _plugin_bss_start = .;
288 *(.bss*) 313 *(.bss*)
289#if defined(IRAMSIZE) && IRAMSIZE == 0 314#if defined(IRAMSIZE) && IRAMSIZE == 0
290 *(.ibss) 315 *(.ibss)
291#endif 316#endif
292 *(COMMON) 317 *(COMMON)
293 . = ALIGN(0x4); 318 . = ALIGN(0x4);
@@ -300,35 +325,15 @@ SECTIONS
300 *(.ncbss*) 325 *(.ncbss*)
301 . = ALIGN(CACHEALIGN_SIZE); 326 . = ALIGN(CACHEALIGN_SIZE);
302 } AT> PLUGIN_RAM 327 } AT> PLUGIN_RAM
303 . -= NOCACHE_BASE;
304#endif 328#endif
305 329
306 /* Final end of plugin after IRAM setup */ 330 /* Restore . */
307 .pluginend : 331 .pluginend . - NOCACHE_BASE :
308 { 332 {
309 _plugin_end_addr = .; 333 _plugin_end_addr = .;
310 plugin_end_addr = .; 334 plugin_end_addr = .;
311 } 335 }
312 336
313#if defined(IRAMSIZE) && IRAMSIZE != 0
314 .iram IRAMORIG : AT (iramcopy)
315 {
316 iramstart = .;
317 *(.icode)
318 *(.irodata)
319 *(.idata)
320 iramend = .;
321 } > PLUGIN_IRAM
322
323 .ibss (NOLOAD) :
324 {
325 iedata = .;
326 *(.ibss)
327 . = ALIGN(0x4);
328 iend = .;
329 } > PLUGIN_IRAM
330#endif
331
332 /* Special trick to avoid a linker error when no other sections are 337 /* Special trick to avoid a linker error when no other sections are
333 left after garbage collection (plugin not for this platform) */ 338 left after garbage collection (plugin not for this platform) */
334 .comment 0 : 339 .comment 0 :