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 77b2555b52a894a2e39a42e43d993df875c46a6a 54 lines 1.7 kB view raw
1#ifndef _PPC64_TLBFLUSH_H 2#define _PPC64_TLBFLUSH_H 3 4/* 5 * TLB flushing: 6 * 7 * - flush_tlb_mm(mm) flushes the specified mm context TLB's 8 * - flush_tlb_page(vma, vmaddr) flushes one page 9 * - flush_tlb_page_nohash(vma, vmaddr) flushes one page if SW loaded TLB 10 * - flush_tlb_range(vma, start, end) flushes a range of pages 11 * - flush_tlb_kernel_range(start, end) flushes a range of kernel pages 12 * - flush_tlb_pgtables(mm, start, end) flushes a range of page tables 13 */ 14 15#include <linux/percpu.h> 16#include <asm/page.h> 17 18#define PPC64_TLB_BATCH_NR 192 19 20struct mm_struct; 21struct ppc64_tlb_batch { 22 unsigned long index; 23 unsigned long context; 24 struct mm_struct *mm; 25 pte_t pte[PPC64_TLB_BATCH_NR]; 26 unsigned long addr[PPC64_TLB_BATCH_NR]; 27 unsigned long vaddr[PPC64_TLB_BATCH_NR]; 28}; 29DECLARE_PER_CPU(struct ppc64_tlb_batch, ppc64_tlb_batch); 30 31extern void __flush_tlb_pending(struct ppc64_tlb_batch *batch); 32 33static inline void flush_tlb_pending(void) 34{ 35 struct ppc64_tlb_batch *batch = &get_cpu_var(ppc64_tlb_batch); 36 37 if (batch->index) 38 __flush_tlb_pending(batch); 39 put_cpu_var(ppc64_tlb_batch); 40} 41 42#define flush_tlb_mm(mm) flush_tlb_pending() 43#define flush_tlb_page(vma, addr) flush_tlb_pending() 44#define flush_tlb_page_nohash(vma, addr) do { } while (0) 45#define flush_tlb_range(vma, start, end) \ 46 do { (void)(start); flush_tlb_pending(); } while (0) 47#define flush_tlb_kernel_range(start, end) flush_tlb_pending() 48#define flush_tlb_pgtables(mm, start, end) do { } while (0) 49 50extern void flush_hash_page(unsigned long context, unsigned long ea, pte_t pte, 51 int local); 52void flush_hash_range(unsigned long context, unsigned long number, int local); 53 54#endif /* _PPC64_TLBFLUSH_H */