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)
35 __asm__ __volatile__( \
42 PULONG MmGetPageDirectory(VOID);
45 extern inline PULONG get_page_directory(void)
47 unsigned int page_dir=0;
48 __asm__("movl %%cr3,%0\n\t"
50 return((PULONG)page_dir);
56 * Amount of memory that can be mapped by a page table
58 #define PAGE_TABLE_SIZE (4*1024*1024)
60 #define PAGE_MASK(x) (x&(~0xfff))
61 #define VADDR_TO_PT_OFFSET(x) (((x/1024)%4096))
62 #define VADDR_TO_PD_OFFSET(x) ((x)/(4*1024*1024))
64 #endif /* __NTOSKRNL_INCLUDE_INTERNAL_I386_MM_H */