summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/acpica/compiler/aslpredef.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/acpica/compiler/aslpredef.c')
-rw-r--r--sys/contrib/dev/acpica/compiler/aslpredef.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/sys/contrib/dev/acpica/compiler/aslpredef.c b/sys/contrib/dev/acpica/compiler/aslpredef.c
index 47f4015..7f411fb 100644
--- a/sys/contrib/dev/acpica/compiler/aslpredef.c
+++ b/sys/contrib/dev/acpica/compiler/aslpredef.c
@@ -310,7 +310,6 @@ ApCheckPredefinedReturnValue (
break;
default:
-
/*
* All other ops are very difficult or impossible to typecheck at
* compile time. These include all Localx, Argx, and method
@@ -379,6 +378,7 @@ ApCheckForPredefinedObject (
return;
default:
+
break;
}
@@ -624,33 +624,53 @@ ApCheckObjectType (
case PARSEOP_ONE:
case PARSEOP_ONES:
case PARSEOP_INTEGER:
+
ReturnBtype = ACPI_RTYPE_INTEGER;
TypeName = "Integer";
break;
case PARSEOP_STRING_LITERAL:
+
ReturnBtype = ACPI_RTYPE_STRING;
TypeName = "String";
break;
case PARSEOP_BUFFER:
+
ReturnBtype = ACPI_RTYPE_BUFFER;
TypeName = "Buffer";
break;
case PARSEOP_PACKAGE:
case PARSEOP_VAR_PACKAGE:
+
ReturnBtype = ACPI_RTYPE_PACKAGE;
TypeName = "Package";
break;
case PARSEOP_NAMESEG:
case PARSEOP_NAMESTRING:
+ /*
+ * Ignore any named references within a package object.
+ *
+ * For Package objects, references are allowed instead of any of the
+ * standard data types (Integer/String/Buffer/Package). These
+ * references are resolved at runtime. NAMESEG and NAMESTRING are
+ * impossible to typecheck at compile time because the type of
+ * any named object can be changed at runtime (for example,
+ * CopyObject will change the type of the target object).
+ */
+ if (PackageIndex != ACPI_NOT_PACKAGE_ELEMENT)
+ {
+ return (AE_OK);
+ }
+
ReturnBtype = ACPI_RTYPE_REFERENCE;
TypeName = "Reference";
break;
default:
+
/* Not one of the supported object types */
TypeName = UtGetOpName (Op->Asl.ParseOpcode);
OpenPOWER on IntegriCloud