summaryrefslogtreecommitdiff
path: root/apps/plugin.h
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2007-11-08 05:17:20 +0000
committerMichael Sevakis <jethead71@rockbox.org>2007-11-08 05:17:20 +0000
commit57d71e4267ecf66c84173f8ff3606091187b93b1 (patch)
tree7992814f1dfbcf7c5251cad0fdc6da9a5ebb70a3 /apps/plugin.h
parent194a66ef83664b0ebd23b9bea031c67c3b80f6ac (diff)
Add some CACHEALIGN_* macros and a helper function to assist in aligning data and buffers on PortalPlayer processors to cache line boundaries. They're noops when PROC_NEED_CACHEALIGN isn't defined. Go safe and increase the value to 32 since I'm not sure yet if 16 is sufficient - changing that is a one-liner. Add helper to plugin API which will be needed shortly.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15523 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugin.h')
-rw-r--r--apps/plugin.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/apps/plugin.h b/apps/plugin.h
index 300cad0781..f56590c29e 100644
--- a/apps/plugin.h
+++ b/apps/plugin.h
@@ -37,6 +37,7 @@
#include "config.h"
#include "system.h"
#include "dir.h"
+#include "general.h"
#include "kernel.h"
#include "thread.h"
#include "button.h"
@@ -112,7 +113,7 @@
#define PLUGIN_MAGIC 0x526F634B /* RocK */
/* increase this every time the api struct changes */
-#define PLUGIN_API_VERSION 88
+#define PLUGIN_API_VERSION 89
/* update this to latest version if a change to the api struct breaks
backwards compatibility (and please take the opportunity to sort in any
@@ -640,6 +641,10 @@ struct plugin_api {
#endif
void (*thread_wait)(struct thread_entry *thread);
+
+#ifdef PROC_NEEDS_CACHEALIGN
+ size_t (*align_buffer)(void **start, size_t size, size_t align);
+#endif
};
/* plugin header */
@@ -742,4 +747,12 @@ enum plugin_status plugin_start(struct plugin_api* rockbox, void* parameter)
#endif /* CACHE_FUNCTION_WRAPPERS */
+#ifndef ALIGN_BUFFER_WRAPPER
+#define ALIGN_BUFFER_WRAPPER(api) \
+ size_t align_buffer(void **start, size_t size, size_t align) \
+ { \
+ return (api)->align_buffer(start, size, align); \
+ }
+#endif /* ALIGN_BUFFER_WRAPPER */
+
#endif