1 #ifndef _ASMARM64_MMU_H_ 2 #define _ASMARM64_MMU_H_ 3 /* 4 * Copyright (C) 2014, Red Hat Inc, Andrew Jones <drjones@redhat.com> 5 * 6 * This work is licensed under the terms of the GNU LGPL, version 2. 7 */ 8 #include <asm/barrier.h> 9 10 #define PMD_SECT_UNCACHED PMD_ATTRINDX(MT_DEVICE_nGnRE) 11 #define PTE_UNCACHED PTE_ATTRINDX(MT_DEVICE_nGnRE) 12 #define PTE_WBWA PTE_ATTRINDX(MT_NORMAL) 13 #define PTE_TAGGED PTE_ATTRINDX(MT_NORMAL_TAGGED) 14 flush_tlb_all(void)15static inline void flush_tlb_all(void) 16 { 17 dsb(ishst); 18 asm("tlbi vmalle1is"); 19 dsb(ish); 20 isb(); 21 } 22 flush_tlb_page(unsigned long vaddr)23static inline void flush_tlb_page(unsigned long vaddr) 24 { 25 unsigned long page = vaddr >> 12; 26 dsb(ishst); 27 asm("tlbi vaae1is, %0" :: "r" (page)); 28 dsb(ish); 29 isb(); 30 } 31 flush_dcache_addr(unsigned long vaddr)32static inline void flush_dcache_addr(unsigned long vaddr) 33 { 34 asm volatile("dc civac, %0" :: "r" (vaddr)); 35 } 36 37 #include <asm/mmu-api.h> 38 39 #endif /* _ASMARM64_MMU_H_ */ 40