diff mbox

[U-Boot] sh: avoid multiple definition errors with cache funcs

Message ID 1319705999-24600-1-git-send-email-vapier@gentoo.org
State Accepted
Commit 172106433b68bfcc25d025fca346021f005166b7
Delegated to: Nobuhiro Iwamatsu
Headers show

Commit Message

Mike Frysinger Oct. 27, 2011, 8:59 a.m. UTC
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(-)

Comments

Nobuhiro Iwamatsu Nov. 8, 2011, 5:38 a.m. UTC | #1
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
>
>
diff mbox

Patch

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
 
 /*