aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorFabian Imhof <fabian.imhof@ost.ch>2024-10-20 11:29:53 +0000
committerFabian Imhof <fabian.imhof@ost.ch>2024-10-20 11:29:53 +0000
commit0d42fed17834a21d29032dd2d8e56e11596056bc (patch)
tree8ed7a8f9fe95fc962da6ca2fbdfb34d93ec24865 /arch
parentf4a14572a661b1f2bac283615d5b070408b382f7 (diff)
downloadteachos-0d42fed17834a21d29032dd2d8e56e11596056bc.tar.xz
teachos-0d42fed17834a21d29032dd2d8e56e11596056bc.zip
fix logic
Diffstat (limited to 'arch')
-rw-r--r--arch/x86_64/src/memory/paging/page_mapper.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/x86_64/src/memory/paging/page_mapper.cpp b/arch/x86_64/src/memory/paging/page_mapper.cpp
index eaafafa..eb1e18c 100644
--- a/arch/x86_64/src/memory/paging/page_mapper.cpp
+++ b/arch/x86_64/src/memory/paging/page_mapper.cpp
@@ -88,15 +88,15 @@ namespace teachos::arch::memory::paging
std::size_t level_index = page.get_level_index(level);
is_valid = page_table.next_table(level_index);
- std::optional<allocator::physical_frame> allocated_frame = allocator.allocate_frame();
- exception_handling::assert(!allocated_frame.has_value(), "[Page mapper]: Unable to allocate frame");
- page_table[level_index].set_entry(allocated_frame.value(), entry::PRESENT | entry::WRITABLE);
- page_table.zero_entries();
-
if (!is_valid)
{
break;
}
+
+ auto allocated_frame = allocator.allocate_frame();
+ exception_handling::assert(!allocated_frame.has_value(), "[Page mapper]: Unable to allocate frame");
+ page_table[level_index].set_entry(allocated_frame.value(), entry::PRESENT | entry::WRITABLE);
+ page_table.zero_entries();
}
entry page_table_entry = page_table[page.get_level_index(page_table::LEVEL1)];