1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-20 12:05:07 +00:00

Kernel: Move ACPI initialization from init.cpp to ACPI::initialize()

This commit is contained in:
Andreas Kling 2020-04-09 13:39:10 +02:00
parent f25d2f5518
commit 95e44a33c1
4 changed files with 104 additions and 26 deletions

View file

@ -28,6 +28,7 @@
#include <Kernel/ACPI/ACPIDynamicParser.h>
#include <Kernel/ACPI/ACPIStaticParser.h>
#include <Kernel/ACPI/DMIDecoder.h>
#include <Kernel/ACPI/Initialize.h>
#include <Kernel/ACPI/MultiProcessorParser.h>
#include <Kernel/Arch/i386/CPU.h>
#include <Kernel/CMOS.h>
@ -85,7 +86,6 @@ namespace Kernel {
[[noreturn]] static void init_stage2();
static void setup_serial_debug();
static void setup_acpi();
static void setup_interrupts();
static void setup_time_management();
@ -123,7 +123,7 @@ extern "C" [[noreturn]] void init()
(*ctor)();
setup_interrupts();
setup_acpi();
ACPI::initialize();
new VFS;
new KeyboardDevice;
@ -362,30 +362,6 @@ extern "C" int __cxa_atexit(void (*)(void*), void*, void*)
return 0;
}
void setup_acpi()
{
if (!kernel_command_line().contains("acpi")) {
ACPI::DynamicParser::initialize_without_rsdp();
return;
}
auto acpi = kernel_command_line().get("acpi");
if (acpi == "off") {
ACPI::Parser::initialize_limited();
return;
}
if (acpi == "on") {
ACPI::DynamicParser::initialize_without_rsdp();
return;
}
if (acpi == "limited") {
ACPI::StaticParser::initialize_without_rsdp();
return;
}
klog() << "acpi boot argmuent has an invalid value.";
hang();
}
void setup_interrupts()
{
InterruptManagement::initialize();