home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-sparc64 / tlbflush.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.3 KB  |  52 lines

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