diff options
| author | Michael Sevakis <jethead71@rockbox.org> | 2011-12-17 07:27:24 +0000 |
|---|---|---|
| committer | Michael Sevakis <jethead71@rockbox.org> | 2011-12-17 07:27:24 +0000 |
| commit | 6a67707b5ec3b2c649c401550bb7fdef2b7c8d07 (patch) | |
| tree | bfe31942a4abbaac09ad0f4226effdcef8bf097e /apps | |
| parent | 43d7a75369286dc3b39b858df34f66b0b45de34e (diff) | |
| download | rockbox-6a67707b5ec3b2c649c401550bb7fdef2b7c8d07.zip rockbox-6a67707b5ec3b2c649c401550bb7fdef2b7c8d07.tar.gz rockbox-6a67707b5ec3b2c649c401550bb7fdef2b7c8d07.tar.bz2 rockbox-6a67707b5ec3b2c649c401550bb7fdef2b7c8d07.tar.xz | |
Commit to certain names for cache coherency APIs and discard the aliases.
Wouldn't surprise me a bit to get some non-green.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31339 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/codec_thread.c | 4 | ||||
| -rw-r--r-- | apps/codecs.c | 6 | ||||
| -rw-r--r-- | apps/codecs.h | 7 | ||||
| -rw-r--r-- | apps/codecs/codec_crt0.c | 4 | ||||
| -rw-r--r-- | apps/codecs/mpa.c | 2 | ||||
| -rw-r--r-- | apps/codecs/spc.c | 6 | ||||
| -rw-r--r-- | apps/plugin.c | 6 | ||||
| -rw-r--r-- | apps/plugin.h | 9 | ||||
| -rw-r--r-- | apps/plugins/fft/fft.c | 4 | ||||
| -rw-r--r-- | apps/plugins/mpegplayer/alloc.c | 2 | ||||
| -rw-r--r-- | apps/plugins/mpegplayer/video_thread.c | 8 | ||||
| -rw-r--r-- | apps/plugins/plugin_crt0.c | 8 |
12 files changed, 34 insertions, 32 deletions
diff --git a/apps/codec_thread.c b/apps/codec_thread.c index 0498858..39db741 100644 --- a/apps/codec_thread.c +++ b/apps/codec_thread.c @@ -550,9 +550,9 @@ static void do_callback(void (* callback)(void)) if (callback) { - cpucache_commit_discard(); + commit_discard_idcache(); callback(); - cpucache_commit(); + commit_dcache(); } } diff --git a/apps/codecs.c b/apps/codecs.c index 93542e3..fafe4ac 100644 --- a/apps/codecs.c +++ b/apps/codecs.c @@ -116,8 +116,8 @@ struct codec_api ci = { semaphore_release, #endif - cpucache_flush, - cpucache_invalidate, + commit_dcache, + commit_discard_dcache, /* strings and memory */ strcpy, @@ -165,6 +165,8 @@ struct codec_api ci = { /* new stuff at the end, sort into place next time the API gets incompatible */ + + commit_discard_idcache, }; void codec_get_full_path(char *path, const char *codec_root_fn) diff --git a/apps/codecs.h b/apps/codecs.h index f1e2a51..1334953 100644 --- a/apps/codecs.h +++ b/apps/codecs.h @@ -75,7 +75,7 @@ #define CODEC_ENC_MAGIC 0x52454E43 /* RENC */ /* increase this every time the api struct changes */ -#define CODEC_API_VERSION 43 +#define CODEC_API_VERSION 44 /* update this to latest version if a change to the api struct breaks backwards compatibility (and please take the opportunity to sort in any @@ -169,8 +169,8 @@ struct codec_api { void (*semaphore_release)(struct semaphore *s); #endif /* NUM_CORES */ - void (*cpucache_flush)(void); - void (*cpucache_invalidate)(void); + void (*commit_dcache)(void); + void (*commit_discard_dcache)(void); /* strings and memory */ char* (*strcpy)(char *dst, const char *src); @@ -223,6 +223,7 @@ struct codec_api { /* new stuff at the end, sort into place next time the API gets incompatible */ + void (*commit_discard_idcache)(void); }; /* codec header */ diff --git a/apps/codecs/codec_crt0.c b/apps/codecs/codec_crt0.c index 50a2d8b..e3c3321 100644 --- a/apps/codecs/codec_crt0.c +++ b/apps/codecs/codec_crt0.c @@ -45,7 +45,7 @@ enum codec_status codec_start(enum codec_entry_call_reason reason) ci->memcpy(iramstart, iramcopy, iram_size); ci->memset(iedata, 0, ibss_size); /* make the icache (if it exists) up to date with the new code */ - ci->cpucache_invalidate(); + ci->commit_discard_idcache(); /* barrier to prevent reordering iram copy and BSS clearing, * because the BSS segment alias the IRAM copy. */ @@ -56,7 +56,7 @@ enum codec_status codec_start(enum codec_entry_call_reason reason) /* Some parts of bss may be used via a no-cache alias (at least * portalplayer has this). If we don't clear the cache, those aliases * may read garbage */ - ci->cpucache_invalidate(); + ci->commit_dcache(); } #endif /* CONFIG_PLATFORM */ diff --git a/apps/codecs/mpa.c b/apps/codecs/mpa.c index ac81f06..f9bf7e6 100644 --- a/apps/codecs/mpa.c +++ b/apps/codecs/mpa.c @@ -274,7 +274,7 @@ static void mad_synth_thread_quit(void) die = 1; ci->semaphore_release(&synth_pending_sem); ci->thread_wait(mad_synth_thread_id); - ci->cpucache_invalidate(); + ci->commit_discard_dcache(); } #else static inline void mad_synth_thread_ready(void) diff --git a/apps/codecs/spc.c b/apps/codecs/spc.c index 94ac9ff..809562e 100644 --- a/apps/codecs/spc.c +++ b/apps/codecs/spc.c @@ -295,7 +295,7 @@ static bool emu_thread_process_msg(struct sample_queue_chunk *chunk) if (id == SPC_EMU_LOAD) { struct spc_load *ld = (struct spc_load *)chunk->data; - ci->cpucache_invalidate(); + ci->commit_discard_dcache(); SPC_Init(&spc_emu); sample_queue.retval = SPC_load_spc(&spc_emu, ld->buf, ld->size); @@ -368,7 +368,7 @@ static bool spc_emu_start(void) static inline int load_spc_buffer(uint8_t *buf, size_t size) { struct spc_load ld = { buf, size }; - ci->cpucache_flush(); + ci->commit_dcache(); return emu_thread_send_msg(SPC_EMU_LOAD, (intptr_t)&ld); } @@ -378,7 +378,7 @@ static inline void spc_emu_quit(void) emu_thread_send_msg(SPC_EMU_QUIT, 0); /* Wait for emu thread to be killed */ ci->thread_wait(emu_thread_id); - ci->cpucache_invalidate(); + ci->commit_discard_dcache(); } } diff --git a/apps/plugin.c b/apps/plugin.c index f5aa589..6dd84af 100644 --- a/apps/plugin.c +++ b/apps/plugin.c @@ -428,8 +428,8 @@ static const struct plugin_api rockbox_api = { cancel_cpu_boost, #endif - cpucache_flush, - cpucache_invalidate, + commit_dcache, + commit_discard_dcache, lc_open, lc_open_from_mem, @@ -794,6 +794,8 @@ static const struct plugin_api rockbox_api = { /* new stuff at the end, sort into place next time the API gets incompatible */ + + commit_discard_idcache, }; int plugin_load(const char* plugin, const void* parameter) diff --git a/apps/plugin.h b/apps/plugin.h index e2b7fe7..4a62697 100644 --- a/apps/plugin.h +++ b/apps/plugin.h @@ -148,7 +148,7 @@ void* plugin_get_buffer(size_t *buffer_size); #define PLUGIN_MAGIC 0x526F634B /* RocK */ /* increase this every time the api struct changes */ -#define PLUGIN_API_VERSION 214 +#define PLUGIN_API_VERSION 215 /* update this to latest version if a change to the api struct breaks backwards compatibility (and please take the opportunity to sort in any @@ -513,8 +513,8 @@ struct plugin_api { void (*cancel_cpu_boost)(void); #endif - void (*cpucache_flush)(void); - void (*cpucache_invalidate)(void); + void (*commit_dcache)(void); + void (*commit_discard_dcache)(void); /* load code api for overlay */ void* (*lc_open)(const char *filename, unsigned char *buf, size_t buf_size); @@ -948,7 +948,8 @@ struct plugin_api { /* new stuff at the end, sort into place next time the API gets incompatible */ - + + void (*commit_discard_idcache)(void); }; /* plugin header */ diff --git a/apps/plugins/fft/fft.c b/apps/plugins/fft/fft.c index 11bdfc8..8920550 100644 --- a/apps/plugins/fft/fft.c +++ b/apps/plugins/fft/fft.c @@ -1249,7 +1249,7 @@ static void fft_thread_entry(void) } /* write back output for other processor and invalidate for next frame read */ - rb->cpucache_invalidate(); + rb->commit_discard_dcache(); int new_tail = output_tail ^ 1; @@ -1311,7 +1311,7 @@ static void fft_close_fft(void) /* Handle our FFT thread. */ fft_thread_run = false; rb->thread_wait(fft_thread); - rb->cpucache_invalidate(); + rb->commit_discard_dcache(); } #else /* NUM_CORES == 1 */ /* everything serialize on single-core and FFT gets to use IRAM main stack if diff --git a/apps/plugins/mpegplayer/alloc.c b/apps/plugins/mpegplayer/alloc.c index c2165b2..eb58c67 100644 --- a/apps/plugins/mpegplayer/alloc.c +++ b/apps/plugins/mpegplayer/alloc.c @@ -149,7 +149,7 @@ bool mpeg_alloc_init(unsigned char *buf, size_t mallocsize) return false; } - IF_COP(rb->cpucache_invalidate()); + IF_COP(rb->commit_discard_dcache()); return true; } diff --git a/apps/plugins/mpegplayer/video_thread.c b/apps/plugins/mpegplayer/video_thread.c index 5119712..392cc61 100644 --- a/apps/plugins/mpegplayer/video_thread.c +++ b/apps/plugins/mpegplayer/video_thread.c @@ -550,7 +550,7 @@ static void video_thread_msg(struct video_thread_data *td) } else { - IF_COP(rb->cpucache_invalidate()); + IF_COP(rb->commit_discard_dcache()); vo_lock(); rb->lcd_update(); vo_unlock(); @@ -1007,7 +1007,7 @@ bool video_thread_init(void) { intptr_t rep; - IF_COP(rb->cpucache_flush()); + IF_COP(rb->commit_dcache()); video_str.hdr.q = &video_str_queue; rb->queue_init(video_str.hdr.q, false); @@ -1025,7 +1025,7 @@ bool video_thread_init(void) /* Wait for thread to initialize */ rep = str_send_msg(&video_str, STREAM_NULL, 0); - IF_COP(rb->cpucache_invalidate()); + IF_COP(rb->commit_discard_dcache()); return rep == 0; /* Normally STREAM_NULL should be ignored */ } @@ -1037,7 +1037,7 @@ void video_thread_exit(void) { str_post_msg(&video_str, STREAM_QUIT, 0); rb->thread_wait(video_str.thread); - IF_COP(rb->cpucache_invalidate()); + IF_COP(rb->commit_discard_dcache()); video_str.thread = 0; } } diff --git a/apps/plugins/plugin_crt0.c b/apps/plugins/plugin_crt0.c index 917ccb1..680bb07 100644 --- a/apps/plugins/plugin_crt0.c +++ b/apps/plugins/plugin_crt0.c @@ -76,10 +76,8 @@ enum plugin_status plugin__start(const void *param) rb->audio_stop(); rb->memcpy(iramstart, iramcopy, iram_size); rb->memset(iedata, 0, ibss_size); -#ifdef HAVE_CPUCACHE_INVALIDATE /* make the icache (if it exists) up to date with the new code */ - rb->cpucache_invalidate(); -#endif /* HAVE_CPUCACHE_INVALIDATE */ + rb->commit_discard_idcache(); /* barrier to prevent reordering iram copy and BSS clearing, * because the BSS segment alias the IRAM copy. @@ -91,12 +89,10 @@ enum plugin_status plugin__start(const void *param) /* zero out the bss section */ rb->memset(plugin_bss_start, 0, plugin_end_addr - plugin_bss_start); -#ifdef HAVE_CPUCACHE_INVALIDATE /* Some parts of bss may be used via a no-cache alias (at least * portalplayer has this). If we don't clear the cache, those aliases * may read garbage */ - rb->cpucache_invalidate(); -#endif /* HAVE_CPUCACHE_INVALIDATE */ + rb->commit_dcache(); #endif /* we come back here if exit() was called or the plugin returned normally */ |