aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/x86_64/kapi/platform.cpp17
1 files changed, 6 insertions, 11 deletions
diff --git a/arch/x86_64/kapi/platform.cpp b/arch/x86_64/kapi/platform.cpp
index 380fc66..c6e41d2 100644
--- a/arch/x86_64/kapi/platform.cpp
+++ b/arch/x86_64/kapi/platform.cpp
@@ -2,7 +2,6 @@
#include "kapi/acpi.hpp"
#include "kapi/devices.hpp"
-#include "kapi/memory.hpp"
#include "arch/devices/local_apic.hpp"
@@ -15,11 +14,6 @@
namespace kapi::platform
{
- namespace
- {
- constexpr auto default_lapic_address = kapi::memory::physical_address{0xFEE0'0000};
- }
-
auto discover_cpu_topology(kapi::devices::bus & bus) -> bool
{
auto static const core_major = kapi::devices::allocate_major_number();
@@ -33,8 +27,9 @@ namespace kapi::platform
return false;
}
- auto const * current = reinterpret_cast<std::byte const *>(madt.get()) + sizeof(kapi::acpi::madt_header);
- auto const * end = reinterpret_cast<std::byte const *>(madt.get()) + madt->length();
+ auto real_madt = static_cast<acpi::madt_header const *>(madt.get());
+ auto current = reinterpret_cast<std::byte const *>(madt.get()) + sizeof(kapi::acpi::madt_header);
+ auto end = reinterpret_cast<std::byte const *>(madt.get()) + madt->length();
auto bsp_found = false;
auto core_count = 0uz;
@@ -49,9 +44,9 @@ namespace kapi::platform
{
auto is_bsp = !bsp_found;
bsp_found = true;
-
auto lapic = kstd::make_unique<arch::devices::local_apic>(interrupt_controller_major, core_index,
- local_apic->apic_id(), default_lapic_address);
+ local_apic->apic_id(),
+ real_madt->local_interrupt_controller_address());
if (kapi::platform::cpu_detected(bus, core_major, core_index, local_apic->processor_id(), is_bsp,
std::move(lapic)))
{
@@ -68,4 +63,4 @@ namespace kapi::platform
return core_count > 0;
}
-} // namespace kapi::platform \ No newline at end of file
+} // namespace kapi::platform