tlbflush.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu>
  4. * Copyright (C) 2008-2009 PetaLogix
  5. * Copyright (C) 2006 Atmark Techno, Inc.
  6. */
  7. #ifndef _ASM_MICROBLAZE_TLBFLUSH_H
  8. #define _ASM_MICROBLAZE_TLBFLUSH_H
  9. #include <linux/sched.h>
  10. #include <linux/threads.h>
  11. #include <asm/processor.h> /* For TASK_SIZE */
  12. #include <asm/mmu.h>
  13. #include <asm/page.h>
  14. extern void _tlbie(unsigned long address);
  15. extern void _tlbia(void);
  16. #define __tlbia() { preempt_disable(); _tlbia(); preempt_enable(); }
  17. #define __tlbie(x) { _tlbie(x); }
  18. static inline void local_flush_tlb_all(void)
  19. { __tlbia(); }
  20. static inline void local_flush_tlb_mm(struct mm_struct *mm)
  21. { __tlbia(); }
  22. static inline void local_flush_tlb_page(struct vm_area_struct *vma,
  23. unsigned long vmaddr)
  24. { __tlbie(vmaddr); }
  25. static inline void local_flush_tlb_range(struct vm_area_struct *vma,
  26. unsigned long start, unsigned long end)
  27. { __tlbia(); }
  28. #define flush_tlb_kernel_range(start, end) do { } while (0)
  29. #define update_mmu_cache_range(vmf, vma, addr, ptep, nr) do { } while (0)
  30. #define update_mmu_cache(vma, addr, pte) \
  31. update_mmu_cache_range(NULL, vma, addr, ptep, 1)
  32. #define flush_tlb_all local_flush_tlb_all
  33. #define flush_tlb_mm local_flush_tlb_mm
  34. #define flush_tlb_page local_flush_tlb_page
  35. #define flush_tlb_range local_flush_tlb_range
  36. /*
  37. * This is called in munmap when we have freed up some page-table
  38. * pages. We don't need to do anything here, there's nothing special
  39. * about our page-table pages. -- paulus
  40. */
  41. static inline void flush_tlb_pgtables(struct mm_struct *mm,
  42. unsigned long start, unsigned long end) { }
  43. #endif /* _ASM_MICROBLAZE_TLBFLUSH_H */