cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

tlbflush.h (1394B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * Copyright (C) 2010 Tobias Klauser <tklauser@distanz.ch>
      4 */
      5
      6#ifndef _ASM_NIOS2_TLBFLUSH_H
      7#define _ASM_NIOS2_TLBFLUSH_H
      8
      9struct mm_struct;
     10
     11/*
     12 * TLB flushing:
     13 *
     14 *  - flush_tlb_all() flushes all processes TLB entries
     15 *  - flush_tlb_mm(mm) flushes the specified mm context TLB entries
     16 *  - flush_tlb_range(vma, start, end) flushes a range of pages
     17 *  - flush_tlb_page(vma, address) flushes a page
     18 *  - flush_tlb_kernel_range(start, end) flushes a range of kernel pages
     19 *  - flush_tlb_kernel_page(address) flushes a kernel page
     20 *
     21 *  - reload_tlb_page(vma, address, pte) flushes the TLB for address like
     22 *    flush_tlb_page, then replaces it with a TLB for pte.
     23 */
     24extern void flush_tlb_all(void);
     25extern void flush_tlb_mm(struct mm_struct *mm);
     26extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
     27			    unsigned long end);
     28extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
     29
     30static inline void flush_tlb_page(struct vm_area_struct *vma,
     31				  unsigned long address)
     32{
     33	flush_tlb_range(vma, address, address + PAGE_SIZE);
     34}
     35
     36static inline void flush_tlb_kernel_page(unsigned long address)
     37{
     38	flush_tlb_kernel_range(address, address + PAGE_SIZE);
     39}
     40
     41extern void reload_tlb_page(struct vm_area_struct *vma, unsigned long addr,
     42			    pte_t pte);
     43
     44#endif /* _ASM_NIOS2_TLBFLUSH_H */