aboutsummaryrefslogtreecommitdiff
path: root/dispatcher/dswexec.c
diff options
context:
space:
mode:
Diffstat (limited to 'dispatcher/dswexec.c')
-rw-r--r--dispatcher/dswexec.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/dispatcher/dswexec.c b/dispatcher/dswexec.c
index 3c1f85e261d1..81267b500f8a 100644
--- a/dispatcher/dswexec.c
+++ b/dispatcher/dswexec.c
@@ -400,10 +400,26 @@ AcpiDsExecBeginOp (
* we must enter this object into the namespace. The created
* object is temporary and will be deleted upon completion of
* the execution of this method.
+ *
+ * Note 10/2010: Except for the Scope() op. This opcode does
+ * not actually create a new object, it refers to an existing
+ * object. However, for Scope(), we want to indeed open a
+ * new scope.
*/
- Status = AcpiDsLoad2BeginOp (WalkState, NULL);
+ if (Op->Common.AmlOpcode != AML_SCOPE_OP)
+ {
+ Status = AcpiDsLoad2BeginOp (WalkState, NULL);
+ }
+ else
+ {
+ Status = AcpiDsScopeStackPush (Op->Named.Node,
+ Op->Named.Node->Type, WalkState);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS (Status);
+ }
+ }
}
-
break;