aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/include
diff options
context:
space:
mode:
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);