diff options
Diffstat (limited to 'apps/plugins')
-rw-r--r-- | apps/plugins/flac2wav.c | 4 | ||||
-rw-r--r-- | apps/plugins/plugin.lds | 18 |
2 files changed, 22 insertions, 0 deletions
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 } |