
Applied, thanks.
Best regards, Nobuhiro
2011/10/27 Mike Frysinger vapier@gentoo.org:
Recent builds for SH4 boards fail with a lot of errors like: cmd_mem.o: In function 'dcache_invalid_range': include/asm/cache.h:25: multiple definition of 'dcache_invalid_range' include/asm/cache.h:25: first defined here
This is due to the funcs being defined in the header, but not static or inline or extern. So move them to the sh4-specific cache.c file.
Signed-off-by: Mike Frysinger vapier@gentoo.org
arch/sh/cpu/sh4/cache.c | 22 ++++++++++++++++++++++ arch/sh/include/asm/cache.h | 24 +++--------------------- 2 files changed, 25 insertions(+), 21 deletions(-)
diff --git a/arch/sh/cpu/sh4/cache.c b/arch/sh/cpu/sh4/cache.c index 377005c..dc75e39 100644 --- a/arch/sh/cpu/sh4/cache.c +++ b/arch/sh/cpu/sh4/cache.c @@ -106,3 +106,25 @@ int cache_control(unsigned int cmd)
return 0; }
+void dcache_wback_range(u32 start, u32 end) +{
- u32 v;
- start &= ~(L1_CACHE_BYTES - 1);
- for (v = start; v < end; v += L1_CACHE_BYTES) {
- asm volatile ("ocbwb %0" : /* no output */
- : "m" (__m(v)));
- }
+}
+void dcache_invalid_range(u32 start, u32 end) +{
- u32 v;
- start &= ~(L1_CACHE_BYTES - 1);
- for (v = start; v < end; v += L1_CACHE_BYTES) {
- asm volatile ("ocbi %0" : /* no output */
- : "m" (__m(v)));
- }
+} diff --git a/arch/sh/include/asm/cache.h b/arch/sh/include/asm/cache.h index 6ffab4d..24941b3 100644 --- a/arch/sh/include/asm/cache.h +++ b/arch/sh/include/asm/cache.h @@ -10,27 +10,9 @@ int cache_control(unsigned int cmd); struct __large_struct { unsigned long buf[100]; }; #define __m(x) (*(struct __large_struct *)(x))
-void dcache_wback_range(u32 start, u32 end) -{
- u32 v;
- start &= ~(L1_CACHE_BYTES - 1);
- for (v = start; v < end; v += L1_CACHE_BYTES) {
- asm volatile ("ocbwb %0" : /* no output */
- : "m" (__m(v)));
- }
-}
-void dcache_invalid_range(u32 start, u32 end) -{
- u32 v;
- start &= ~(L1_CACHE_BYTES - 1);
- for (v = start; v < end; v += L1_CACHE_BYTES) {
- asm volatile ("ocbi %0" : /* no output */
- : "m" (__m(v)));
- }
-} +void dcache_wback_range(u32 start, u32 end); +void dcache_invalid_range(u32 start, u32 end);
#else
/*
1.7.6.1