summaryrefslogtreecommitdiffstats
path: root/include/asm-m68k/pgtable.h
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1999-06-13 16:29:25 +0000
committerRalf Baechle <ralf@linux-mips.org>1999-06-13 16:29:25 +0000
commitdb7d4daea91e105e3859cf461d7e53b9b77454b2 (patch)
tree9bb65b95440af09e8aca63abe56970dd3360cc57 /include/asm-m68k/pgtable.h
parent9c1c01ead627bdda9211c9abd5b758d6c687d8ac (diff)
Merge with Linux 2.2.8.
Diffstat (limited to 'include/asm-m68k/pgtable.h')
-rw-r--r--include/asm-m68k/pgtable.h22
1 files changed, 18 insertions, 4 deletions
diff --git a/include/asm-m68k/pgtable.h b/include/asm-m68k/pgtable.h
index a3487fb9d..1e6f317ee 100644
--- a/include/asm-m68k/pgtable.h
+++ b/include/asm-m68k/pgtable.h
@@ -507,6 +507,7 @@ extern inline void SET_PAGE_DIR(struct task_struct * tsk, pgd_t * pgdir)
if (tsk == current) {
if (CPU_IS_040_OR_060)
__asm__ __volatile__ (".chip 68040\n\t"
+ "pflushan\n\t"
"movec %0,%%urp\n\t"
".chip 68k"
: : "r" (tsk->tss.crp[1]));
@@ -514,10 +515,22 @@ extern inline void SET_PAGE_DIR(struct task_struct * tsk, pgd_t * pgdir)
unsigned long tmp;
__asm__ __volatile__ ("movec %%cacr,%0\n\t"
"orw #0x0808,%0\n\t"
- "movec %0,%%cacr\n\t"
- "pmove %1,%%crp\n\t"
- : "=d" (tmp)
- : "m" (tsk->tss.crp[0]));
+ "movec %0,%%cacr"
+ : "=d" (tmp));
+ /* For a 030-only kernel, avoid flushing the whole
+ ATC, we only need to flush the user entries.
+ The 68851 does this by itself. Avoid a runtime
+ check here. */
+ __asm__ __volatile__ (
+#ifdef CPU_M68030_ONLY
+ ".chip 68030\n\t"
+ "pmovefd %0,%%crp\n\t"
+ ".chip 68k\n\t"
+ "pflush #0,#4"
+#else
+ "pmove %0,%%crp"
+#endif
+ : : "m" (tsk->tss.crp[0]));
}
}
}
@@ -813,5 +826,6 @@ extern inline void update_mmu_cache(struct vm_area_struct * vma,
/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
#define PageSkip(page) (0)
+#define kern_addr_valid(addr) (1)
#endif /* _M68K_PGTABLE_H */