2 * Lowlevel memory managment definitions
5 #ifndef __NTOSKRNL_INCLUDE_INTERNAL_I386_MM_H
6 #define __NTOSKRNL_INCLUDE_INTERNAL_I386_MM_H
12 * Page access attributes (or these together)
14 #define PA_READ (1<<0)
15 #define PA_WRITE ((1<<0)+(1<<1))
16 #define PA_EXECUTE PA_READ
23 #define PA_USER (1<<2)
27 #define PAGE_SIZE (4096)
29 PULONG MmGetPageEntry(PVOID Address);
31 #define KERNEL_BASE (0xc0000000)
33 #define FLUSH_TLB __asm__("movl %cr3,%eax\n\tmovl %eax,%cr3\n\t")
35 PULONG MmGetPageDirectory(VOID);
38 extern inline PULONG get_page_directory(void)
40 unsigned int page_dir=0;
41 __asm__("movl %%cr3,%0\n\t"
43 return((PULONG)page_dir);
49 * Amount of memory that can be mapped by a page table
51 #define PAGE_TABLE_SIZE (4*1024*1024)
53 #define PAGE_MASK(x) (x&(~0xfff))
54 #define VADDR_TO_PT_OFFSET(x) (((x/1024)%4096))
55 #define VADDR_TO_PD_OFFSET(x) ((x)/(4*1024*1024))
57 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_I386_MM_H */