1 /* 2 * Copyright (C) 2010 Tobias Klauser <tklauser@distanz.ch> 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 * 17 */ 18 19 #ifndef _ASM_NIOS2_TLBFLUSH_H 20 #define _ASM_NIOS2_TLBFLUSH_H 21 22 struct mm_struct; 23 24 /* 25 * TLB flushing: 26 * 27 * - flush_tlb_all() flushes all processes TLB entries 28 * - flush_tlb_mm(mm) flushes the specified mm context TLB entries 29 * - flush_tlb_range(vma, start, end) flushes a range of pages 30 * - flush_tlb_page(vma, address) flushes a page 31 * - flush_tlb_kernel_range(start, end) flushes a range of kernel pages 32 * - flush_tlb_kernel_page(address) flushes a kernel page 33 * 34 * - reload_tlb_page(vma, address, pte) flushes the TLB for address like 35 * flush_tlb_page, then replaces it with a TLB for pte. 36 */ 37 extern void flush_tlb_all(void); 38 extern void flush_tlb_mm(struct mm_struct *mm); 39 extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, 40 unsigned long end); 41 extern void flush_tlb_kernel_range(unsigned long start, unsigned long end); 42 43 static inline void flush_tlb_page(struct vm_area_struct *vma, 44 unsigned long address) 45 { 46 flush_tlb_range(vma, address, address + PAGE_SIZE); 47 } 48 49 static inline void flush_tlb_kernel_page(unsigned long address) 50 { 51 flush_tlb_kernel_range(address, address + PAGE_SIZE); 52 } 53 54 extern void reload_tlb_page(struct vm_area_struct *vma, unsigned long addr, 55 pte_t pte); 56 57 #endif /* _ASM_NIOS2_TLBFLUSH_H */ 58