#ifndef MM_H #define MM_H MM_H #include "hos_types.h" #include "hos_defines.h" #include "multiboot.h" typedef u32_t pagedirectory_entry_t; #define NUM_PAGETABLE_ENTRIES (PAGE_SIZE / sizeof(pagedirectory_entry_t)) typedef pagedirectory_entry_t pagedirectory_t[NUM_PAGETABLE_ENTRIES]; extern pagedirectory_t page_directory; typedef struct { u64_t base; u64_t length; } mm_mem_range_t; void mm_record_mmap_entry(mb_mmap_t * mmap); void mm_bootstrap(); int mm_map(u32_t virtual_address, u32_t physical_address, u32_t user_mode, u32_t writable); u32_t mm_page_alloc(); #define set_cr3(address) \ __asm__ __volatile__ ("movl %0, %%cr3" : : "r" (address)); #endif