aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/src')
-rw-r--r--arch/x86_64/src/memory/paging/page_table.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/x86_64/src/memory/paging/page_table.cpp b/arch/x86_64/src/memory/paging/page_table.cpp
index ab7331a..02ababe 100644
--- a/arch/x86_64/src/memory/paging/page_table.cpp
+++ b/arch/x86_64/src/memory/paging/page_table.cpp
@@ -54,4 +54,12 @@ namespace teachos::arch::memory::paging
}
return std::nullopt;
}
+
+ auto operator--(page_table::level & level, int) -> page_table::level
+ {
+ exception_handling::assert(level != page_table::LEVEL1,
+ "[Page table] Attemptd to decrement enum to value outside of range");
+ auto value = static_cast<std::underlying_type<page_table::level>::type>(level);
+ return static_cast<page_table::level>(--value);
+ }
} // namespace teachos::arch::memory::paging