aboutsummaryrefslogtreecommitdiff
path: root/kernel/kapi/platform.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kapi/platform.cpp')
-rw-r--r--kernel/kapi/platform.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/kernel/kapi/platform.cpp b/kernel/kapi/platform.cpp
new file mode 100644
index 0000000..deb72de
--- /dev/null
+++ b/kernel/kapi/platform.cpp
@@ -0,0 +1,32 @@
+#include "kapi/platform.hpp"
+
+#include "kapi/devices.hpp"
+
+#include "kernel/devices/cpu.hpp"
+
+#include <kstd/memory>
+
+#include <cstdint>
+#include <utility>
+
+namespace kapi::platform
+{
+
+ auto cpu_detected(kapi::devices::bus & bus, std::uint64_t hardware_id, bool is_bsp) -> bool
+ {
+ auto static const core_major = kapi::devices::allocate_major_number();
+ auto static const interrupt_controller_major = kapi::devices::allocate_major_number();
+ auto static core_index = 0uz;
+
+ auto core = kstd::make_unique<kernel::devices::cpu::core>(core_major, core_index, hardware_id, is_bsp);
+ auto lapic = kapi::platform::create_core_interrupt_controller(interrupt_controller_major, core_index, hardware_id);
+
+ core->add_child(std::move(lapic));
+ bus.add_child(std::move(core));
+
+ ++core_index;
+
+ return true;
+ }
+
+} // namespace kapi::platform \ No newline at end of file