162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci#ifndef __ASM_TLBFLUSH_H
462306a36Sopenharmony_ci#define __ASM_TLBFLUSH_H
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci/*
762306a36Sopenharmony_ci * TLB flushing:
862306a36Sopenharmony_ci *
962306a36Sopenharmony_ci *  - flush_tlb_all() flushes all processes TLB entries
1062306a36Sopenharmony_ci *  - flush_tlb_mm(mm) flushes the specified mm context TLB entries
1162306a36Sopenharmony_ci *  - flush_tlb_page(vma, vmaddr) flushes one page
1262306a36Sopenharmony_ci *  - flush_tlb_range(vma, start, end) flushes a range of pages
1362306a36Sopenharmony_ci *  - flush_tlb_kernel_range(start, end) flushes a range of kernel pages
1462306a36Sopenharmony_ci */
1562306a36Sopenharmony_ciextern void flush_tlb_all(void);
1662306a36Sopenharmony_ciextern void flush_tlb_mm(struct mm_struct *mm);
1762306a36Sopenharmony_ciextern void flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
1862306a36Sopenharmony_ciextern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
1962306a36Sopenharmony_ci			    unsigned long end);
2062306a36Sopenharmony_ciextern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciextern void flush_tlb_one(unsigned long vaddr);
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci#endif
25