37 lines
737 B
C
37 lines
737 B
C
|
|
#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
|
|
|