diff options
author | Wolfgang Denk <wd@denx.de> | 2007-03-22 00:00:03 +0100 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2007-03-22 00:00:03 +0100 |
commit | a17824c749aac3df0bbb528bb5d33af68296b0b1 (patch) | |
tree | 399efb15b55d6992279eef98fa6878852d403352 /lib_blackfin/cache.c | |
parent | 2a8dfe08359a1b663418b2faa1da1d7bce34d302 (diff) | |
parent | b2777c087b5a564e9209988873da4ec749f85aad (diff) | |
download | talos-obmc-uboot-a17824c749aac3df0bbb528bb5d33af68296b0b1.tar.gz talos-obmc-uboot-a17824c749aac3df0bbb528bb5d33af68296b0b1.zip |
Merge with /home/wd/git/u-boot/custodian/u-boot-blackfin
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 847278d226..a15914b109 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; } |