diff options
author | jkim <jkim@FreeBSD.org> | 2013-04-04 21:18:57 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2013-04-04 21:18:57 +0000 |
commit | 4b5fbe0ac6228523722afb80af9d5c8ed2ba5ee8 (patch) | |
tree | 2d060ed4fedfc9aace2e673176570faa8ae1d376 /source/compiler/aslprepkg.c | |
parent | bd5edd68a8fda8df18c688919e100f7f1df5ad6b (diff) | |
download | FreeBSD-src-4b5fbe0ac6228523722afb80af9d5c8ed2ba5ee8.zip FreeBSD-src-4b5fbe0ac6228523722afb80af9d5c8ed2ba5ee8.tar.gz |
Import ACPICA 20130328.
Diffstat (limited to 'source/compiler/aslprepkg.c')
-rw-r--r-- | source/compiler/aslprepkg.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/source/compiler/aslprepkg.c b/source/compiler/aslprepkg.c index e8434d5..da34947 100644 --- a/source/compiler/aslprepkg.c +++ b/source/compiler/aslprepkg.c @@ -126,15 +126,35 @@ ApCheckPackage ( Count = (UINT32) Op->Asl.Value.Integer; /* - * Most packages must have at least one element. The only exception - * is the variable-length package (ACPI_PTYPE1_VAR). + * Many of the variable-length top-level packages are allowed to simply + * have zero elements. This allows the BIOS to tell the host that even + * though the predefined name/method exists, the feature is not supported. + * Other package types require one or more elements. In any case, there + * is no need to continue validation. */ if (!Count) { - if (Package->RetInfo.Type != ACPI_PTYPE1_VAR) + switch (Package->RetInfo.Type) { + case ACPI_PTYPE1_FIXED: + case ACPI_PTYPE1_OPTION: + case ACPI_PTYPE2_PKG_COUNT: + case ACPI_PTYPE2_REV_FIXED: + ApZeroLengthPackage (Predefined->Info.Name, ParentOp); + break; + + case ACPI_PTYPE1_VAR: + case ACPI_PTYPE2: + case ACPI_PTYPE2_COUNT: + case ACPI_PTYPE2_FIXED: + case ACPI_PTYPE2_MIN: + case ACPI_PTYPE2_FIX_VAR: + default: + + break; } + return; } |