diff options
| author | Fabian Imhof <fabian.imhof@ost.ch> | 2024-10-20 11:29:53 +0000 |
|---|---|---|
| committer | Fabian Imhof <fabian.imhof@ost.ch> | 2024-10-20 11:29:53 +0000 |
| commit | 0d42fed17834a21d29032dd2d8e56e11596056bc (patch) | |
| tree | 8ed7a8f9fe95fc962da6ca2fbdfb34d93ec24865 /arch/x86_64 | |
| parent | f4a14572a661b1f2bac283615d5b070408b382f7 (diff) | |
| download | teachos-0d42fed17834a21d29032dd2d8e56e11596056bc.tar.xz teachos-0d42fed17834a21d29032dd2d8e56e11596056bc.zip | |
fix logic
Diffstat (limited to 'arch/x86_64')
| -rw-r--r-- | arch/x86_64/src/memory/paging/page_mapper.cpp | 10 |
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)]; |
