aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/memory/paging
diff options
context:
space:
mode:
authorMatteo Gmür <matteo.gmuer1@ost.ch>2024-11-02 11:49:38 +0000
committerMatteo Gmür <matteo.gmuer1@ost.ch>2024-11-02 11:49:38 +0000
commit5ffe7d69545bf098efdd70f105a5df83304b211a (patch)
tree52172b6cefe76644e7348f280a289ab52d974d14 /arch/x86_64/src/memory/paging
parentd488a0709c5a2701482130a3d9c972c0b468a1d2 (diff)
downloadteachos-5ffe7d69545bf098efdd70f105a5df83304b211a.tar.xz
teachos-5ffe7d69545bf098efdd70f105a5df83304b211a.zip
Add physical frame iterator and continue implementing kernel mapping.
Diffstat (limited to 'arch/x86_64/src/memory/paging')
-rw-r--r--arch/x86_64/src/memory/paging/inactive_page_table.cpp2
-rw-r--r--arch/x86_64/src/memory/paging/kernel_mapper.cpp31
2 files changed, 1 insertions, 32 deletions
diff --git a/arch/x86_64/src/memory/paging/inactive_page_table.cpp b/arch/x86_64/src/memory/paging/inactive_page_table.cpp
index afba1f0..de0421d 100644
--- a/arch/x86_64/src/memory/paging/inactive_page_table.cpp
+++ b/arch/x86_64/src/memory/paging/inactive_page_table.cpp
@@ -2,7 +2,7 @@
namespace teachos::arch::memory::paging
{
- inactive_page_table::inactive_page_table(allocator::physical_frame frame, active_page_table active_page_table,
+ inactive_page_table::inactive_page_table(allocator::physical_frame frame, active_page_table & active_page_table,
temporary_page temporary_page)
: page_table_level_4_frame{frame}
{
diff --git a/arch/x86_64/src/memory/paging/kernel_mapper.cpp b/arch/x86_64/src/memory/paging/kernel_mapper.cpp
deleted file mode 100644
index 07d55ff..0000000
--- a/arch/x86_64/src/memory/paging/kernel_mapper.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "arch/memory/paging/kernel_mapper.hpp"
-
-#include "arch/memory/allocator/physical_frame.hpp"
-#include "arch/memory/paging/tlb.hpp"
-
-namespace teachos::arch::memory::paging
-{
- kernel_mapper::kernel_mapper(active_page_table & active_table)
- : active_table(active_table)
- {
- // Nothing to do
- }
-
- auto kernel_mapper::with(inactive_page_table inactive_page_table, temporary_page temporary_page,
- active_page_table::function f) -> void
- {
- auto backup = allocator::physical_frame::containing_address(PAGE_TABLE_LEVEL_4_ADDRESS);
- auto page_table_level4 = temporary_page.map_table_frame(backup, active_table);
-
- active_table.active_handle[511].set_entry(inactive_page_table.page_table_level_4_frame,
- entry::PRESENT | entry::WRITABLE);
- tlb_flush_all();
-
- f(active_table);
-
- page_table_level4[511].set_entry(backup, entry::PRESENT | entry::WRITABLE);
- tlb_flush_all();
-
- temporary_page.unmap(active_table);
- }
-} // namespace teachos::arch::memory::paging