···1414#include <asm/tlbflush.h>1515#include <asm/cacheflush.h>16161717-void flush_tlb_page(struct vm_area_struct *vma, unsigned long page)1717+void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)1818{1919 unsigned int cpu = smp_processor_id();2020···3131 saved_asid = get_asid();3232 set_asid(asid);3333 }3434- __flush_tlb_page(asid, page);3434+ flush_tlb_one(asid, page);3535 if (saved_asid != MMU_NO_ASID)3636 set_asid(saved_asid);3737 local_irq_restore(flags);3838 }3939}40404141-void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,4242- unsigned long end)4141+void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,4242+ unsigned long end)4343{4444 struct mm_struct *mm = vma->vm_mm;4545 unsigned int cpu = smp_processor_id();···6767 set_asid(asid);6868 }6969 while (start < end) {7070- __flush_tlb_page(asid, start);7070+ flush_tlb_one(asid, start);7171 start += PAGE_SIZE;7272 }7373 if (saved_asid != MMU_NO_ASID)···7777 }7878}79798080-void flush_tlb_kernel_range(unsigned long start, unsigned long end)8080+void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)8181{8282 unsigned int cpu = smp_processor_id();8383 unsigned long flags;···8686 local_irq_save(flags);8787 size = (end - start + (PAGE_SIZE - 1)) >> PAGE_SHIFT;8888 if (size > (MMU_NTLB_ENTRIES/4)) { /* Too many TLB to flush */8989- flush_tlb_all();8989+ local_flush_tlb_all();9090 } else {9191 unsigned long asid;9292 unsigned long saved_asid = get_asid();···9797 end &= PAGE_MASK;9898 set_asid(asid);9999 while (start < end) {100100- __flush_tlb_page(asid, start);100100+ flush_tlb_one(asid, start);101101 start += PAGE_SIZE;102102 }103103 set_asid(saved_asid);···105105 local_irq_restore(flags);106106}107107108108-void flush_tlb_mm(struct mm_struct *mm)108108+void local_flush_tlb_mm(struct mm_struct *mm)109109{110110 unsigned int cpu = smp_processor_id();111111···122122 }123123}124124125125-void flush_tlb_all(void)125125+void local_flush_tlb_all(void)126126{127127 unsigned long flags, status;128128
+6-13
arch/sh/mm/tlb-nommu.c
···1313/*1414 * Nothing too terribly exciting here ..1515 */1616-1717-void flush_tlb(void)1616+void local_flush_tlb_all(void)1817{1918 BUG();2019}21202222-void flush_tlb_all(void)2121+void local_flush_tlb_mm(struct mm_struct *mm)2322{2423 BUG();2524}26252727-void flush_tlb_mm(struct mm_struct *mm)2828-{2929- BUG();3030-}3131-3232-void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,2626+void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,3327 unsigned long end)3428{3529 BUG();3630}37313838-void flush_tlb_page(struct vm_area_struct *vma, unsigned long page)3232+void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)3933{4034 BUG();4135}42364343-void __flush_tlb_page(unsigned long asid, unsigned long page)3737+void local_flush_tlb_one(unsigned long asid, unsigned long page)4438{4539 BUG();4640}47414848-void flush_tlb_kernel_range(unsigned long start, unsigned long end)4242+void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)4943{5044 BUG();5145}···4955{5056 BUG();5157}5252-
+1-1
arch/sh/mm/tlb-sh3.c
···1212#include <asm/system.h>1313#include <asm/mmu_context.h>14141515-void __flush_tlb_page(unsigned long asid, unsigned long page)1515+void local_flush_tlb_one(unsigned long asid, unsigned long page)1616{1717 unsigned long addr, data;1818 int i, ways = MMU_NTLB_WAYS;
+1-1
arch/sh/mm/tlb-sh4.c
···1212#include <asm/system.h>1313#include <asm/mmu_context.h>14141515-void __flush_tlb_page(unsigned long asid, unsigned long page)1515+void local_flush_tlb_one(unsigned long asid, unsigned long page)1616{1717 unsigned long addr, data;1818
+31-7
include/asm-sh/tlbflush.h
···44/*55 * TLB flushing:66 *77- * - flush_tlb() flushes the current mm struct TLBs87 * - flush_tlb_all() flushes all processes TLBs98 * - flush_tlb_mm(mm) flushes the specified mm context TLB's109 * - flush_tlb_page(vma, vmaddr) flushes one page···1112 * - flush_tlb_kernel_range(start, end) flushes a range of kernel pages1213 * - flush_tlb_pgtables(mm, start, end) flushes a range of page tables1314 */1515+extern void local_flush_tlb_all(void);1616+extern void local_flush_tlb_mm(struct mm_struct *mm);1717+extern void local_flush_tlb_range(struct vm_area_struct *vma,1818+ unsigned long start,1919+ unsigned long end);2020+extern void local_flush_tlb_page(struct vm_area_struct *vma,2121+ unsigned long page);2222+extern void local_flush_tlb_kernel_range(unsigned long start,2323+ unsigned long end);2424+extern void local_flush_tlb_one(unsigned long asid, unsigned long page);14251515-extern void flush_tlb(void);2626+#ifdef CONFIG_SMP2727+1628extern void flush_tlb_all(void);1729extern void flush_tlb_mm(struct mm_struct *mm);1830extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,1931 unsigned long end);2032extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long page);2121-extern void __flush_tlb_page(unsigned long asid, unsigned long page);3333+extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);3434+extern void flush_tlb_one(unsigned long asid, unsigned long page);3535+3636+#else3737+3838+#define flush_tlb_all() local_flush_tlb_all()3939+#define flush_tlb_mm(mm) local_flush_tlb_mm(mm)4040+#define flush_tlb_page(vma, page) local_flush_tlb_page(vma, page)4141+#define flush_tlb_one(asid, page) local_flush_tlb_one(asid, page)4242+4343+#define flush_tlb_range(vma, start, end) \4444+ local_flush_tlb_range(vma, start, end)4545+4646+#define flush_tlb_kernel_range(start, end) \4747+ local_flush_tlb_kernel_range(start, end)4848+4949+#endif /* CONFIG_SMP */22502351static inline void flush_tlb_pgtables(struct mm_struct *mm,2452 unsigned long start, unsigned long end)2525-{ /* Nothing to do */5353+{5454+ /* Nothing to do */2655}2727-2828-extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);2929-3056#endif /* __ASM_SH_TLBFLUSH_H */