]> err.no Git - linux-2.6/blobdiff - include/asm-parisc/tlbflush.h
sh: Fix DMAC base address for SH7709S
[linux-2.6] / include / asm-parisc / tlbflush.h
index ae2d120085462d2266b23e153d92e253aa58561a..b72ec66db699e56f0985ebd6d88d82a7ceb14411 100644 (file)
@@ -4,6 +4,7 @@
 /* TLB flushing routines.... */
 
 #include <linux/mm.h>
+#include <linux/sched.h>
 #include <asm/mmu_context.h>
 
 
@@ -39,25 +40,23 @@ extern void flush_tlb_all_local(void *);
  * etc. do not do that).
  */
 
-static inline void __flush_tlb_mm(void *mmv)
-{
-       struct mm_struct *mm = (struct mm_struct *)mmv;
-       if (mm == current->active_mm)
-               load_context(mm->context);
-}
-
 static inline void flush_tlb_mm(struct mm_struct *mm)
 {
-       if (mm->context != 0)
-               free_sid(mm->context);
-       mm->context = alloc_sid();
-       on_each_cpu(__flush_tlb_mm, mm, 1, 1);
-}
+       BUG_ON(mm == &init_mm); /* Should never happen */
 
-extern __inline__ void flush_tlb_pgtables(struct mm_struct *mm, unsigned long start, unsigned long end)
-{
+#ifdef CONFIG_SMP
+       flush_tlb_all();
+#else
+       if (mm) {
+               if (mm->context != 0)
+                       free_sid(mm->context);
+               mm->context = alloc_sid();
+               if (mm == current->active_mm)
+                       load_context(mm->context);
+       }
+#endif
 }
+
 static inline void flush_tlb_page(struct vm_area_struct *vma,
        unsigned long addr)
 {