tlbflush.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef _SPARC64_TLBFLUSH_H
  2. #define _SPARC64_TLBFLUSH_H
  3. #include <linux/config.h>
  4. #include <linux/mm.h>
  5. #include <asm/mmu_context.h>
  6. /* TLB flush operations. */
  7. extern void flush_tlb_pending(void);
  8. #define flush_tlb_range(vma,start,end) \
  9. do { (void)(start); flush_tlb_pending(); } while (0)
  10. #define flush_tlb_page(vma,addr) flush_tlb_pending()
  11. #define flush_tlb_mm(mm) flush_tlb_pending()
  12. extern void __flush_tlb_all(void);
  13. extern void __flush_tlb_page(unsigned long context, unsigned long page, unsigned long r);
  14. extern void __flush_tlb_kernel_range(unsigned long start, unsigned long end);
  15. #ifndef CONFIG_SMP
  16. #define flush_tlb_all() __flush_tlb_all()
  17. #define flush_tlb_kernel_range(start,end) \
  18. __flush_tlb_kernel_range(start,end)
  19. #else /* CONFIG_SMP */
  20. extern void smp_flush_tlb_all(void);
  21. extern void smp_flush_tlb_kernel_range(unsigned long start, unsigned long end);
  22. #define flush_tlb_all() smp_flush_tlb_all()
  23. #define flush_tlb_kernel_range(start, end) \
  24. smp_flush_tlb_kernel_range(start, end)
  25. #endif /* ! CONFIG_SMP */
  26. extern void flush_tlb_pgtables(struct mm_struct *, unsigned long, unsigned long);
  27. #endif /* _SPARC64_TLBFLUSH_H */