diff options
author | Greg Ungerer <gerg@snapgear.com> | 2005-09-12 21:14:08 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-12 23:04:15 -0400 |
commit | 962d69ed6f5c911fbdb23ef2304e3a5903e5ccbb (patch) | |
tree | 2c256305537c01211ec2dcc8ea9a608f66603afe /include/asm-m68knommu | |
parent | 35d91f75c2c9548e606e813413f03c5cc35da969 (diff) |
[PATCH] m68knommu: fix cache actions for ColdFire 5249, 527x and 528x processors
Add better support for flushing the cache's on some ColdFire processors.
The 5249 cache code is now enabled (it was stubbed out), it really is
needed. Add support for the 527x and 528x families - we only use the
simple instruction cache on them.
Signed-off-by: Greg Ungerer <gerg@uclinux.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/asm-m68knommu')
-rw-r--r-- | include/asm-m68knommu/cacheflush.h | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/include/asm-m68knommu/cacheflush.h b/include/asm-m68knommu/cacheflush.h index aa7a2ffa41af..026bbc9565b4 100644 --- a/include/asm-m68knommu/cacheflush.h +++ b/include/asm-m68knommu/cacheflush.h | |||
@@ -2,23 +2,23 @@ | |||
2 | #define _M68KNOMMU_CACHEFLUSH_H | 2 | #define _M68KNOMMU_CACHEFLUSH_H |
3 | 3 | ||
4 | /* | 4 | /* |
5 | * (C) Copyright 2000-2002, Greg Ungerer <gerg@snapgear.com> | 5 | * (C) Copyright 2000-2004, Greg Ungerer <gerg@snapgear.com> |
6 | */ | 6 | */ |
7 | #include <linux/mm.h> | 7 | #include <linux/mm.h> |
8 | 8 | ||
9 | #define flush_cache_all() __flush_cache_all() | 9 | #define flush_cache_all() __flush_cache_all() |
10 | #define flush_cache_mm(mm) do { } while (0) | 10 | #define flush_cache_mm(mm) do { } while (0) |
11 | #define flush_cache_range(vma, start, end) do { } while (0) | 11 | #define flush_cache_range(vma, start, end) __flush_cache_all() |
12 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | 12 | #define flush_cache_page(vma, vmaddr) do { } while (0) |
13 | #define flush_dcache_range(start,len) do { } while (0) | 13 | #define flush_dcache_range(start,len) __flush_cache_all() |
14 | #define flush_dcache_page(page) do { } while (0) | 14 | #define flush_dcache_page(page) do { } while (0) |
15 | #define flush_dcache_mmap_lock(mapping) do { } while (0) | 15 | #define flush_dcache_mmap_lock(mapping) do { } while (0) |
16 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) | 16 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) |
17 | #define flush_icache_range(start,len) __flush_cache_all() | 17 | #define flush_icache_range(start,len) __flush_cache_all() |
18 | #define flush_icache_page(vma,pg) do { } while (0) | 18 | #define flush_icache_page(vma,pg) do { } while (0) |
19 | #define flush_icache_user_range(vma,pg,adr,len) do { } while (0) | 19 | #define flush_icache_user_range(vma,pg,adr,len) do { } while (0) |
20 | #define flush_cache_vmap(start, end) flush_cache_all() | 20 | #define flush_cache_vmap(start, end) do { } while (0) |
21 | #define flush_cache_vunmap(start, end) flush_cache_all() | 21 | #define flush_cache_vunmap(start, end) do { } while (0) |
22 | 22 | ||
23 | #define copy_to_user_page(vma, page, vaddr, dst, src, len) \ | 23 | #define copy_to_user_page(vma, page, vaddr, dst, src, len) \ |
24 | memcpy(dst, src, len) | 24 | memcpy(dst, src, len) |
@@ -50,22 +50,23 @@ extern inline void __flush_cache_all(void) | |||
50 | "movec %%d0,%%CACR\n\t" | 50 | "movec %%d0,%%CACR\n\t" |
51 | : : : "d0", "a0" ); | 51 | : : : "d0", "a0" ); |
52 | #endif /* CONFIG_M5407 */ | 52 | #endif /* CONFIG_M5407 */ |
53 | #ifdef CONFIG_M5272 | 53 | #if defined(CONFIG_M527x) || defined(CONFIG_M528x) |
54 | __asm__ __volatile__ ( | 54 | __asm__ __volatile__ ( |
55 | "movel #0x01000000, %%d0\n\t" | 55 | "movel #0x81400100, %%d0\n\t" |
56 | "movec %%d0, %%CACR\n\t" | ||
57 | "nop\n\t" | ||
58 | "movel #0x80000100, %%d0\n\t" | ||
59 | "movec %%d0, %%CACR\n\t" | 56 | "movec %%d0, %%CACR\n\t" |
60 | "nop\n\t" | 57 | "nop\n\t" |
61 | : : : "d0" ); | 58 | : : : "d0" ); |
62 | #endif /* CONFIG_M5272 */ | 59 | #endif /* CONFIG_M527x || CONFIG_M528x */ |
63 | #if 0 /* CONFIG_M5249 */ | 60 | #ifdef CONFIG_M5272 |
64 | __asm__ __volatile__ ( | 61 | __asm__ __volatile__ ( |
65 | "movel #0x01000000, %%d0\n\t" | 62 | "movel #0x01000000, %%d0\n\t" |
66 | "movec %%d0, %%CACR\n\t" | 63 | "movec %%d0, %%CACR\n\t" |
67 | "nop\n\t" | 64 | "nop\n\t" |
68 | "movel #0xa0000200, %%d0\n\t" | 65 | : : : "d0" ); |
66 | #endif /* CONFIG_M5272 */ | ||
67 | #if CONFIG_M5249 | ||
68 | __asm__ __volatile__ ( | ||
69 | "movel #0xa1000200, %%d0\n\t" | ||
69 | "movec %%d0, %%CACR\n\t" | 70 | "movec %%d0, %%CACR\n\t" |
70 | "nop\n\t" | 71 | "nop\n\t" |
71 | : : : "d0" ); | 72 | : : : "d0" ); |