diff options
author | Jung-uk Kim <jkim@FreeBSD.org> | 2009-10-13 21:27:35 +0000 |
---|---|---|
committer | Jung-uk Kim <jkim@FreeBSD.org> | 2009-10-13 21:27:35 +0000 |
commit | a19285149615c60009a9c5190c260de14b2293f7 (patch) | |
tree | b5f69a91eb4b1113dce613689bc3dd6bb7b24861 /dispatcher | |
parent | 7c48a2bb90aa31d333d6d4d78e28b7ee84234c15 (diff) | |
download | src-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.c | 52 |
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); + } } /* |