xref: /kvm-unit-tests/lib/arm/asm/mmu.h (revision 71a6a145226927f50d938b0f2befc24363a496bc)
1 #ifndef __ASMARM_MMU_H_
2 #define __ASMARM_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 PTE_USER		L_PTE_USER
11 #define PTE_RDONLY		PTE_AP2
12 #define PTE_SHARED		L_PTE_SHARED
13 #define PTE_AF			PTE_EXT_AF
14 #define PTE_WBWA		L_PTE_MT_WRITEALLOC
15 
16 /* See B3.18.7 TLB maintenance operations */
17 
18 static inline void local_flush_tlb_all(void)
19 {
20 	/* TLBIALL */
21 	asm volatile("mcr p15, 0, %0, c8, c7, 0" :: "r" (0));
22 	dsb();
23 	isb();
24 }
25 
26 static inline void flush_tlb_all(void)
27 {
28 	//TODO
29 	local_flush_tlb_all();
30 }
31 
32 static inline void flush_tlb_page(unsigned long vaddr)
33 {
34 	/* TLBIMVAA */
35 	asm volatile("mcr p15, 0, %0, c8, c7, 3" :: "r" (vaddr));
36 	dsb();
37 	isb();
38 }
39 
40 static inline void flush_dcache_addr(unsigned long vaddr)
41 {
42 	asm volatile("mcr p15, 0, %0, c7, c14, 1" :: "r" (vaddr));
43 }
44 
45 #include <asm/mmu-api.h>
46 
47 #endif /* __ASMARM_MMU_H_ */
48