diff options
-rw-r--r-- | apps/codecs/libFLAC/coldfire.c | 1 | ||||
-rw-r--r-- | apps/plugins/flac2wav.c | 4 | ||||
-rw-r--r-- | apps/plugins/plugin.lds | 18 | ||||
-rw-r--r-- | firmware/app.lds | 2 |
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 |