diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/sh/cpu/sh4/cache.c | 22 | ||||
| -rw-r--r-- | arch/sh/include/asm/cache.h | 22 | 
2 files changed, 24 insertions, 20 deletions
| diff --git a/arch/sh/cpu/sh4/cache.c b/arch/sh/cpu/sh4/cache.c index 377005cd4..dc75e3981 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 6ffab4d37..24941b301 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; +void dcache_wback_range(u32 start, u32 end); +void dcache_invalid_range(u32 start, u32 end); -	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))); -	} -}  #else  /* |