diff options
author | Wolfgang Denk <wd@denx.de> | 2008-04-08 00:04:39 +0200 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2008-04-08 00:04:39 +0200 |
commit | 5c395393cc9b85b14c5481dbcab6b67b54f31622 (patch) | |
tree | 888e8cd55173a99f636b19e2813e3dfe6afe3d44 /include/asm-sh/cache.h | |
parent | e59af4b611408adcdfb5e19bc5194a7d1f8b4dc3 (diff) | |
parent | 280df59a8d62c6e74c281b1cb7e2052df4d6cb00 (diff) |
Merge branch 'master' of git://www.denx.de/git/u-boot-sh
Diffstat (limited to 'include/asm-sh/cache.h')
-rw-r--r-- | include/asm-sh/cache.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/include/asm-sh/cache.h b/include/asm-sh/cache.h new file mode 100644 index 0000000000..67474c7b44 --- /dev/null +++ b/include/asm-sh/cache.h @@ -0,0 +1,35 @@ +#ifndef __ASM_SH_CACHE_H +#define __ASM_SH_CACHE_H + +#if defined(CONFIG_SH4) || defined(CONFIG_SH4A) + +#define L1_CACHE_BYTES 32 +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))); + } +} +#endif /* CONFIG_SH4 || CONFIG_SH4A */ + +#endif /* __ASM_SH_CACHE_H */ |