Kernel: Rework AML package and implement indexing in to packages

This commit is contained in:
2024-04-19 11:26:48 +03:00
parent 0bf45069bd
commit 693f90449f
5 changed files with 162 additions and 78 deletions

View File

@@ -2,6 +2,7 @@
#include <kernel/ACPI/AML/Buffer.h>
#include <kernel/ACPI/AML/Node.h>
#include <kernel/ACPI/AML/Package.h>
#include <kernel/ACPI/AML/ParseContext.h>
#include <kernel/ACPI/AML/Reference.h>
@@ -52,8 +53,17 @@ namespace Kernel::ACPI::AML
break;
}
case AML::Node::Type::Package:
AML_TODO("IndexOp source Package");
return ParseResult::Failure;
{
auto package = static_cast<AML::Package*>(source.ptr());
if (index.value() >= package->elements.size())
{
AML_ERROR("IndexOp index is out of package bounds");
return ParseResult::Failure;
}
auto package_element = package->elements[index.value()];
result = MUST(BAN::RefPtr<AML::Reference>::create(package_element));
break;
}
case AML::Node::Type::String:
AML_TODO("IndexOp source String");
return ParseResult::Failure;