summaryrefslogtreecommitdiffstats
path: root/source/compiler/aslfold.c
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2012-09-14 22:53:11 +0000
committerjkim <jkim@FreeBSD.org>2012-09-14 22:53:11 +0000
commitda9b951a892d96e0521abeec09d4345ddf04ab8d (patch)
tree033c7834a7ab5fe0b48b11ac066372bfd32f2c22 /source/compiler/aslfold.c
parent08e6f22ac3350a67c38e9b42b5dce2a7d5fa08b4 (diff)
downloadFreeBSD-src-da9b951a892d96e0521abeec09d4345ddf04ab8d.zip
FreeBSD-src-da9b951a892d96e0521abeec09d4345ddf04ab8d.tar.gz
Import ACPICA 20120913.
Diffstat (limited to 'source/compiler/aslfold.c')
-rw-r--r--source/compiler/aslfold.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/source/compiler/aslfold.c b/source/compiler/aslfold.c
index 6c8cb37..425a328 100644
--- a/source/compiler/aslfold.c
+++ b/source/compiler/aslfold.c
@@ -200,6 +200,19 @@ OpcAmlCheckForConstant (
DbgPrint (ASL_PARSE_OUTPUT, "[%.4d] Opcode: %12.12s ",
Op->Asl.LogicalLineNumber, Op->Asl.ParseOpName);
+ /*
+ * These opcodes do not appear in the OpcodeInfo table, but
+ * they represent constants, so abort the constant walk now.
+ */
+ if ((WalkState->Opcode == AML_RAW_DATA_BYTE) ||
+ (WalkState->Opcode == AML_RAW_DATA_WORD) ||
+ (WalkState->Opcode == AML_RAW_DATA_DWORD) ||
+ (WalkState->Opcode == AML_RAW_DATA_QWORD))
+ {
+ WalkState->WalkType = ACPI_WALK_CONST_OPTIONAL;
+ return (AE_TYPE);
+ }
+
if (!(WalkState->OpInfo->Flags & AML_CONSTANT))
{
/* The opcode is not a Type 3/4/5 opcode */
@@ -254,8 +267,8 @@ OpcAmlCheckForConstant (
{
DbgPrint (ASL_PARSE_OUTPUT, " TERMARG");
}
- DbgPrint (ASL_PARSE_OUTPUT, "\n");
+ DbgPrint (ASL_PARSE_OUTPUT, "\n");
return (AE_OK);
}
OpenPOWER on IntegriCloud