From e9b880648c18d3680ae10cc5660f0dbe981af5d8 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Tue, 29 Sep 2026 10:41:36 +0200 Subject: kapi/interrupt: rework enablement API --- arch/x86_64/kapi/interrupts.cpp | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'arch/x86_64/kapi/interrupts.cpp') diff --git a/arch/x86_64/kapi/interrupts.cpp b/arch/x86_64/kapi/interrupts.cpp index 85acc0fa..8d863bad 100644 --- a/arch/x86_64/kapi/interrupts.cpp +++ b/arch/x86_64/kapi/interrupts.cpp @@ -3,14 +3,27 @@ namespace kapi::interrupts { - auto enable() -> void + auto enabled() -> bool { - asm volatile("sti"); + auto value = false; + asm volatile("pushfq\n" + "pop %0\n" + "and $0x200, %0" + : "=r"(value)); + return value; } - 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 -- cgit v1.2.3 From a8f2e1a0edc37cd1c06447c42ff94f3370e8a6bc Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Tue, 29 Sep 2026 17:11:15 +0200 Subject: x86_64: fix flag reading --- arch/x86_64/kapi/interrupts.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'arch/x86_64/kapi/interrupts.cpp') diff --git a/arch/x86_64/kapi/interrupts.cpp b/arch/x86_64/kapi/interrupts.cpp index 8d863bad..37745122 100644 --- a/arch/x86_64/kapi/interrupts.cpp +++ b/arch/x86_64/kapi/interrupts.cpp @@ -1,16 +1,13 @@ #include +#include + namespace kapi::interrupts { auto enabled() -> bool { - auto value = false; - asm volatile("pushfq\n" - "pop %0\n" - "and $0x200, %0" - : "=r"(value)); - return value; + return arch::cpu::check_flags(); } auto enabled(bool value) -> void -- cgit v1.2.3