summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/codecs/libFLAC/coldfire.c1
-rw-r--r--apps/plugins/flac2wav.c4
-rw-r--r--apps/plugins/plugin.lds18
-rw-r--r--firmware/app.lds2
4 files changed, 24 insertions, 1 deletions
diff --git a/apps/codecs/libFLAC/coldfire.c b/apps/codecs/libFLAC/coldfire.c
index c763c2001f..1d50038195 100644
--- a/apps/codecs/libFLAC/coldfire.c
+++ b/apps/codecs/libFLAC/coldfire.c
@@ -1,6 +1,7 @@
#ifndef SIMULATOR
#include <private/coldfire.h>
+void FLAC__lpc_restore_signal_order8_mac(const FLAC__int32 residual[], unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 data[]) __attribute__ ((section (".icode")));
void FLAC__lpc_restore_signal_order8_mac(const FLAC__int32 residual[], unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 data[])
{
register const FLAC__int32 *qlp0 = &qlp_coeff[(order-1)];
diff --git a/apps/plugins/flac2wav.c b/apps/plugins/flac2wav.c
index c90cf0d633..74e69e75ac 100644
--- a/apps/plugins/flac2wav.c
+++ b/apps/plugins/flac2wav.c
@@ -155,6 +155,9 @@ FLAC__bool flac_eof_handler (const FLAC__SeekableStreamDecoder *decoder,
}
}
+extern char iramcopy[];
+extern char iramstart[];
+extern char iramend[];
/* this is the plugin entry point */
enum plugin_status plugin_start(struct plugin_api* api, void* file)
@@ -168,6 +171,7 @@ enum plugin_status plugin_start(struct plugin_api* api, void* file)
otherwise you will get lovely "I04: IllInstr" errors... :-) */
rb = api;
+ rb->memcpy(iramstart, iramcopy, iramend-iramstart);
/* This function sets up the buffers and reads the file into RAM */
diff --git a/apps/plugins/plugin.lds b/apps/plugins/plugin.lds
index acbeb52652..867084efa5 100644
--- a/apps/plugins/plugin.lds
+++ b/apps/plugins/plugin.lds
@@ -16,6 +16,8 @@ OUTPUT_FORMAT(elf32-sh)
#ifdef IRIVER_H100
#define DRAMORIG 0x30000000
+#define IRAMORIG 0x10010000
+#define IRAMSIZE 0x8000
#else
#define DRAMORIG 0x09000000 + STUBOFFSET
#endif
@@ -31,6 +33,9 @@ OUTPUT_FORMAT(elf32-sh)
MEMORY
{
PLUGIN_RAM : ORIGIN = PLUGIN_ORIGIN, LENGTH = PLUGIN_LENGTH
+#ifdef IRIVER_H100
+ PLUGIN_IRAM : ORIGIN = IRAMORIG, LENGTH = IRAMSIZE
+#endif
}
SECTIONS
@@ -57,5 +62,18 @@ SECTIONS
*(.rodata.str1.1)
*(.rodata.str1.4)
. = ALIGN(0x4);
+#ifdef IRIVER_H100
+ iramcopy = .;
+#endif
} > PLUGIN_RAM
+
+#ifdef IRIVER_H100
+ .iram IRAMORIG : AT ( iramcopy)
+ {
+ iramstart = .;
+ *(.icode)
+ *(.idata)
+ iramend = .;
+ } > PLUGIN_IRAM
+#endif
}
diff --git a/firmware/app.lds b/firmware/app.lds
index 22acdb86ba..8cf965dfeb 100644
--- a/firmware/app.lds
+++ b/firmware/app.lds
@@ -117,7 +117,7 @@ _pluginbuf = 0;
#ifdef IRIVER_H100
#define DRAMORIG 0x30000000 + STUBOFFSET
#define IRAMORIG 0x10000000
-#define IRAMSIZE 0x18000
+#define IRAMSIZE 0x10000
#else
#define DRAMORIG 0x09000000 + STUBOFFSET
#define IRAMORIG 0x0f000000