aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/x86_64/include/arch/memory/paging/page_mapper.hpp4
-rw-r--r--arch/x86_64/include/arch/memory/paging/page_table.hpp2
-rw-r--r--arch/x86_64/src/memory/paging/page_mapper.cpp2
-rw-r--r--arch/x86_64/src/memory/paging/page_table.cpp10
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