diff options
Diffstat (limited to 'lib_blackfin/cache.c')
| -rw-r--r-- | lib_blackfin/cache.c | 29 | 
1 files changed, 20 insertions, 9 deletions
| diff --git a/lib_blackfin/cache.c b/lib_blackfin/cache.c index 847278d22..a15914b10 100644 --- a/lib_blackfin/cache.c +++ b/lib_blackfin/cache.c @@ -26,15 +26,26 @@   */  /* for now: just dummy functions to satisfy the linker */ -extern void blackfin_icache_range (unsigned long *, unsigned long *); -extern void blackfin_dcache_range (unsigned long *, unsigned long *); -void flush_cache (unsigned long dummy1, unsigned long dummy2) +#include <config.h> +#include <common.h> +#include <asm/blackfin.h> + +extern void blackfin_icache_flush_range(unsigned long, unsigned long); +extern void blackfin_dcache_flush_range(unsigned long, unsigned long); + +void flush_cache(unsigned long dummy1, unsigned long dummy2)  { -	if (icache_status ()) { -		blackfin_icache_flush_range (dummy1, dummy1 + dummy2); -	} -	if (dcache_status ()) { -		blackfin_dcache_flush_range (dummy1, dummy1 + dummy2); -	} +	if ((dummy1 >= L1_ISRAM) && (dummy1 < L1_ISRAM_END)) +		return; +	if ((dummy1 >= DATA_BANKA_SRAM) && (dummy1 < DATA_BANKA_SRAM_END)) +		return; +	if ((dummy1 >= DATA_BANKB_SRAM) && (dummy1 < DATA_BANKB_SRAM_END)) +		return; + +	if (icache_status()) +		blackfin_icache_flush_range(dummy1, dummy1 + dummy2); +	if (dcache_status()) +		blackfin_dcache_flush_range(dummy1, dummy1 + dummy2); +  	return;  } |