diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-04-06 19:04:40 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-04-06 19:04:40 +0200 |
| commit | fe26083101537df306153e7bea7c291a041897f7 (patch) | |
| tree | 0f26687fb172fc1852e9c4d58c351a76e9ceb50c /arch/x86_64/kapi/acpi.cpp | |
| parent | 2a3575a267dede6a364386c0bd6edcff92421f0d (diff) | |
| parent | d5c2e101d62f6b4b69c45c127e7a729d246da566 (diff) | |
| download | teachos-fe26083101537df306153e7bea7c291a041897f7.tar.xz teachos-fe26083101537df306153e7bea7c291a041897f7.zip | |
Merge branch 'fmorgner/develop-BA-FS26/apci' into develop-BA-FS26
This patchset introduces basic support for ACPI. Currently, the only
user of that support is the CPU discovery subsystem. It uses the
processed ACPI information to initialize CPU core devices and their
associated local APICs.
Diffstat (limited to 'arch/x86_64/kapi/acpi.cpp')
| -rw-r--r-- | arch/x86_64/kapi/acpi.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/arch/x86_64/kapi/acpi.cpp b/arch/x86_64/kapi/acpi.cpp new file mode 100644 index 0000000..ec38aee --- /dev/null +++ b/arch/x86_64/kapi/acpi.cpp @@ -0,0 +1,30 @@ +#include "kapi/acpi.hpp" + +#include "arch/boot/boot.hpp" + +#include <kstd/memory> + +namespace kapi::acpi +{ + + auto get_root_pointer() -> kstd::observer_ptr<root_system_description_pointer const> + { + auto const & mbi = kapi::boot::bootstrap_information.mbi; + auto system_description_pointer = static_cast<kapi::acpi::root_system_description_pointer const *>(nullptr); + + if (auto const & xsdp = mbi->maybe_acpi_xsdp()) + { + auto data = xsdp->pointer().data(); + + system_description_pointer = reinterpret_cast<kapi::acpi::root_system_description_pointer const *>(data); + } + else if (auto const & rsdp = mbi->maybe_acpi_rsdp()) + { + auto data = rsdp->pointer().data(); + system_description_pointer = reinterpret_cast<kapi::acpi::root_system_description_pointer const *>(data); + } + + return kstd::make_observer(system_description_pointer); + } + +} // namespace kapi::acpi
\ No newline at end of file |
