aboutsummaryrefslogtreecommitdiff
path: root/dispatcher
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2009-10-13 21:27:35 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2009-10-13 21:27:35 +0000
commita19285149615c60009a9c5190c260de14b2293f7 (patch)
treeb5f69a91eb4b1113dce613689bc3dd6bb7b24861 /dispatcher
parent7c48a2bb90aa31d333d6d4d78e28b7ee84234c15 (diff)
downloadsrc-a19285149615c60009a9c5190c260de14b2293f7.tar.gz
src-a19285149615c60009a9c5190c260de14b2293f7.zip
Import ACPICA 20091013.vendor/acpica/20091013
Notes
Notes: svn path=/vendor-sys/acpica/dist/; revision=198054 svn path=/vendor-sys/acpica/20091013/; revision=198055; tag=vendor/acpica/20091013
Diffstat (limited to 'dispatcher')
-rw-r--r--dispatcher/dswload.c52
1 files changed, 34 insertions, 18 deletions
diff --git a/dispatcher/dswload.c b/dispatcher/dswload.c
index 2c067f14d9ba..bb92847e788f 100644
--- a/dispatcher/dswload.c
+++ b/dispatcher/dswload.c
@@ -263,7 +263,7 @@ AcpiDsLoad1BeginOp (
* Target of Scope() not found. Generate an External for it, and
* insert the name into the namespace.
*/
- AcpiDmAddToExternalList (Path, ACPI_TYPE_DEVICE, 0);
+ AcpiDmAddToExternalList (Op, Path, ACPI_TYPE_DEVICE, 0);
Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType,
ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT,
WalkState, &Node);
@@ -732,29 +732,45 @@ AcpiDsLoad2BeginOp (
break;
case AML_SCOPE_OP:
- /*
- * The Path is an object reference to an existing object.
- * Don't enter the name into the namespace, but look it up
- * for use later.
- */
- Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType,
- ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT,
- WalkState, &(Node));
- if (ACPI_FAILURE (Status))
+
+ /* Special case for Scope(\) -> refers to the Root node */
+
+ if (Op && (Op->Named.Node == AcpiGbl_RootNode))
{
-#ifdef ACPI_ASL_COMPILER
- if (Status == AE_NOT_FOUND)
+ Node = Op->Named.Node;
+
+ Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState);
+ if (ACPI_FAILURE (Status))
{
- Status = AE_OK;
+ return_ACPI_STATUS (Status);
}
- else
+ }
+ else
+ {
+ /*
+ * The Path is an object reference to an existing object.
+ * Don't enter the name into the namespace, but look it up
+ * for use later.
+ */
+ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType,
+ ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT,
+ WalkState, &(Node));
+ if (ACPI_FAILURE (Status))
{
- ACPI_ERROR_NAMESPACE (BufferPtr, Status);
- }
+#ifdef ACPI_ASL_COMPILER
+ if (Status == AE_NOT_FOUND)
+ {
+ Status = AE_OK;
+ }
+ else
+ {
+ ACPI_ERROR_NAMESPACE (BufferPtr, Status);
+ }
#else
- ACPI_ERROR_NAMESPACE (BufferPtr, Status);
+ ACPI_ERROR_NAMESPACE (BufferPtr, Status);
#endif
- return_ACPI_STATUS (Status);
+ return_ACPI_STATUS (Status);
+ }
}
/*