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