23#ifndef _MINIOS_MM_VMM_H_
24#define _MINIOS_MM_VMM_H_
29#define PAGE_PRESENT (1ULL << 0)
30#define PAGE_WRITE (1ULL << 1)
31#define PAGE_USER (1ULL << 2)
32#define PAGE_COW (1ULL << 9)
41#define KERNEL_VMA 0xFFFF800000000000ULL
47#define HEAP_START 0xFFFF820000000000ULL
52#define HEAP_MAX (HEAP_START + 4ULL * 1024 * 1024)
56#define DMA_BUFFER_VA 0xFFFF830000000000ULL
60#define GOP_FB_VA 0xFFFF840000000000ULL
64#define VGA_BUFFER_VA (KERNEL_VMA + 0xB8000ULL)
70#define PAGE_SIZE 4096ULL
79#define PT_INDEX_MASK 0x1FFULL
85#define PTE_ADDR_MASK 0x000FFFFFFFFFF000ULL
unsigned long int uint64_t
Definition types.h:37
uint16_t flags
Definition virtio_net.c:2
void vmm_unmap_page(uint64_t virt)
Definition vmm.c:164
uint64_t vmm_virt_to_phys(uint64_t virt)
Definition vmm.c:204
void vmm_unmap_page_in(uint64_t pml4_phys, uint64_t virt)
Definition vmm.c:130
uint64_t vmm_virt_to_pte(uint64_t virt)
Definition vmm.c:236
uint64_t vmm_virt_to_phys_in(uint64_t pml4_phys, uint64_t virt)
Definition vmm.c:174
int vmm_map_page(uint64_t virt, uint64_t phys, uint64_t flags)
Definition vmm.c:120
int vmm_resolve_user_fault(uint64_t cr2, uint64_t error_code)
Definition vmm.c:325
uint64_t vmm_new_address_space(void)
Definition vmm.c:265
void vmm_free_address_space(uint64_t pml4_phys)
Definition vmm.c:293
int vmm_map_page_in(uint64_t pml4_phys, uint64_t virt, uint64_t phys, uint64_t flags)
Definition vmm.c:81
uint64_t vmm_virt_to_pte_in(uint64_t pml4_phys, uint64_t virt)
Definition vmm.c:212