1 2 #ifndef _PAGETABLE_H 3 #define _PAGETABLE_H 1 4 5 #include <stdint.h> 6 #include <machine/vm.h> 7 8 #include "vm.h" 9 10 /* Mapping flags. */ 11 #define PTF_WRITE I386_VM_WRITE 12 #define PTF_READ I386_VM_READ 13 #define PTF_PRESENT I386_VM_PRESENT 14 #define PTF_USER I386_VM_USER 15 #define PTF_GLOBAL I386_VM_GLOBAL 16 #define PTF_NOCACHE (I386_VM_PWT | I386_VM_PCD) 17 18 #define ARCH_VM_DIR_ENTRIES I386_VM_DIR_ENTRIES 19 #define ARCH_BIG_PAGE_SIZE I386_BIG_PAGE_SIZE 20 #define ARCH_VM_ADDR_MASK I386_VM_ADDR_MASK 21 #define ARCH_VM_PAGE_PRESENT I386_VM_PRESENT 22 #define ARCH_VM_PDE_MASK I386_VM_PDE_MASK 23 #define ARCH_VM_PDE_PRESENT I386_VM_PRESENT 24 #define ARCH_VM_PTE_PRESENT I386_VM_PRESENT 25 #define ARCH_VM_PTE_USER I386_VM_USER 26 #define ARCH_VM_PTE_RW I386_VM_WRITE 27 #define ARCH_PAGEDIR_SIZE I386_PAGE_SIZE 28 #define ARCH_VM_BIGPAGE I386_VM_BIGPAGE 29 #define ARCH_VM_PT_ENTRIES I386_VM_PT_ENTRIES 30 31 /* For arch-specific PT routines to check if no bits outside 32 * the regular flags are set. 33 */ 34 #define PTF_ALLFLAGS (PTF_READ|PTF_WRITE|PTF_PRESENT|PTF_USER|PTF_GLOBAL|PTF_NOCACHE) 35 36 #define PFERR_NOPAGE(e) (!((e) & I386_VM_PFE_P)) 37 #define PFERR_PROT(e) (((e) & I386_VM_PFE_P)) 38 #define PFERR_WRITE(e) ((e) & I386_VM_PFE_W) 39 #define PFERR_READ(e) (!((e) & I386_VM_PFE_W)) 40 41 #define VM_PAGE_SIZE I386_PAGE_SIZE 42 43 /* virtual address -> pde, pte macros */ 44 #define ARCH_VM_PTE(v) I386_VM_PTE(v) 45 #define ARCH_VM_PDE(v) I386_VM_PDE(v) 46 47 #endif 48