#include namespace kapi::interrupts { auto enabled() -> bool { auto value = false; asm volatile("pushfq\n" "pop %0\n" "and $0x200, %0" : "=r"(value)); return value; } auto enabled(bool value) -> void { // NOLINTNEXTLINE(bugprone-branch-clone) if (value) { asm volatile("sti"); } else { asm volatile("cli"); } } } // namespace kapi::interrupts