Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v6.17-rc7 60 lines 1.3 kB view raw
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 9 * tlb" for this. 10 * 11 * This appears true for both the process fork+exit case, as well as 12 * the munmap-large-area case. 13 */ 14#ifndef __ASMARM_TLB_H 15#define __ASMARM_TLB_H 16 17#include <asm/cacheflush.h> 18 19#ifndef CONFIG_MMU 20 21#include <linux/pagemap.h> 22 23#define tlb_flush(tlb) ((void) tlb) 24 25#include <asm-generic/tlb.h> 26 27#else /* !CONFIG_MMU */ 28 29#include <asm/tlbflush.h> 30#include <asm-generic/tlb.h> 31 32static inline void 33__pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte, unsigned long addr) 34{ 35 struct ptdesc *ptdesc = page_ptdesc(pte); 36 37#ifndef CONFIG_ARM_LPAE 38 /* 39 * With the classic ARM MMU, a pte page has two corresponding pmd 40 * entries, each covering 1MB. 41 */ 42 addr = (addr & PMD_MASK) + SZ_1M; 43 __tlb_adjust_range(tlb, addr - PAGE_SIZE, 2 * PAGE_SIZE); 44#endif 45 46 tlb_remove_ptdesc(tlb, ptdesc); 47} 48 49static inline void 50__pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmdp, unsigned long addr) 51{ 52#ifdef CONFIG_ARM_LPAE 53 struct ptdesc *ptdesc = virt_to_ptdesc(pmdp); 54 55 tlb_remove_ptdesc(tlb, ptdesc); 56#endif 57} 58 59#endif /* CONFIG_MMU */ 60#endif