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