aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/kapi/interrupts.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/kapi/interrupts.cpp')
-rw-r--r--arch/x86_64/kapi/interrupts.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/arch/x86_64/kapi/interrupts.cpp b/arch/x86_64/kapi/interrupts.cpp
index 85acc0fa..37745122 100644
--- a/arch/x86_64/kapi/interrupts.cpp
+++ b/arch/x86_64/kapi/interrupts.cpp
@@ -1,16 +1,26 @@
#include <kapi/interrupts.hpp>
+#include <arch/cpu/flags.hpp>
+
namespace kapi::interrupts
{
- auto enable() -> void
+ auto enabled() -> bool
{
- asm volatile("sti");
+ return arch::cpu::check_flags<arch::cpu::flags::interrupt>();
}
- auto disable() -> void
+ auto enabled(bool value) -> void
{
- asm volatile("cli");
+ // NOLINTNEXTLINE(bugprone-branch-clone)
+ if (value)
+ {
+ asm volatile("sti");
+ }
+ else
+ {
+ asm volatile("cli");
+ }
}
-} // namespace kapi::interrupts \ No newline at end of file
+} // namespace kapi::interrupts