aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/memory/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/src/memory/main.cpp')
-rw-r--r--arch/x86_64/src/memory/main.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/arch/x86_64/src/memory/main.cpp b/arch/x86_64/src/memory/main.cpp
index ce07115..80242cc 100644
--- a/arch/x86_64/src/memory/main.cpp
+++ b/arch/x86_64/src/memory/main.cpp
@@ -14,13 +14,16 @@ namespace teachos::arch::memory
{
auto remap_heap(allocator::area_frame_allocator allocator, paging::active_page_table & active_table) -> void
{
- auto heap_start_page = paging::virtual_page::containing_address(memory::heap::HEAP_START);
- auto heap_end_page =
- paging::virtual_page::containing_address(memory::heap::HEAP_START + memory::heap::HEAP_SIZE - 1);
-
- for (auto i = heap_start_page.page_number; i <= heap_end_page.page_number; i++)
+ auto const start_page = paging::virtual_page::containing_address(memory::heap::HEAP_START);
+ auto const end_page =
+ ++(paging::virtual_page::containing_address(memory::heap::HEAP_START + memory::heap::HEAP_SIZE - 1));
+ paging::page_container::iterator const begin{start_page};
+ paging::page_container::iterator const end{end_page};
+ paging::page_container const pages{begin, end};
+
+ for (auto const & page : pages)
{
- active_table.map_page_to_next_free_frame(allocator, paging::virtual_page{i}, paging::entry::WRITABLE);
+ active_table.map_page_to_next_free_frame(allocator, page, paging::entry::WRITABLE);
}
}
} // namespace
@@ -43,5 +46,6 @@ namespace teachos::arch::memory
video::vga::text::write("Kernel remapping successfull", video::vga::text::common_attributes::green_on_black);
remap_heap(allocator, active_table);
+ video::vga::text::write("Heap remapping successfull", video::vga::text::common_attributes::green_on_black);
}
} // namespace teachos::arch::memory \ No newline at end of file