aboutsummaryrefslogtreecommitdiff
path: root/compiler/aslcompiler.y
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/aslcompiler.y')
-rw-r--r--compiler/aslcompiler.y15
1 files changed, 15 insertions, 0 deletions
diff --git a/compiler/aslcompiler.y b/compiler/aslcompiler.y
index 5574f8815950..92517a4234cb 100644
--- a/compiler/aslcompiler.y
+++ b/compiler/aslcompiler.y
@@ -728,6 +728,21 @@ ASLCode
| error {YYABORT; $$ = NULL;}
;
+/*
+ * Note concerning support for "module-level code".
+ *
+ * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control
+ * methods (the so-called module-level code.) This support was explicitly
+ * removed in ACPI 2.0, but this type of code continues to be created by
+ * BIOS vendors. In order to support the disassembly and recompilation of
+ * such code (and the porting of ASL code to iASL), iASL supports this
+ * code in violation of the current ACPI specification.
+ *
+ * The grammar change to support module-level code is to revert the
+ * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the
+ * original use of {TermList} instead (see below.) This allows the use
+ * of Type1 and Type2 opcodes at module level.
+ */
DefinitionBlockTerm
: PARSEOP_DEFINITIONBLOCK '(' {$<n>$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);}
String ','