diff options
| author | Matteo Gmür <matteo.gmuer1@ost.ch> | 2024-11-24 09:44:41 +0000 |
|---|---|---|
| committer | Matteo Gmür <matteo.gmuer1@ost.ch> | 2024-11-24 09:44:41 +0000 |
| commit | 77146c6e2dbd02661636d9424b7e51562eac30c9 (patch) | |
| tree | 3e644acd30f3d8b6832acfaad35a51b544580bfd /arch/x86_64/include | |
| parent | 641f20fd782deb6d9e1e1b9996005ad893028744 (diff) | |
| download | teachos-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.hpp | 2 |
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); |
