xref: /kvm-unit-tests/lib/x86/vm.h (revision 3e394a5852524d53a7c838f134ac3e7260f5edfd)
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