summaryrefslogtreecommitdiff
path: root/dispatcher/dswexec.c
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2010-12-09 20:04:14 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2010-12-09 20:04:14 +0000
commit0f70714e43f23ff5f3e72fa406814e26bdad006a (patch)
treec88f8fbca7e5c63afb07147d504c55311683cb5d /dispatcher/dswexec.c
parent11641cd290cbb4765d39dadd5a4eee278b8769ee (diff)
Notes
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 3c1f85e261d1a..81267b500f8a2 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;