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