aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/memory/paging
diff options
context:
space:
mode:
authorMatteo Gmür <matteo.gmuer1@ost.ch>2024-10-28 14:41:31 +0000
committerMatteo Gmür <matteo.gmuer1@ost.ch>2024-10-28 14:41:31 +0000
commitaa981cad951c4aa2a5e2f7a7f8f1b7b9a0ff4bcd (patch)
tree1a9f314e3751a164ec20bdd71947d403ec6bbb6f /arch/x86_64/src/memory/paging
parente5925df93411429340d2887594004aaa690d2ef5 (diff)
downloadteachos-aa981cad951c4aa2a5e2f7a7f8f1b7b9a0ff4bcd.tar.xz
teachos-aa981cad951c4aa2a5e2f7a7f8f1b7b9a0ff4bcd.zip
Fix lost updates, because of writing into copies instead of references
Diffstat (limited to 'arch/x86_64/src/memory/paging')
-rw-r--r--arch/x86_64/src/memory/paging/page_entry.cpp3
-rw-r--r--arch/x86_64/src/memory/paging/page_mapper.cpp4
2 files changed, 4 insertions, 3 deletions
diff --git a/arch/x86_64/src/memory/paging/page_entry.cpp b/arch/x86_64/src/memory/paging/page_entry.cpp
index 8923fea..23c700f 100644
--- a/arch/x86_64/src/memory/paging/page_entry.cpp
+++ b/arch/x86_64/src/memory/paging/page_entry.cpp
@@ -23,7 +23,8 @@ namespace teachos::arch::memory::paging
{
if (contains_flags(PRESENT))
{
- return allocator::physical_frame::containing_address(flags.to_ulong() & PHYSICAL_ADDRESS_MASK);
+ auto const address = flags.to_ulong() & PHYSICAL_ADDRESS_MASK;
+ return allocator::physical_frame::containing_address(address);
}
return std::nullopt;
}
diff --git a/arch/x86_64/src/memory/paging/page_mapper.cpp b/arch/x86_64/src/memory/paging/page_mapper.cpp
index 3baf6ae..0a1fc65 100644
--- a/arch/x86_64/src/memory/paging/page_mapper.cpp
+++ b/arch/x86_64/src/memory/paging/page_mapper.cpp
@@ -55,8 +55,8 @@ namespace teachos::arch::memory::paging
}
auto const level1_index = page.get_level_index(page_table_handle::LEVEL1);
- auto const level1_frame = current_handle[level1_index].calculate_pointed_to_frame();
- return level1_frame;
+ auto const level1_entry = current_handle[level1_index];
+ return level1_entry.calculate_pointed_to_frame();
}
auto translate_huge_page(virtual_page page) -> std::optional<allocator::physical_frame>