diff options
Diffstat (limited to 'dispatcher/dswexec.c')
-rw-r--r-- | dispatcher/dswexec.c | 20 |
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; |