diff options
-rw-r--r-- | arch/m68k/include/asm/tlbflush.h | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/arch/m68k/include/asm/tlbflush.h b/arch/m68k/include/asm/tlbflush.h index a6b4ed4fc90f..965ea35c9a40 100644 --- a/arch/m68k/include/asm/tlbflush.h +++ b/arch/m68k/include/asm/tlbflush.h | |||
@@ -5,10 +5,13 @@ | |||
5 | #ifndef CONFIG_SUN3 | 5 | #ifndef CONFIG_SUN3 |
6 | 6 | ||
7 | #include <asm/current.h> | 7 | #include <asm/current.h> |
8 | #include <asm/mcfmmu.h> | ||
8 | 9 | ||
9 | static inline void flush_tlb_kernel_page(void *addr) | 10 | static inline void flush_tlb_kernel_page(void *addr) |
10 | { | 11 | { |
11 | if (CPU_IS_040_OR_060) { | 12 | if (CPU_IS_COLDFIRE) { |
13 | mmu_write(MMUOR, MMUOR_CNL); | ||
14 | } else if (CPU_IS_040_OR_060) { | ||
12 | mm_segment_t old_fs = get_fs(); | 15 | mm_segment_t old_fs = get_fs(); |
13 | set_fs(KERNEL_DS); | 16 | set_fs(KERNEL_DS); |
14 | __asm__ __volatile__(".chip 68040\n\t" | 17 | __asm__ __volatile__(".chip 68040\n\t" |
@@ -25,12 +28,15 @@ static inline void flush_tlb_kernel_page(void *addr) | |||
25 | */ | 28 | */ |
26 | static inline void __flush_tlb(void) | 29 | static inline void __flush_tlb(void) |
27 | { | 30 | { |
28 | if (CPU_IS_040_OR_060) | 31 | if (CPU_IS_COLDFIRE) { |
32 | mmu_write(MMUOR, MMUOR_CNL); | ||
33 | } else if (CPU_IS_040_OR_060) { | ||
29 | __asm__ __volatile__(".chip 68040\n\t" | 34 | __asm__ __volatile__(".chip 68040\n\t" |
30 | "pflushan\n\t" | 35 | "pflushan\n\t" |
31 | ".chip 68k"); | 36 | ".chip 68k"); |
32 | else if (CPU_IS_020_OR_030) | 37 | } else if (CPU_IS_020_OR_030) { |
33 | __asm__ __volatile__("pflush #0,#4"); | 38 | __asm__ __volatile__("pflush #0,#4"); |
39 | } | ||
34 | } | 40 | } |
35 | 41 | ||
36 | static inline void __flush_tlb040_one(unsigned long addr) | 42 | static inline void __flush_tlb040_one(unsigned long addr) |
@@ -43,7 +49,9 @@ static inline void __flush_tlb040_one(unsigned long addr) | |||
43 | 49 | ||
44 | static inline void __flush_tlb_one(unsigned long addr) | 50 | static inline void __flush_tlb_one(unsigned long addr) |
45 | { | 51 | { |
46 | if (CPU_IS_040_OR_060) | 52 | if (CPU_IS_COLDFIRE) |
53 | mmu_write(MMUOR, MMUOR_CNL); | ||
54 | else if (CPU_IS_040_OR_060) | ||
47 | __flush_tlb040_one(addr); | 55 | __flush_tlb040_one(addr); |
48 | else if (CPU_IS_020_OR_030) | 56 | else if (CPU_IS_020_OR_030) |
49 | __asm__ __volatile__("pflush #0,#4,(%0)" : : "a" (addr)); | 57 | __asm__ __volatile__("pflush #0,#4,(%0)" : : "a" (addr)); |
@@ -56,12 +64,15 @@ static inline void __flush_tlb_one(unsigned long addr) | |||
56 | */ | 64 | */ |
57 | static inline void flush_tlb_all(void) | 65 | static inline void flush_tlb_all(void) |
58 | { | 66 | { |
59 | if (CPU_IS_040_OR_060) | 67 | if (CPU_IS_COLDFIRE) { |
68 | mmu_write(MMUOR, MMUOR_CNL); | ||
69 | } else if (CPU_IS_040_OR_060) { | ||
60 | __asm__ __volatile__(".chip 68040\n\t" | 70 | __asm__ __volatile__(".chip 68040\n\t" |
61 | "pflusha\n\t" | 71 | "pflusha\n\t" |
62 | ".chip 68k"); | 72 | ".chip 68k"); |
63 | else if (CPU_IS_020_OR_030) | 73 | } else if (CPU_IS_020_OR_030) { |
64 | __asm__ __volatile__("pflusha"); | 74 | __asm__ __volatile__("pflusha"); |
75 | } | ||
65 | } | 76 | } |
66 | 77 | ||
67 | static inline void flush_tlb_mm(struct mm_struct *mm) | 78 | static inline void flush_tlb_mm(struct mm_struct *mm) |