X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Fasm-parisc%2Ftlbflush.h;h=b72ec66db699e56f0985ebd6d88d82a7ceb14411;hb=cdf7da899d840d47e075ff3bd761290653c68b77;hp=ae2d120085462d2266b23e153d92e253aa58561a;hpb=d6ce8626dbc7d277d29b62e31c24ce777c60546b;p=linux-2.6 diff --git a/include/asm-parisc/tlbflush.h b/include/asm-parisc/tlbflush.h index ae2d120085..b72ec66db6 100644 --- a/include/asm-parisc/tlbflush.h +++ b/include/asm-parisc/tlbflush.h @@ -4,6 +4,7 @@ /* TLB flushing routines.... */ #include +#include #include @@ -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) {