tlbflush_64.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. #endif /* _SPARC64_TLBFLUSH_H */