tlbflush.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
  3. * Copyright (C) 2008-2009 PetaLogix
  4. * Copyright (C) 2006 Atmark Techno, Inc.
  5. *
  6. * This file is subject to the terms and conditions of the GNU General Public
  7. * License. See the file "COPYING" in the main directory of this archive
  8. * for more details.
  9. */
  10. #ifndef _ASM_MICROBLAZE_TLBFLUSH_H
  11. #define _ASM_MICROBLAZE_TLBFLUSH_H
  12. #ifdef CONFIG_MMU
  13. #include <linux/sched.h>
  14. #include <linux/threads.h>
  15. #include <asm/processor.h> /* For TASK_SIZE */
  16. #include <asm/mmu.h>
  17. #include <asm/page.h>
  18. #include <asm/pgalloc.h>
  19. extern void _tlbie(unsigned long address);
  20. extern void _tlbia(void);
  21. #define __tlbia() { preempt_disable(); _tlbia(); preempt_enable(); }
  22. #define __tlbie(x) { _tlbie(x); }
  23. static inline void local_flush_tlb_all(void)
  24. { __tlbia(); }
  25. static inline void local_flush_tlb_mm(struct mm_struct *mm)
  26. { __tlbia(); }
  27. static inline void local_flush_tlb_page(struct vm_area_struct *vma,
  28. unsigned long vmaddr)
  29. { __tlbie(vmaddr); }
  30. static inline void local_flush_tlb_range(struct vm_area_struct *vma,
  31. unsigned long start, unsigned long end)
  32. { __tlbia(); }
  33. #define flush_tlb_kernel_range(start, end) do { } while (0)
  34. #define update_mmu_cache(vma, addr, ptep) do { } while (0)
  35. #define flush_tlb_all local_flush_tlb_all
  36. #define flush_tlb_mm local_flush_tlb_mm
  37. #define flush_tlb_page local_flush_tlb_page
  38. #define flush_tlb_range local_flush_tlb_range
  39. /*
  40. * This is called in munmap when we have freed up some page-table
  41. * pages. We don't need to do anything here, there's nothing special
  42. * about our page-table pages. -- paulus
  43. */
  44. static inline void flush_tlb_pgtables(struct mm_struct *mm,
  45. unsigned long start, unsigned long end) { }
  46. #else /* CONFIG_MMU */
  47. #define flush_tlb() BUG()
  48. #define flush_tlb_all() BUG()
  49. #define flush_tlb_mm(mm) BUG()
  50. #define flush_tlb_page(vma, addr) BUG()
  51. #define flush_tlb_range(mm, start, end) BUG()
  52. #define flush_tlb_pgtables(mm, start, end) BUG()
  53. #define flush_tlb_kernel_range(start, end) BUG()
  54. #endif /* CONFIG_MMU */
  55. #endif /* _ASM_MICROBLAZE_TLBFLUSH_H */