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