tlbflush.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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() _tlbia()
  22. static inline void local_flush_tlb_all(void)
  23. { __tlbia(); }
  24. static inline void local_flush_tlb_mm(struct mm_struct *mm)
  25. { __tlbia(); }
  26. static inline void local_flush_tlb_page(struct vm_area_struct *vma,
  27. unsigned long vmaddr)
  28. { _tlbie(vmaddr); }
  29. static inline void local_flush_tlb_range(struct vm_area_struct *vma,
  30. unsigned long start, unsigned long end)
  31. { __tlbia(); }
  32. #define flush_tlb_kernel_range(start, end) do { } while (0)
  33. #define update_mmu_cache(vma, addr, pte) do { } while (0)
  34. #define flush_tlb_all local_flush_tlb_all
  35. #define flush_tlb_mm local_flush_tlb_mm
  36. #define flush_tlb_page local_flush_tlb_page
  37. #define flush_tlb_range local_flush_tlb_range
  38. /*
  39. * This is called in munmap when we have freed up some page-table
  40. * pages. We don't need to do anything here, there's nothing special
  41. * about our page-table pages. -- paulus
  42. */
  43. static inline void flush_tlb_pgtables(struct mm_struct *mm,
  44. unsigned long start, unsigned long end) { }
  45. #else /* CONFIG_MMU */
  46. #define flush_tlb() BUG()
  47. #define flush_tlb_all() BUG()
  48. #define flush_tlb_mm(mm) BUG()
  49. #define flush_tlb_page(vma, addr) BUG()
  50. #define flush_tlb_range(mm, start, end) BUG()
  51. #define flush_tlb_pgtables(mm, start, end) BUG()
  52. #define flush_tlb_kernel_range(start, end) BUG()
  53. #endif /* CONFIG_MMU */
  54. #endif /* _ASM_MICROBLAZE_TLBFLUSH_H */