1 #ifndef VM_H 2 #define VM_H 3 4 #include "processor.h" 5 #include "asm/page.h" 6 #include "asm/io.h" 7 8 void setup_vm(); 9 10 void *vmalloc(unsigned long size); 11 void vfree(void *mem); 12 void *vmap(unsigned long long phys, unsigned long size); 13 void *alloc_vpage(void); 14 void *alloc_vpages(ulong nr); 15 uint64_t virt_to_phys_cr3(void *mem); 16 17 unsigned long *get_pte(unsigned long *cr3, void *virt); 18 unsigned long *install_pte(unsigned long *cr3, 19 int pte_level, 20 void *virt, 21 unsigned long pte, 22 unsigned long *pt_page); 23 24 void *alloc_page(); 25 void free_page(void *page); 26 27 unsigned long *install_large_page(unsigned long *cr3,unsigned long phys, 28 void *virt); 29 unsigned long *install_page(unsigned long *cr3, unsigned long phys, void *virt); 30 31 #endif 32