diff options
Diffstat (limited to 'arch/arm/include/asm/tlb.h')
-rw-r--r-- | arch/arm/include/asm/tlb.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/arm/include/asm/tlb.h b/arch/arm/include/asm/tlb.h index 0baf7f0d9394..f1a0dace3efe 100644 --- a/arch/arm/include/asm/tlb.h +++ b/arch/arm/include/asm/tlb.h | |||
@@ -98,15 +98,25 @@ static inline void __tlb_alloc_page(struct mmu_gather *tlb) | |||
98 | } | 98 | } |
99 | } | 99 | } |
100 | 100 | ||
101 | static inline void tlb_flush_mmu(struct mmu_gather *tlb) | 101 | static inline void tlb_flush_mmu_tlbonly(struct mmu_gather *tlb) |
102 | { | 102 | { |
103 | tlb_flush(tlb); | 103 | tlb_flush(tlb); |
104 | } | ||
105 | |||
106 | static inline void tlb_flush_mmu_free(struct mmu_gather *tlb) | ||
107 | { | ||
104 | free_pages_and_swap_cache(tlb->pages, tlb->nr); | 108 | free_pages_and_swap_cache(tlb->pages, tlb->nr); |
105 | tlb->nr = 0; | 109 | tlb->nr = 0; |
106 | if (tlb->pages == tlb->local) | 110 | if (tlb->pages == tlb->local) |
107 | __tlb_alloc_page(tlb); | 111 | __tlb_alloc_page(tlb); |
108 | } | 112 | } |
109 | 113 | ||
114 | static inline void tlb_flush_mmu(struct mmu_gather *tlb) | ||
115 | { | ||
116 | tlb_flush_mmu_tlbonly(tlb); | ||
117 | tlb_flush_mmu_free(tlb); | ||
118 | } | ||
119 | |||
110 | static inline void | 120 | static inline void |
111 | tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end) | 121 | tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end) |
112 | { | 122 | { |