xref: /kvm-unit-tests/lib/arm/asm/mmu-api.h (revision c2a95639b4cc7eb7f4f05a92c965e6ce5c39bccb)
12f3028cdSAndrew Jones #ifndef __ASMARM_MMU_API_H_
22f3028cdSAndrew Jones #define __ASMARM_MMU_API_H_
3*c2a95639SPaolo Bonzini 
4*c2a95639SPaolo Bonzini #include <asm/page.h>
5*c2a95639SPaolo Bonzini #include <stdbool.h>
6*c2a95639SPaolo Bonzini 
72f3028cdSAndrew Jones extern pgd_t *mmu_idmap;
8b141dbacSAndrew Jones extern unsigned int mmu_disabled_cpu_count;
9b141dbacSAndrew Jones extern bool __mmu_enabled(void);
10b141dbacSAndrew Jones static inline bool mmu_enabled(void)
11b141dbacSAndrew Jones {
12b141dbacSAndrew Jones 	return mmu_disabled_cpu_count == 0 || __mmu_enabled();
13b141dbacSAndrew Jones }
141742c67aSAndrew Jones extern void mmu_mark_enabled(int cpu);
15c33efcf3SAndrew Jones extern void mmu_mark_disabled(int cpu);
161742c67aSAndrew Jones extern void mmu_enable(pgd_t *pgtable);
17e27b176bSAndrew Jones extern void mmu_disable(void);
182f3028cdSAndrew Jones extern void mmu_enable_idmap(void);
192f3028cdSAndrew Jones extern void mmu_init_io_sect(pgd_t *pgtable, unsigned long virt_offset);
202f3028cdSAndrew Jones extern void mmu_set_range_sect(pgd_t *pgtable, unsigned long virt_offset,
212f3028cdSAndrew Jones 			       unsigned long phys_start, unsigned long phys_end,
222f3028cdSAndrew Jones 			       pgprot_t prot);
232f3028cdSAndrew Jones extern void mmu_set_range_ptes(pgd_t *pgtable, unsigned long virt_offset,
242f3028cdSAndrew Jones 			       unsigned long phys_start, unsigned long phys_end,
252f3028cdSAndrew Jones 			       pgprot_t prot);
262f3028cdSAndrew Jones #endif
27