diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-03-30 11:20:08 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-03-30 11:20:08 +0200 |
| commit | 706f529722520429860ce60237d4ef71b2b27601 (patch) | |
| tree | a5a4e89ae3ed25b0af521249134e524a0142814f /arch/x86_64/kapi | |
| parent | 2864e0b061f923a3c73c608b9c27ca4a7116e27c (diff) | |
| parent | 3070bb45b9741165d786b2c5a018ee55c1a82db8 (diff) | |
| download | teachos-706f529722520429860ce60237d4ef71b2b27601.tar.xz teachos-706f529722520429860ce60237d4ef71b2b27601.zip | |
Merge branch 'fmorgner/interrupt-handling' into develop-BA-FS26
Diffstat (limited to 'arch/x86_64/kapi')
| -rw-r--r-- | arch/x86_64/kapi/cpu.cpp | 19 | ||||
| -rw-r--r-- | arch/x86_64/kapi/interrupts.cpp | 16 | ||||
| -rw-r--r-- | arch/x86_64/kapi/system.cpp | 10 |
3 files changed, 36 insertions, 9 deletions
diff --git a/arch/x86_64/kapi/cpu.cpp b/arch/x86_64/kapi/cpu.cpp index 2a0f8f7..12edb0f 100644 --- a/arch/x86_64/kapi/cpu.cpp +++ b/arch/x86_64/kapi/cpu.cpp @@ -1,8 +1,27 @@ #include "kapi/cpu.hpp" +#include "kapi/system.hpp" + +#include "arch/cpu/initialization.hpp" + +#include <atomic> + namespace kapi::cpu { + auto init() -> void + { + auto static constinit is_initialized = std::atomic_flag{}; + + if (is_initialized.test_and_set()) + { + system::panic("[x86_64] CPU has already been initialized."); + } + + arch::cpu::initialize_descriptors(); + arch::cpu::initialize_legacy_interrupts(); + } + auto halt() -> void { asm volatile("1: hlt\njmp 1b"); diff --git a/arch/x86_64/kapi/interrupts.cpp b/arch/x86_64/kapi/interrupts.cpp new file mode 100644 index 0000000..cf1defa --- /dev/null +++ b/arch/x86_64/kapi/interrupts.cpp @@ -0,0 +1,16 @@ +#include "kapi/interrupts.hpp" + +namespace kapi::interrupts +{ + + auto enable() -> void + { + asm volatile("sti"); + } + + auto disable() -> void + { + asm volatile("cli"); + } + +} // namespace kapi::interrupts
\ No newline at end of file diff --git a/arch/x86_64/kapi/system.cpp b/arch/x86_64/kapi/system.cpp index 301169f..09c7152 100644 --- a/arch/x86_64/kapi/system.cpp +++ b/arch/x86_64/kapi/system.cpp @@ -1,16 +1,8 @@ #include "kapi/system.hpp" -#include "arch/cpu/initialization.hpp" -#include "arch/cpu/interrupts.hpp" - namespace kapi::system { - auto memory_initialized() -> void - { - arch::cpu::initialize_descriptors(); - arch::cpu::initialize_legacy_interrupts(); - arch::cpu::enable_interrupts(); - } + auto memory_initialized() -> void {} } // namespace kapi::system
\ No newline at end of file |
