xref: /minix/minix/servers/vm/arch/i386/pagetable.h (revision 7f5f010b)
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