17d36db35SAvi Kivity #ifndef VM_H 27d36db35SAvi Kivity #define VM_H 37d36db35SAvi Kivity 47d36db35SAvi Kivity #include "processor.h" 5*3e394a58SAlexander Gordeev #include "asm/page.h" 67d36db35SAvi Kivity 77d36db35SAvi Kivity void setup_vm(); 87d36db35SAvi Kivity 97d36db35SAvi Kivity void *vmalloc(unsigned long size); 107d36db35SAvi Kivity void vfree(void *mem); 117d36db35SAvi Kivity void *vmap(unsigned long long phys, unsigned long size); 12a4b87a16SGleb Natapov void *alloc_vpage(void); 13524ae896SAvi Kivity void *alloc_vpages(ulong nr); 14334cd2bfSGleb Natapov uint64_t virt_to_phys_cr3(void *mem); 157d36db35SAvi Kivity 1604262816SPaolo Bonzini unsigned long *get_pte(unsigned long *cr3, void *virt); 1704262816SPaolo Bonzini unsigned long *install_pte(unsigned long *cr3, 187d36db35SAvi Kivity int pte_level, 197d36db35SAvi Kivity void *virt, 207d36db35SAvi Kivity unsigned long pte, 217d36db35SAvi Kivity unsigned long *pt_page); 227d36db35SAvi Kivity 237d36db35SAvi Kivity void *alloc_page(); 241597d09dSAndrey Smetanin void free_page(void *page); 257d36db35SAvi Kivity 2604262816SPaolo Bonzini unsigned long *install_large_page(unsigned long *cr3,unsigned long phys, 277d36db35SAvi Kivity void *virt); 2804262816SPaolo Bonzini unsigned long *install_page(unsigned long *cr3, unsigned long phys, void *virt); 297d36db35SAvi Kivity 307d36db35SAvi Kivity static inline unsigned long virt_to_phys(const void *virt) 317d36db35SAvi Kivity { 327d36db35SAvi Kivity return (unsigned long)virt; 337d36db35SAvi Kivity } 347d36db35SAvi Kivity 357d36db35SAvi Kivity static inline void *phys_to_virt(unsigned long phys) 367d36db35SAvi Kivity { 377d36db35SAvi Kivity return (void *)phys; 387d36db35SAvi Kivity } 397d36db35SAvi Kivity 407d36db35SAvi Kivity #endif 41