From e94eea95389567047dbbfd064f456ab8028b2852 Mon Sep 17 00:00:00 2001 From: Frank Gevaerts Date: Sun, 10 Oct 2010 20:49:21 +0000 Subject: Invalidate the CPU cache after clearing bss, to make sure that bss variables that are used via non-cached aliases don't read garbage. This fixes FS#11653 for me git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28236 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/plugin_crt0.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'apps/plugins/plugin_crt0.c') diff --git a/apps/plugins/plugin_crt0.c b/apps/plugins/plugin_crt0.c index 1db9d6a81a..d86c5c367c 100644 --- a/apps/plugins/plugin_crt0.c +++ b/apps/plugins/plugin_crt0.c @@ -90,6 +90,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); + /* 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 /* we come back here if exit() was called or the plugin returned normally */ -- cgit v1.2.3