Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) | |
3 | * Licensed under the GPL | |
4 | */ | |
5 | ||
6 | #ifndef __UM_TLBFLUSH_H | |
7 | #define __UM_TLBFLUSH_H | |
8 | ||
9 | #include <linux/mm.h> | |
16dd07bc | 10 | #include "choose-mode.h" |
1da177e4 LT |
11 | |
12 | /* | |
13 | * TLB flushing: | |
14 | * | |
15 | * - flush_tlb() flushes the current mm struct TLBs | |
16 | * - flush_tlb_all() flushes all processes TLBs | |
17 | * - flush_tlb_mm(mm) flushes the specified mm context TLB's | |
18 | * - flush_tlb_page(vma, vmaddr) flushes one page | |
19 | * - flush_tlb_kernel_vm() flushes the kernel vm area | |
20 | * - flush_tlb_range(vma, start, end) flushes a range of pages | |
21 | * - flush_tlb_pgtables(mm, start, end) flushes a range of page tables | |
22 | */ | |
23 | ||
24 | extern void flush_tlb_all(void); | |
25 | extern void flush_tlb_mm(struct mm_struct *mm); | |
26 | extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, | |
27 | unsigned long end); | |
16dd07bc JD |
28 | extern void flush_tlb_page_skas(struct vm_area_struct *vma, |
29 | unsigned long address); | |
30 | ||
31 | static inline void flush_tlb_page(struct vm_area_struct *vma, | |
32 | unsigned long address) | |
33 | { | |
34 | address &= PAGE_MASK; | |
35 | ||
36 | CHOOSE_MODE(flush_tlb_range(vma, address, address + PAGE_SIZE), | |
37 | flush_tlb_page_skas(vma, address)); | |
38 | } | |
39 | ||
1da177e4 LT |
40 | extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr); |
41 | extern void flush_tlb_kernel_vm(void); | |
42 | extern void flush_tlb_kernel_range(unsigned long start, unsigned long end); | |
43 | extern void __flush_tlb_one(unsigned long addr); | |
44 | ||
45 | static inline void flush_tlb_pgtables(struct mm_struct *mm, | |
46 | unsigned long start, unsigned long end) | |
47 | { | |
48 | } | |
49 | ||
50 | #endif |