aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/memory
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/src/memory')
-rw-r--r--arch/x86_64/src/memory/paging/active_page_table.cpp5
-rw-r--r--arch/x86_64/src/memory/paging/kernel_mapper.cpp17
2 files changed, 12 insertions, 10 deletions
diff --git a/arch/x86_64/src/memory/paging/active_page_table.cpp b/arch/x86_64/src/memory/paging/active_page_table.cpp
index 38696f8..844ae37 100644
--- a/arch/x86_64/src/memory/paging/active_page_table.cpp
+++ b/arch/x86_64/src/memory/paging/active_page_table.cpp
@@ -2,11 +2,6 @@
namespace teachos::arch::memory::paging
{
- namespace
- {
- std::size_t constexpr PAGE_TABLE_LEVEL_4_ADDRESS = 0xffffffff'fffff000;
- } // namespace
-
auto active_page_table::create_or_get() -> active_page_table &
{
static page_table_handle active_handle{reinterpret_cast<page_table *>(PAGE_TABLE_LEVEL_4_ADDRESS),
diff --git a/arch/x86_64/src/memory/paging/kernel_mapper.cpp b/arch/x86_64/src/memory/paging/kernel_mapper.cpp
index 9dfc5ad..59930fc 100644
--- a/arch/x86_64/src/memory/paging/kernel_mapper.cpp
+++ b/arch/x86_64/src/memory/paging/kernel_mapper.cpp
@@ -2,12 +2,19 @@
namespace teachos::arch::memory::paging
{
- auto with(inactive_page_table inactive_page_table, temporary_page temporary_page,
- active_page_table::function f) -> void
+ kernel_mapper::kernel_mapper(active_page_table & active_table)
+ : active_table(active_table)
{
- /*active_handle[511].set_entry(inactive_page_table.page_table_level_4_frame, entry::PRESENT | entry::WRITABLE);
- invalidate_page_cache(PAGE_TABLE_LEVEL_4_ADDRESS);
+ // Nothing to do
+ }
+
+ auto kernel_mapper::with(inactive_page_table inactive_page_table, temporary_page temporary_page,
+ active_page_table::function f) -> void
+ {
+ active_table.active_handle[511].set_entry(inactive_page_table.page_table_level_4_frame,
+ entry::PRESENT | entry::WRITABLE);
+ active_page_table::invalidate_page_cache(PAGE_TABLE_LEVEL_4_ADDRESS);
- f(*this);*/
+ f(active_table);
}
} // namespace teachos::arch::memory::paging