1*433d6423SLionel Sambuc 2*433d6423SLionel Sambuc #ifndef _PAGETABLE_H 3*433d6423SLionel Sambuc #define _PAGETABLE_H 1 4*433d6423SLionel Sambuc 5*433d6423SLionel Sambuc #include <stdint.h> 6*433d6423SLionel Sambuc #include <machine/vm.h> 7*433d6423SLionel Sambuc 8*433d6423SLionel Sambuc #include "vm.h" 9*433d6423SLionel Sambuc 10*433d6423SLionel Sambuc /* Mapping flags. */ 11*433d6423SLionel Sambuc #define PTF_WRITE ARM_VM_PTE_RW 12*433d6423SLionel Sambuc #define PTF_READ ARM_VM_PTE_RO 13*433d6423SLionel Sambuc #define PTF_PRESENT ARM_VM_PTE_PRESENT 14*433d6423SLionel Sambuc #define PTF_SUPER ARM_VM_PTE_SUPER 15*433d6423SLionel Sambuc #define PTF_USER ARM_VM_PTE_USER 16*433d6423SLionel Sambuc #define PTF_NOCACHE ARM_VM_PTE_DEVICE 17*433d6423SLionel Sambuc #define PTF_CACHEWB ARM_VM_PTE_WB 18*433d6423SLionel Sambuc #define PTF_CACHEWT ARM_VM_PTE_WT 19*433d6423SLionel Sambuc #define PTF_SHARE ARM_VM_PTE_S 20*433d6423SLionel Sambuc 21*433d6423SLionel Sambuc #define ARCH_VM_DIR_ENTRIES ARM_VM_DIR_ENTRIES 22*433d6423SLionel Sambuc #define ARCH_BIG_PAGE_SIZE ARM_SECTION_SIZE 23*433d6423SLionel Sambuc #define ARCH_VM_ADDR_MASK ARM_VM_ADDR_MASK 24*433d6423SLionel Sambuc #define ARCH_VM_PDE_MASK ARM_VM_PDE_MASK 25*433d6423SLionel Sambuc #define ARCH_VM_PDE_PRESENT ARM_VM_PDE_PRESENT 26*433d6423SLionel Sambuc #define ARCH_VM_PTE_PRESENT ARM_VM_PTE_PRESENT 27*433d6423SLionel Sambuc #define ARCH_VM_PTE_USER ARM_VM_PTE_USER 28*433d6423SLionel Sambuc #define ARCH_PAGEDIR_SIZE ARM_PAGEDIR_SIZE 29*433d6423SLionel Sambuc #define ARCH_VM_PTE_RW ARM_VM_PTE_RW 30*433d6423SLionel Sambuc #define ARCH_VM_BIGPAGE ARM_VM_SECTION 31*433d6423SLionel Sambuc #define ARCH_VM_PT_ENTRIES ARM_VM_PT_ENTRIES 32*433d6423SLionel Sambuc #define ARCH_VM_PTE_RO ARM_VM_PTE_RO 33*433d6423SLionel Sambuc 34*433d6423SLionel Sambuc /* For arch-specific PT routines to check if no bits outside 35*433d6423SLionel Sambuc * the regular flags are set. 36*433d6423SLionel Sambuc */ 37*433d6423SLionel Sambuc #define PTF_ALLFLAGS (PTF_READ|PTF_WRITE|PTF_PRESENT|PTF_SUPER|PTF_USER|PTF_NOCACHE|PTF_CACHEWB|PTF_CACHEWT|PTF_SHARE) 38*433d6423SLionel Sambuc 39*433d6423SLionel Sambuc #define PFERR_PROT(e) ((ARM_VM_PFE_FS(e) == ARM_VM_PFE_L1PERM) \ 40*433d6423SLionel Sambuc || (ARM_VM_PFE_FS(e) == ARM_VM_PFE_L2PERM)) 41*433d6423SLionel Sambuc #define PFERR_NOPAGE(e) (!PFERR_PROT(e)) 42*433d6423SLionel Sambuc #define PFERR_WRITE(e) ((e) & ARM_VM_PFE_W) 43*433d6423SLionel Sambuc #define PFERR_READ(e) (!((e) & ARM_VM_PFE_W)) 44*433d6423SLionel Sambuc 45*433d6423SLionel Sambuc #define VM_PAGE_SIZE ARM_PAGE_SIZE 46*433d6423SLionel Sambuc 47*433d6423SLionel Sambuc /* virtual address -> pde, pte macros */ 48*433d6423SLionel Sambuc #define ARCH_VM_PTE(v) ARM_VM_PTE(v) 49*433d6423SLionel Sambuc #define ARCH_VM_PDE(v) ARM_VM_PDE(v) 50*433d6423SLionel Sambuc 51*433d6423SLionel Sambuc #endif 52*433d6423SLionel Sambuc 53