tlbflush.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef _SPARC64_TLBFLUSH_H
  2. #define _SPARC64_TLBFLUSH_H
  3. #include <linux/mm.h>
  4. #include <asm/mmu_context.h>
  5. /* TSB flush operations. */
  6. struct mmu_gather;
  7. extern void flush_tsb_kernel_range(unsigned long start, unsigned long end);
  8. extern void flush_tsb_user(struct mmu_gather *mp);
  9. /* TLB flush operations. */
  10. extern void flush_tlb_pending(void);
  11. #define flush_tlb_range(vma,start,end) \
  12. do { (void)(start); flush_tlb_pending(); } while (0)
  13. #define flush_tlb_page(vma,addr) flush_tlb_pending()
  14. #define flush_tlb_mm(mm) flush_tlb_pending()
  15. /* Local cpu only. */
  16. extern void __flush_tlb_all(void);
  17. extern void __flush_tlb_kernel_range(unsigned long start, unsigned long end);
  18. #ifndef CONFIG_SMP
  19. #define flush_tlb_kernel_range(start,end) \
  20. do { flush_tsb_kernel_range(start,end); \
  21. __flush_tlb_kernel_range(start,end); \
  22. } while (0)
  23. #else /* CONFIG_SMP */
  24. extern void smp_flush_tlb_kernel_range(unsigned long start, unsigned long end);
  25. #define flush_tlb_kernel_range(start, end) \
  26. do { flush_tsb_kernel_range(start,end); \
  27. smp_flush_tlb_kernel_range(start, end); \
  28. } while (0)
  29. #endif /* ! CONFIG_SMP */
  30. static inline void flush_tlb_pgtables(struct mm_struct *mm, unsigned long start, unsigned long end)
  31. {
  32. /* We don't use virtual page tables for TLB miss processing
  33. * any more. Nowadays we use the TSB.
  34. */
  35. }
  36. #endif /* _SPARC64_TLBFLUSH_H */