aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/kapi/cpu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/kapi/cpu.cpp')
-rw-r--r--arch/x86_64/kapi/cpu.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/arch/x86_64/kapi/cpu.cpp b/arch/x86_64/kapi/cpu.cpp
index 726ec6a..a836b20 100644
--- a/arch/x86_64/kapi/cpu.cpp
+++ b/arch/x86_64/kapi/cpu.cpp
@@ -3,6 +3,7 @@
#include "kapi/acpi.hpp"
#include "kapi/devices.hpp"
#include "kapi/devices/cpu.hpp"
+#include "kapi/memory.hpp"
#include "kapi/system.hpp"
#include "arch/cpu/initialization.hpp"
@@ -11,6 +12,8 @@
#include <kstd/memory>
#include <kstd/print>
+#include <acpi/acpi.hpp>
+
#include <atomic>
#include <ranges>
#include <utility>
@@ -20,8 +23,8 @@ namespace kapi::cpu
namespace
{
- constexpr auto candidate_flags = acpi::processor_local_apic::flags::processor_enabled //
- | acpi::processor_local_apic::flags::online_capable;
+ constexpr auto candidate_flags = ::acpi::processor_local_apic::flags::processor_enabled //
+ | ::acpi::processor_local_apic::flags::online_capable;
}
auto init() -> void
@@ -49,7 +52,7 @@ namespace kapi::cpu
auto static const core_major = kapi::devices::allocate_major_number();
auto static const interrupt_controller_major = kapi::devices::allocate_major_number();
- auto madt = kapi::acpi::get_table<acpi::madt_table_signature>();
+ auto madt = kapi::acpi::get_table<::acpi::madt_table_signature>();
if (!madt)
{
kstd::println("[x86_64:PLT] Failed to find ACPI APIC table");
@@ -57,16 +60,16 @@ namespace kapi::cpu
}
auto lapic_entries = *madt | std::views::filter([](auto const & entry) {
- return entry.type() == acpi::multiple_apic_description_table_entry::types::processor_local_apic;
+ return entry.type() == ::acpi::madt_entry::types::processor_local_apic;
}) | std::views::transform([](auto const & entry) {
- return static_cast<acpi::processor_local_apic const &>(entry);
+ return static_cast<::acpi::processor_local_apic const &>(entry);
}) | std::views::filter([](auto const & entry) {
return static_cast<bool>(entry.active_flags() & candidate_flags);
});
auto bsp_found = false;
auto core_count = 0uz;
- auto local_apic_address = madt->local_interrupt_controller_address();
+ auto local_apic_address = memory::physical_address{madt->local_interrupt_controller_address()};
auto cpu_bus = kstd::make_unique<devices::cpu>(cpu_major, 0);
for (auto const & apic : lapic_entries)