summaryrefslogtreecommitdiff
path: root/apps/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins')
-rw-r--r--apps/plugins/plugin.lds65
1 files changed, 30 insertions, 35 deletions
diff --git a/apps/plugins/plugin.lds b/apps/plugins/plugin.lds
index 10ce98f..d5cfaae 100644
--- a/apps/plugins/plugin.lds
+++ b/apps/plugins/plugin.lds
@@ -247,16 +247,15 @@ SECTIONS
{
*(.rodata*)
#if defined(IRAMSIZE) && IRAMSIZE == 0
- *(.irodata)
+ *(.irodata)
#endif
- . = ALIGN(0x4);
} > PLUGIN_RAM
.data :
{
*(.data*)
#if defined(IRAMSIZE) && IRAMSIZE == 0
- *(.idata)
+ *(.idata)
#endif
} > PLUGIN_RAM
@@ -266,15 +265,11 @@ SECTIONS
. = ALIGN(CACHEALIGN_SIZE);
*(.ncdata*)
. = ALIGN(CACHEALIGN_SIZE);
-/* EABI currently needs iramcopy defined here, otherwise .iram can sometimes
- have an incorrect load address, breaking codecs. */
-#if defined(IRAMSIZE)
- iramcopy = . - NOCACHE_BASE;
-#endif
} AT> PLUGIN_RAM
-/* This definition is used when NOCACHE_BASE is 0. The address offset bug only
- seems to occur when the empty .ncdata is present. */
-#elif defined(IRAMSIZE)
+ . -= NOCACHE_BASE;
+#endif
+
+#if defined(IRAMSIZE) && IRAMSIZE != 0
iramcopy = .;
#endif
@@ -286,33 +281,13 @@ SECTIONS
#endif
}
-#if defined(IRAMSIZE) && IRAMSIZE != 0
- .iram IRAMORIG : AT ( iramcopy)
- {
- iramstart = .;
- *(.icode)
- *(.irodata)
- *(.idata)
- iramend = .;
- } > PLUGIN_IRAM
-
-
- .ibss (NOLOAD) :
- {
- iedata = .;
- *(.ibss)
- . = ALIGN(0x4);
- iend = .;
- } > PLUGIN_IRAM
-#endif
-
- .bss (NOLOAD) :
+ .bss . (NOLOAD) :
{
plugin_bss_start = .;
_plugin_bss_start = .;
*(.bss*)
#if defined(IRAMSIZE) && IRAMSIZE == 0
- *(.ibss)
+ *(.ibss)
#endif
*(COMMON)
. = ALIGN(0x4);
@@ -325,15 +300,35 @@ SECTIONS
*(.ncbss*)
. = ALIGN(CACHEALIGN_SIZE);
} AT> PLUGIN_RAM
+ . -= NOCACHE_BASE;
#endif
- /* Restore . */
- .pluginend . - NOCACHE_BASE :
+ /* Final end of plugin after IRAM setup */
+ .pluginend :
{
_plugin_end_addr = .;
plugin_end_addr = .;
}
+#if defined(IRAMSIZE) && IRAMSIZE != 0
+ .iram IRAMORIG : AT (iramcopy)
+ {
+ iramstart = .;
+ *(.icode)
+ *(.irodata)
+ *(.idata)
+ iramend = .;
+ } > PLUGIN_IRAM
+
+ .ibss (NOLOAD) :
+ {
+ iedata = .;
+ *(.ibss)
+ . = ALIGN(0x4);
+ iend = .;
+ } > PLUGIN_IRAM
+#endif
+
/* Special trick to avoid a linker error when no other sections are
left after garbage collection (plugin not for this platform) */
.comment 0 :