tlb.h (cbecf716ca618fd44feda6bd9a64a8179d031fc5) | tlb.h (358d1c39c82afaed58778633f6ed76c8fe9dbf9c) |
---|---|
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * arch/arm/include/asm/tlb.h 4 * 5 * Copyright (C) 2002 Russell King 6 * 7 * Experimentation shows that on a StrongARM, it appears to be faster 8 * to use the "invalidate whole tlb" rather than "invalidate single --- 25 unchanged lines hidden (view full) --- 34 free_page_and_swap_cache((struct page *)_table); 35} 36 37#include <asm-generic/tlb.h> 38 39static inline void 40__pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte, unsigned long addr) 41{ | 1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * arch/arm/include/asm/tlb.h 4 * 5 * Copyright (C) 2002 Russell King 6 * 7 * Experimentation shows that on a StrongARM, it appears to be faster 8 * to use the "invalidate whole tlb" rather than "invalidate single --- 25 unchanged lines hidden (view full) --- 34 free_page_and_swap_cache((struct page *)_table); 35} 36 37#include <asm-generic/tlb.h> 38 39static inline void 40__pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte, unsigned long addr) 41{ |
42 pgtable_pte_page_dtor(pte); | 42 struct ptdesc *ptdesc = page_ptdesc(pte); |
43 | 43 |
44 pagetable_pte_dtor(ptdesc); 45 |
|
44#ifndef CONFIG_ARM_LPAE 45 /* 46 * With the classic ARM MMU, a pte page has two corresponding pmd 47 * entries, each covering 1MB. 48 */ 49 addr = (addr & PMD_MASK) + SZ_1M; 50 __tlb_adjust_range(tlb, addr - PAGE_SIZE, 2 * PAGE_SIZE); 51#endif 52 | 46#ifndef CONFIG_ARM_LPAE 47 /* 48 * With the classic ARM MMU, a pte page has two corresponding pmd 49 * entries, each covering 1MB. 50 */ 51 addr = (addr & PMD_MASK) + SZ_1M; 52 __tlb_adjust_range(tlb, addr - PAGE_SIZE, 2 * PAGE_SIZE); 53#endif 54 |
53 tlb_remove_table(tlb, pte); | 55 tlb_remove_ptdesc(tlb, ptdesc); |
54} 55 56static inline void 57__pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp, unsigned long addr) 58{ 59#ifdef CONFIG_ARM_LPAE | 56} 57 58static inline void 59__pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp, unsigned long addr) 60{ 61#ifdef CONFIG_ARM_LPAE |
60 struct page *page = virt_to_page(pmdp); | 62 struct ptdesc *ptdesc = virt_to_ptdesc(pmdp); |
61 | 63 |
62 pgtable_pmd_page_dtor(page); 63 tlb_remove_table(tlb, page); | 64 pagetable_pmd_dtor(ptdesc); 65 tlb_remove_ptdesc(tlb, ptdesc); |
64#endif 65} 66 67#endif /* CONFIG_MMU */ 68#endif | 66#endif 67} 68 69#endif /* CONFIG_MMU */ 70#endif |