aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/include
diff options
context:
space:
mode:
authorMatteo Gmür <matteo.gmuer1@ost.ch>2024-11-24 09:44:41 +0000
committerMatteo Gmür <matteo.gmuer1@ost.ch>2024-11-24 09:44:41 +0000
commit77146c6e2dbd02661636d9424b7e51562eac30c9 (patch)
tree3e644acd30f3d8b6832acfaad35a51b544580bfd /arch/x86_64/include
parent641f20fd782deb6d9e1e1b9996005ad893028744 (diff)
downloadteachos-77146c6e2dbd02661636d9424b7e51562eac30c9.tar.xz
teachos-77146c6e2dbd02661636d9424b7e51562eac30c9.zip
Add notes on missing features for kernel remapping
Diffstat (limited to 'arch/x86_64/include')
-rw-r--r--arch/x86_64/include/arch/memory/paging/kernel_mapper.hpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86_64/include/arch/memory/paging/kernel_mapper.hpp b/arch/x86_64/include/arch/memory/paging/kernel_mapper.hpp
index f980451..897ae06 100644
--- a/arch/x86_64/include/arch/memory/paging/kernel_mapper.hpp
+++ b/arch/x86_64/include/arch/memory/paging/kernel_mapper.hpp
@@ -48,6 +48,8 @@ namespace teachos::arch::memory::paging
inactive_page_table new_table{frame.value(), active_table, temporary_page};
remap_elf_kernel_sections(new_table, temporary_page, active_table);
auto const old_table = switch_active_page_table(new_table);
+ // Turn old level 4 page table, mapped by assembler code into stack guard page.
+ // Only works if the identity mapped page tables by assembler are right above the stack.
auto const old_level_4_page =
virtual_page::containing_address(old_table.page_table_level_4_frame.start_address());
active_table.unmap_page(allocator, old_level_4_page);