xref: /kvm-unit-tests/lib/arm64/asm/mmu.h (revision 80e8b3d82fc53befe77728786530d286a78d0d78)
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 
14 static inline void flush_tlb_all(void)
15 {
16 	dsb(ishst);
17 	asm("tlbi	vmalle1is");
18 	dsb(ish);
19 	isb();
20 }
21 
22 static inline void flush_tlb_page(unsigned long vaddr)
23 {
24 	unsigned long page = vaddr >> 12;
25 	dsb(ishst);
26 	asm("tlbi	vaae1is, %0" :: "r" (page));
27 	dsb(ish);
28 	isb();
29 }
30 
31 static inline void flush_dcache_addr(unsigned long vaddr)
32 {
33 	asm volatile("dc civac, %0" :: "r" (vaddr));
34 }
35 
36 #include <asm/mmu-api.h>
37 
38 #endif /* _ASMARM64_MMU_H_ */
39