better api
This commit is contained in:
@@ -10,14 +10,16 @@ static uint64_t free_pages = 0;
|
||||
|
||||
void pmm_init()
|
||||
{
|
||||
memory_map_t memory_map = arch_api.get_memory_map();
|
||||
|
||||
memset(page_bitmap, 0xFF, BITMAP_SIZE);
|
||||
|
||||
for (size_t i = 0; i < memory_map.num_regions; i++)
|
||||
{
|
||||
memory_region_t region = memory_map.regions[i];
|
||||
|
||||
uint64_t start_page = region.base_address / arch_page_size();
|
||||
uint64_t num_pages = region.length / arch_page_size();
|
||||
uint64_t start_page = region.base_address / arch_api.page_size();
|
||||
uint64_t num_pages = region.length / arch_api.page_size();
|
||||
|
||||
for (uint64_t page = start_page; page < start_page + num_pages; page++)
|
||||
{
|
||||
@@ -36,7 +38,7 @@ void pmm_init()
|
||||
}
|
||||
|
||||
// Reserve first 64MB which is reserved by boot code
|
||||
for (uint64_t page = 0; page < (64 * 1024 * 1024) / arch_page_size(); page++)
|
||||
for (uint64_t page = 0; page < (64 * 1024 * 1024) / arch_api.page_size(); page++)
|
||||
{
|
||||
if (page < BITMAP_SIZE * 8)
|
||||
{
|
||||
@@ -62,7 +64,7 @@ uint64_t pmm_alloc_page()
|
||||
{
|
||||
page_bitmap[i] |= (1 << bit);
|
||||
free_pages--;
|
||||
return ((i * 8 + bit) * arch_page_size());
|
||||
return ((i * 8 + bit) * arch_api.page_size());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -74,7 +76,7 @@ uint64_t pmm_alloc_page()
|
||||
// Frees the physical page at the specified address
|
||||
void pmm_free_page(uint64_t addr)
|
||||
{
|
||||
uint64_t page = addr / arch_page_size();
|
||||
uint64_t page = addr / arch_api.page_size();
|
||||
if (page < BITMAP_SIZE * 8)
|
||||
{
|
||||
if (page_bitmap[page / 8] & (1 << (page % 8)))
|
||||
|
||||
Reference in New Issue
Block a user