aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/src')
-rw-r--r--arch/x86_64/src/memory/paging/page_mapper.cpp29
1 files changed, 0 insertions, 29 deletions
diff --git a/arch/x86_64/src/memory/paging/page_mapper.cpp b/arch/x86_64/src/memory/paging/page_mapper.cpp
index 0874230..5b72a63 100644
--- a/arch/x86_64/src/memory/paging/page_mapper.cpp
+++ b/arch/x86_64/src/memory/paging/page_mapper.cpp
@@ -1,7 +1,5 @@
#include "arch/memory/paging/page_mapper.hpp"
-#include "arch/exception_handling/assert.hpp"
-
namespace teachos::arch::memory::paging
{
auto translate_page(virtual_page page) -> std::optional<allocator::physical_frame>
@@ -76,31 +74,4 @@ namespace teachos::arch::memory::paging
return std::nullopt;
}
-
- auto map_page_to_frame(allocator::area_frame_allocator & allocator, virtual_page page,
- allocator::physical_frame frame, std::bitset<64U> flags) -> void
- {
- page_table page_table{};
- bool table_exists = false;
-
- for (auto level = page_table::LEVEL4; level != page_table::LEVEL1; level--)
- {
- std::size_t level_index = page.get_level_index(level);
- table_exists = page_table.next_table(level_index);
-
- if (!table_exists)
- {
- auto allocated_frame = allocator.allocate_frame();
- exception_handling::assert(!allocated_frame.has_value(), "[Page mapper]: Unable to allocate frame");
- page_table[level_index].set_entry(allocated_frame.value(), entry::PRESENT | entry::WRITABLE);
- page_table.zero_entries();
- }
- }
-
- auto level1_entry = page_table[page.get_level_index(page_table::LEVEL1)];
- arch::exception_handling::assert(!level1_entry.contains_flags(entry::HUGE_PAGE),
- "[Page Mapper]: Unable to map huge pages");
- arch::exception_handling::assert(!level1_entry.is_unused(), "[Page Mapper]: Page table entry is already used");
- level1_entry.set_entry(frame, flags | std::bitset<64U>{entry::PRESENT});
- }
} // namespace teachos::arch::memory::paging