Go to the documentation of this file.
29 #ifndef _VMM_PAGING_H_
30 #define _VMM_PAGING_H_
36 #define PAGE_SHIFT 12 // Page Shift
37 #define PAGE_SIZE 0x1000 // Page Size
38 #define PAGE_MASK (PAGE_SIZE-1) // Page Mask
40 #define PD_INDEX(v_addr) (v_addr >> 22) // Calc Page Directory Index
41 #define PD_OFFSET(v_addr) (v_addr >> 0xA) // Calc Page Directory OFfset
42 #define PT_INDEX(v_addr) ((v_addr >> 12) & 0x03FF) // Calc Page Table Offset
43 #define PD_BASE_ADDR2 ((PAGE_SIZE << 0xA) + VMM_KERN_START) // Find Out What This Was For
45 #define PD_BASE_ADDR 0xC0400000 // Page Directory Addressable Base Address
46 #define PT_BASE_ADDR 0xC0000000 // Page Table Addressable Base Address
48 #define PD_ENTRIES (PAGE_SIZE/4) //Return Page Directory Entries
49 #define PT_ENTRIES (PAGE_SIZE/4) //Return Page Table Entries
51 #define VM_THRD 0 // Thread
52 #define VM_TASK 1 // Task
55 #define PAGE_PRESENT 0x00000001
56 #define PAGE_WRITE 0x00000002
57 #define PAGE_USER 0x00000004
58 #define PAGE_WRITE_THROUGH 0x00000008
59 #define PAGE_CACHE_DISABLED 0x00000010
60 #define PAGE_ACCESSED 0x00000020
61 #define PAGE_DIRTY 0x00000040
62 #define PAGE_GLOBAL 0x00000080
63 #define PAGE_ 0x00000100
64 #define PAGE_COW 0x00000200
65 #define PAGE_STACK 0x00000400
66 #define PAGE_WIRED 0x00000800
68 #define PAGE_DEFAULT (PAGE_PRESENT|PAGE_WRITE|PAGE_USER)
69 #define KERNEL_PAGE_DEFAULT (PAGE_PRESENT|PAGE_WRITE)
71 #define trunc_page(x) ((x) & ~PAGE_MASK)
72 #define round_page(x) (((x) + PAGE_MASK) & ~PAGE_MASK)
74 #define ctob(x) ((x)<<PAGE_SHIFT)
75 #define btoc(x) (((vm_offset_t)(x)+PAGE_MASK)>>PAGE_SHIFT)
int vmm_cleanVirtualSpace(uint32_t)
void * vmm_createVirtualSpace(pidType)
uint32_t vmm_getPhysicalAddr(uint32_t)
void * vmm_getFreeVirtualPage(pidType, int, int)
int vmm_setPageAttributes(uint32_t, uint16_t)
void vmm_pageFault(struct trapframe *, uint32_t)
uint32_t * kernelPageDirectory
int vmmClearVirtualPage(uint32_t pageAddr)
int mmap(struct thread *, struct sys_mmap_args *)
uint32_t vmm_getRealAddr(uint32_t)
int vmm_remapPage(uint32_t, uint32_t, uint16_t, pidType, int haveLock)
int obreak(struct thread *, struct obreak_args *)
void * vmm_copyVirtualSpace(pidType)
void * vmm_getFreeMallocPage(uint16_t count)
void * vmm_getFreePage(pidType)
void * vmm_getFreeKernelPage(pidType pid, uint16_t count)
int munmap(struct thread *, struct sys_munmap_args *)
void * vmm_mapFromTask(pidType, void *, uint32_t)