This source file includes following definitions.
- flush_tlb_range
- flush_tlb_one
- tlb_flush_all
- flush_tlb_mm
- flush_tlb_page
- flush_tlb_kernel_range
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <linux/mm.h>
14 #include <linux/sched.h>
15 #include <asm/page.h>
16 #include <asm/hexagon_vm.h>
17
18
19
20
21
22
23
24
25 void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
26 unsigned long end)
27 {
28 struct mm_struct *mm = vma->vm_mm;
29
30 if (mm->context.ptbase == current->active_mm->context.ptbase)
31 __vmclrmap((void *)start, end - start);
32 }
33
34
35
36
37 void flush_tlb_one(unsigned long vaddr)
38 {
39 __vmclrmap((void *)vaddr, PAGE_SIZE);
40 }
41
42
43
44
45
46
47 void tlb_flush_all(void)
48 {
49
50 __vmclrmap(0, 0xffff0000);
51 }
52
53
54
55
56 void flush_tlb_mm(struct mm_struct *mm)
57 {
58
59 if (current->active_mm->context.ptbase == mm->context.ptbase)
60 tlb_flush_all();
61 }
62
63
64
65
66 void flush_tlb_page(struct vm_area_struct *vma, unsigned long vaddr)
67 {
68 struct mm_struct *mm = vma->vm_mm;
69
70 if (mm->context.ptbase == current->active_mm->context.ptbase)
71 __vmclrmap((void *)vaddr, PAGE_SIZE);
72 }
73
74
75
76
77
78 void flush_tlb_kernel_range(unsigned long start, unsigned long end)
79 {
80 __vmclrmap((void *)start, end - start);
81 }