aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-sh
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2006-12-25 05:28:54 -0500
committerPaul Mundt <lethal@linux-sh.org>2007-02-12 20:54:45 -0500
commitea9af69481730e3d712104dfd549ba6c8ddd29f1 (patch)
treeb6b0369a186f3df1b8061791c1cbc2e7fd161104 /include/asm-sh
parent11c1965687b0a472add948d4240dfe65a2fcb298 (diff)
sh: Local TLB flushing variants for SMP prep.
Rename the existing flush routines to local_ variants for use by the IPI-backed global flush routines on SMP. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'include/asm-sh')
-rw-r--r--include/asm-sh/tlbflush.h38
1 files changed, 31 insertions, 7 deletions
diff --git a/include/asm-sh/tlbflush.h b/include/asm-sh/tlbflush.h
index 28c073b0fbab..455fb8da441e 100644
--- a/include/asm-sh/tlbflush.h
+++ b/include/asm-sh/tlbflush.h
@@ -4,7 +4,6 @@
4/* 4/*
5 * TLB flushing: 5 * TLB flushing:
6 * 6 *
7 * - flush_tlb() flushes the current mm struct TLBs
8 * - flush_tlb_all() flushes all processes TLBs 7 * - flush_tlb_all() flushes all processes TLBs
9 * - flush_tlb_mm(mm) flushes the specified mm context TLB's 8 * - flush_tlb_mm(mm) flushes the specified mm context TLB's
10 * - flush_tlb_page(vma, vmaddr) flushes one page 9 * - flush_tlb_page(vma, vmaddr) flushes one page
@@ -12,20 +11,45 @@
12 * - flush_tlb_kernel_range(start, end) flushes a range of kernel pages 11 * - flush_tlb_kernel_range(start, end) flushes a range of kernel pages
13 * - flush_tlb_pgtables(mm, start, end) flushes a range of page tables 12 * - flush_tlb_pgtables(mm, start, end) flushes a range of page tables
14 */ 13 */
14extern void local_flush_tlb_all(void);
15extern void local_flush_tlb_mm(struct mm_struct *mm);
16extern void local_flush_tlb_range(struct vm_area_struct *vma,
17 unsigned long start,
18 unsigned long end);
19extern void local_flush_tlb_page(struct vm_area_struct *vma,
20 unsigned long page);
21extern void local_flush_tlb_kernel_range(unsigned long start,
22 unsigned long end);
23extern void local_flush_tlb_one(unsigned long asid, unsigned long page);
24
25#ifdef CONFIG_SMP
15 26
16extern void flush_tlb(void);
17extern void flush_tlb_all(void); 27extern void flush_tlb_all(void);
18extern void flush_tlb_mm(struct mm_struct *mm); 28extern void flush_tlb_mm(struct mm_struct *mm);
19extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, 29extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
20 unsigned long end); 30 unsigned long end);
21extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long page); 31extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
22extern void __flush_tlb_page(unsigned long asid, unsigned long page); 32extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
33extern void flush_tlb_one(unsigned long asid, unsigned long page);
34
35#else
36
37#define flush_tlb_all() local_flush_tlb_all()
38#define flush_tlb_mm(mm) local_flush_tlb_mm(mm)
39#define flush_tlb_page(vma, page) local_flush_tlb_page(vma, page)
40#define flush_tlb_one(asid, page) local_flush_tlb_one(asid, page)
41
42#define flush_tlb_range(vma, start, end) \
43 local_flush_tlb_range(vma, start, end)
44
45#define flush_tlb_kernel_range(start, end) \
46 local_flush_tlb_kernel_range(start, end)
47
48#endif /* CONFIG_SMP */
23 49
24static inline void flush_tlb_pgtables(struct mm_struct *mm, 50static inline void flush_tlb_pgtables(struct mm_struct *mm,
25 unsigned long start, unsigned long end) 51 unsigned long start, unsigned long end)
26{ /* Nothing to do */ 52{
53 /* Nothing to do */
27} 54}
28
29extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
30
31#endif /* __ASM_SH_TLBFLUSH_H */ 55#endif /* __ASM_SH_TLBFLUSH_H */