xref: /kvm-unit-tests/lib/x86/vm.h (revision 8e32da1b82b2cff6e484920588530168dbaf2b64)
17d36db35SAvi Kivity #ifndef VM_H
27d36db35SAvi Kivity #define VM_H
37d36db35SAvi Kivity 
47d36db35SAvi Kivity #include "processor.h"
53e394a58SAlexander Gordeev #include "asm/page.h"
655601383SAlexander Gordeev #include "asm/io.h"
77d36db35SAvi Kivity 
87d36db35SAvi Kivity void setup_vm();
97d36db35SAvi Kivity 
107d36db35SAvi Kivity void *vmalloc(unsigned long size);
117d36db35SAvi Kivity void vfree(void *mem);
127d36db35SAvi Kivity void *vmap(unsigned long long phys, unsigned long size);
13a4b87a16SGleb Natapov void *alloc_vpage(void);
14524ae896SAvi Kivity void *alloc_vpages(ulong nr);
15334cd2bfSGleb Natapov uint64_t virt_to_phys_cr3(void *mem);
167d36db35SAvi Kivity 
1704262816SPaolo Bonzini unsigned long *get_pte(unsigned long *cr3, void *virt);
1804262816SPaolo Bonzini unsigned long *install_pte(unsigned long *cr3,
197d36db35SAvi Kivity                            int pte_level,
207d36db35SAvi Kivity                            void *virt,
217d36db35SAvi Kivity                            unsigned long pte,
227d36db35SAvi Kivity                            unsigned long *pt_page);
237d36db35SAvi Kivity 
247d36db35SAvi Kivity void *alloc_page();
25*8e32da1bSPeter Feiner void *alloc_pages(unsigned long order);
261597d09dSAndrey Smetanin void free_page(void *page);
277d36db35SAvi Kivity 
2804262816SPaolo Bonzini unsigned long *install_large_page(unsigned long *cr3,unsigned long phys,
297d36db35SAvi Kivity                                   void *virt);
3004262816SPaolo Bonzini unsigned long *install_page(unsigned long *cr3, unsigned long phys, void *virt);
317d36db35SAvi Kivity 
327d36db35SAvi Kivity #endif
33