#ifndef _KERNEL_MEM_BITS_MMU_H #define _KERNEL_MEM_BITS_MMU_H #include enum MMU_FLAGS { MMU_FLAG_PERM_WRITE = (1 << 0), MMU_FLAG_PERM_READ = (1 << 1), MMU_FLAG_PERM_EXEC = (1 << 2), MMU_FLAG_UNCACHED = (1 << 3), MMU_FLAG_NONPRIV = (1 << 4), MMU_FLAG_INVALID = (1 << 5), MMU_FLAG_COW = (1 << 6), // TODO: Remove this flag. MMU_FLAG_HUGE_PAGE = (1 << 7), MMU_FLAG_DEVICE = MMU_FLAG_PERM_READ | MMU_FLAG_PERM_WRITE | MMU_FLAG_UNCACHED, }; typedef uint32_t mmu_flags_t; enum MMU_PF_INFO_FLAGS { MMU_PF_INFO_ON_NOT_PRESENT = (1 << 0), MMU_PF_INFO_ON_WRITE = (1 << 1), MMU_PF_INFO_ON_NONPRIV_ACCESS = (1 << 2), MMU_PF_INFO_SECURITY_VIOLATION = (1 << 3), }; typedef uint32_t mmu_pf_info_flags_t; enum PTABLE_LEVELS { PTABLE_LV0 = 0, PTABLE_LV1 = 1, PTABLE_LV2 = 2, PTABLE_LV3 = 3, }; typedef enum PTABLE_LEVELS ptable_lv_t; enum PTABLE_ENTITY_STATES { PTABLE_ENTITY_PRESENT, PTABLE_ENTITY_INVALID, PTABLE_ENTITY_ALLOC, // For arm32 pspace, other targets never return this state. }; typedef uint32_t ptable_state_t; #endif // _KERNEL_MEM_BITS_MMU_H