diff options
Diffstat (limited to 'arch')
4 files changed, 7 insertions, 11 deletions
diff --git a/arch/x86_64/include/arch/memory/paging/page_mapper.hpp b/arch/x86_64/include/arch/memory/paging/page_mapper.hpp index 358b90c..cd71c73 100644 --- a/arch/x86_64/include/arch/memory/paging/page_mapper.hpp +++ b/arch/x86_64/include/arch/memory/paging/page_mapper.hpp @@ -63,7 +63,7 @@ namespace teachos::arch::memory::paging { auto current_handle = create_or_get(); - for (auto level = page_table_handle::LEVEL4; level != page_table_handle::LEVEL1; level--) + for (auto level = page_table_handle::LEVEL4; level != page_table_handle::LEVEL1; --level) { auto level_index = page.get_level_index(level); auto next_handle = current_handle.next_table(level_index); @@ -136,7 +136,7 @@ namespace teachos::arch::memory::paging auto current_handle = create_or_get(); - for (auto level = page_table_handle::LEVEL4; level != page_table_handle::LEVEL1; level--) + for (auto level = page_table_handle::LEVEL4; level != page_table_handle::LEVEL1; --level) { auto level_index = page.get_level_index(level); auto next_handle = current_handle.next_table(level_index); diff --git a/arch/x86_64/include/arch/memory/paging/page_table.hpp b/arch/x86_64/include/arch/memory/paging/page_table.hpp index ad5c794..eb0b984 100644 --- a/arch/x86_64/include/arch/memory/paging/page_table.hpp +++ b/arch/x86_64/include/arch/memory/paging/page_table.hpp @@ -83,7 +83,7 @@ namespace teachos::arch::memory::paging * @param value Value we want to decrement on * @return level New level value decrement by one, meaning the level is also decrement by one Level4 --> Level3, ... */ - friend auto operator--(level & value, int) -> level; + friend auto operator--(level & value) -> level &; private: page_table * handle; ///< Handle to underlying page table, can never be null (invariant ensured by constructor) diff --git a/arch/x86_64/src/memory/paging/page_mapper.cpp b/arch/x86_64/src/memory/paging/page_mapper.cpp index 1fe72e3..b89b637 100644 --- a/arch/x86_64/src/memory/paging/page_mapper.cpp +++ b/arch/x86_64/src/memory/paging/page_mapper.cpp @@ -19,7 +19,7 @@ namespace teachos::arch::memory::paging { auto current_handle = create_or_get(); - for (auto level = page_table_handle::LEVEL4; level != page_table_handle::LEVEL1; level--) + for (auto level = page_table_handle::LEVEL4; level != page_table_handle::LEVEL1; --level) { auto next_handle = current_handle.next_table(page.get_level_index(level)); // If the next table method failed then it is highly likely that it was a huge page and we therefore have to diff --git a/arch/x86_64/src/memory/paging/page_table.cpp b/arch/x86_64/src/memory/paging/page_table.cpp index 8971209..33d0b75 100644 --- a/arch/x86_64/src/memory/paging/page_table.cpp +++ b/arch/x86_64/src/memory/paging/page_table.cpp @@ -106,23 +106,19 @@ namespace teachos::arch::memory::paging auto next_table = handle->next_table(table_index); if (next_table) { - handle_level--; - return page_table_handle{next_table.value(), handle_level}; + return page_table_handle{next_table.value(), --handle_level}; } return std::nullopt; } auto page_table_handle::operator[](std::size_t index) -> entry & { return handle->operator[](index); } - auto operator--(page_table_handle::level & value, int) -> page_table_handle::level + auto operator--(page_table_handle::level & value) -> page_table_handle::level & { exception_handling::assert(value != page_table_handle::LEVEL1, "[Page table] Attempted to decrement enum to value outside of range"); - - page_table_handle::level original_value = value; auto new_value = static_cast<std::underlying_type<page_table_handle::level>::type>(value); value = static_cast<page_table_handle::level>(--new_value); - - return original_value; + return value; } } // namespace teachos::arch::memory::paging |
