diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2007-11-08 05:17:20 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2007-11-08 05:17:20 +0000 |
commit | 57d71e4267ecf66c84173f8ff3606091187b93b1 (patch) | |
tree | 7992814f1dfbcf7c5251cad0fdc6da9a5ebb70a3 /apps | |
parent | 194a66ef83664b0ebd23b9bea031c67c3b80f6ac (diff) | |
download | rockbox-57d71e4267ecf66c84173f8ff3606091187b93b1.tar.gz rockbox-57d71e4267ecf66c84173f8ff3606091187b93b1.zip |
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')
-rw-r--r-- | apps/plugin.c | 4 | ||||
-rw-r--r-- | apps/plugin.h | 15 |
2 files changed, 18 insertions, 1 deletions
diff --git a/apps/plugin.c b/apps/plugin.c index ff23a55537..a80e9dd86d 100644 --- a/apps/plugin.c +++ b/apps/plugin.c | |||
@@ -518,6 +518,10 @@ static const struct plugin_api rockbox_api = { | |||
518 | #endif | 518 | #endif |
519 | 519 | ||
520 | thread_wait, | 520 | thread_wait, |
521 | |||
522 | #ifdef PROC_NEEDS_CACHEALIGN | ||
523 | align_buffer, | ||
524 | #endif | ||
521 | }; | 525 | }; |
522 | 526 | ||
523 | int plugin_load(const char* plugin, void* parameter) | 527 | int plugin_load(const char* plugin, void* parameter) |
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 @@ | |||
37 | #include "config.h" | 37 | #include "config.h" |
38 | #include "system.h" | 38 | #include "system.h" |
39 | #include "dir.h" | 39 | #include "dir.h" |
40 | #include "general.h" | ||
40 | #include "kernel.h" | 41 | #include "kernel.h" |
41 | #include "thread.h" | 42 | #include "thread.h" |
42 | #include "button.h" | 43 | #include "button.h" |
@@ -112,7 +113,7 @@ | |||
112 | #define PLUGIN_MAGIC 0x526F634B /* RocK */ | 113 | #define PLUGIN_MAGIC 0x526F634B /* RocK */ |
113 | 114 | ||
114 | /* increase this every time the api struct changes */ | 115 | /* increase this every time the api struct changes */ |
115 | #define PLUGIN_API_VERSION 88 | 116 | #define PLUGIN_API_VERSION 89 |
116 | 117 | ||
117 | /* update this to latest version if a change to the api struct breaks | 118 | /* update this to latest version if a change to the api struct breaks |
118 | backwards compatibility (and please take the opportunity to sort in any | 119 | backwards compatibility (and please take the opportunity to sort in any |
@@ -640,6 +641,10 @@ struct plugin_api { | |||
640 | #endif | 641 | #endif |
641 | 642 | ||
642 | void (*thread_wait)(struct thread_entry *thread); | 643 | void (*thread_wait)(struct thread_entry *thread); |
644 | |||
645 | #ifdef PROC_NEEDS_CACHEALIGN | ||
646 | size_t (*align_buffer)(void **start, size_t size, size_t align); | ||
647 | #endif | ||
643 | }; | 648 | }; |
644 | 649 | ||
645 | /* plugin header */ | 650 | /* plugin header */ |
@@ -742,4 +747,12 @@ enum plugin_status plugin_start(struct plugin_api* rockbox, void* parameter) | |||
742 | 747 | ||
743 | #endif /* CACHE_FUNCTION_WRAPPERS */ | 748 | #endif /* CACHE_FUNCTION_WRAPPERS */ |
744 | 749 | ||
750 | #ifndef ALIGN_BUFFER_WRAPPER | ||
751 | #define ALIGN_BUFFER_WRAPPER(api) \ | ||
752 | size_t align_buffer(void **start, size_t size, size_t align) \ | ||
753 | { \ | ||
754 | return (api)->align_buffer(start, size, align); \ | ||
755 | } | ||
756 | #endif /* ALIGN_BUFFER_WRAPPER */ | ||
757 | |||
745 | #endif | 758 | #endif |