aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/include/asm/tlb.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm64/include/asm/tlb.h')
-rw-r--r--arch/arm64/include/asm/tlb.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm64/include/asm/tlb.h b/arch/arm64/include/asm/tlb.h
index 80e2c08900d6..62731ef9749a 100644
--- a/arch/arm64/include/asm/tlb.h
+++ b/arch/arm64/include/asm/tlb.h
@@ -91,7 +91,7 @@ static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte,
91 tlb_remove_page(tlb, pte); 91 tlb_remove_page(tlb, pte);
92} 92}
93 93
94#ifndef CONFIG_ARM64_64K_PAGES 94#if CONFIG_ARM64_PGTABLE_LEVELS > 2
95static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp, 95static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp,
96 unsigned long addr) 96 unsigned long addr)
97{ 97{
@@ -100,6 +100,15 @@ static inline void __pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp,
100} 100}
101#endif 101#endif
102 102
103#if CONFIG_ARM64_PGTABLE_LEVELS > 3
104static inline void __pud_free_tlb(struct mmu_gather *tlb, pud_t *pudp,
105 unsigned long addr)
106{
107 tlb_add_flush(tlb, addr);
108 tlb_remove_page(tlb, virt_to_page(pudp));
109}
110#endif
111
103static inline void __tlb_remove_pmd_tlb_entry(struct mmu_gather *tlb, pmd_t *pmdp, 112static inline void __tlb_remove_pmd_tlb_entry(struct mmu_gather *tlb, pmd_t *pmdp,
104 unsigned long address) 113 unsigned long address)
105{ 114{