diff options
| -rw-r--r-- | arch/x86_64/include/arch/cpu/interrupts.hpp | 3 | ||||
| -rw-r--r-- | arch/x86_64/kapi/cpu.cpp | 12 | ||||
| -rw-r--r-- | arch/x86_64/src/cpu/interrupts.cpp | 10 | ||||
| -rw-r--r-- | kapi/include/kapi/cpu.hpp | 3 | ||||
| -rw-r--r-- | kapi/include/kapi/cpu/interrupts.hpp | 19 | ||||
| -rw-r--r-- | kernel/src/main.cpp | 1 |
6 files changed, 32 insertions, 16 deletions
diff --git a/arch/x86_64/include/arch/cpu/interrupts.hpp b/arch/x86_64/include/arch/cpu/interrupts.hpp index 08ecd9c..b9adb6e 100644 --- a/arch/x86_64/include/arch/cpu/interrupts.hpp +++ b/arch/x86_64/include/arch/cpu/interrupts.hpp @@ -111,9 +111,6 @@ namespace arch::cpu auto static read() -> interrupt_descriptor_table_register; }; - auto enable_interrupts() -> void; - auto disable_interrupts() -> void; - } // namespace arch::cpu #endif
\ No newline at end of file diff --git a/arch/x86_64/kapi/cpu.cpp b/arch/x86_64/kapi/cpu.cpp index 693d328..8ca3847 100644 --- a/arch/x86_64/kapi/cpu.cpp +++ b/arch/x86_64/kapi/cpu.cpp @@ -3,7 +3,6 @@ #include "kapi/system.hpp" #include "arch/cpu/initialization.hpp" -#include "arch/cpu/interrupts.hpp" #include <atomic> @@ -21,7 +20,6 @@ namespace kapi::cpu arch::cpu::initialize_descriptors(); arch::cpu::initialize_legacy_interrupts(); - arch::cpu::enable_interrupts(); } auto halt() -> void @@ -30,4 +28,14 @@ namespace kapi::cpu __builtin_unreachable(); } + auto enable_interrupts() -> void + { + asm volatile("sti"); + } + + auto disable_interrupts() -> void + { + asm volatile("cli"); + } + } // namespace kapi::cpu diff --git a/arch/x86_64/src/cpu/interrupts.cpp b/arch/x86_64/src/cpu/interrupts.cpp index 6f66bbd..dc236e6 100644 --- a/arch/x86_64/src/cpu/interrupts.cpp +++ b/arch/x86_64/src/cpu/interrupts.cpp @@ -168,14 +168,4 @@ namespace arch::cpu return idtr; } - auto enable_interrupts() -> void - { - asm volatile("sti"); - } - - auto disable_interrupts() -> void - { - asm volatile("cli"); - } - } // namespace arch::cpu
\ No newline at end of file diff --git a/kapi/include/kapi/cpu.hpp b/kapi/include/kapi/cpu.hpp index 1dd7cfe..ade954c 100644 --- a/kapi/include/kapi/cpu.hpp +++ b/kapi/include/kapi/cpu.hpp @@ -1,7 +1,8 @@ #ifndef TEACHOS_KAPI_CPU_HPP #define TEACHOS_KAPI_CPU_HPP -#include "kapi/cpu/exception.hpp" +#include "kapi/cpu/exception.hpp" // IWYU pragma: export +#include "kapi/cpu/interrupts.hpp" // IWYU pragma: export namespace kapi::cpu { diff --git a/kapi/include/kapi/cpu/interrupts.hpp b/kapi/include/kapi/cpu/interrupts.hpp new file mode 100644 index 0000000..26a215e --- /dev/null +++ b/kapi/include/kapi/cpu/interrupts.hpp @@ -0,0 +1,19 @@ +#ifndef TEACHOS_KAPI_CPU_INTERRUPTS_HPP +#define TEACHOS_KAPI_CPU_INTERRUPTS_HPP + +// IWYU pragma: private, include "kapi/cpu.hpp" + +namespace kapi::cpu +{ + + //! @qualifier platform-defined + //! Enable external interrupts. + auto enable_interrupts() -> void; + + //! @qualifier platform-defined + //! Disable external interrupts. + auto disable_interrupts() -> void; + +} // namespace kapi::cpu + +#endif
\ No newline at end of file diff --git a/kernel/src/main.cpp b/kernel/src/main.cpp index 0416ee9..6bd168c 100644 --- a/kernel/src/main.cpp +++ b/kernel/src/main.cpp @@ -94,6 +94,7 @@ auto main() -> int kapi::cpu::init(); kernel::cpu::init(); + kapi::cpu::enable_interrupts(); kapi::memory::init(); kernel::memory::init_heap(kapi::memory::heap_base); |
