summaryrefslogtreecommitdiff
path: root/source/compiler/aslxref.c
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2019-03-29 16:40:11 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2019-03-29 16:40:11 +0000
commit222d1f49264d00972299c6ff23de8100be561897 (patch)
treee2a1cfd1ec138c9cc64abc609558682be382674f /source/compiler/aslxref.c
parent805e3b079cfb4a9e01aa35dc378a35f922979517 (diff)
Notes
Diffstat (limited to 'source/compiler/aslxref.c')
-rw-r--r--source/compiler/aslxref.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/source/compiler/aslxref.c b/source/compiler/aslxref.c
index b3067feb7c4e..99f6c4a07c0b 100644
--- a/source/compiler/aslxref.c
+++ b/source/compiler/aslxref.c
@@ -613,7 +613,8 @@ XfNamespaceLocateBegin (
(Op->Asl.ParseOpcode != PARSEOP_NAMESTRING) &&
(Op->Asl.ParseOpcode != PARSEOP_NAMESEG) &&
(Op->Asl.ParseOpcode != PARSEOP_METHODCALL) &&
- (Op->Asl.ParseOpcode != PARSEOP_EXTERNAL))
+ (Op->Asl.ParseOpcode != PARSEOP_EXTERNAL) &&
+ (OpInfo->Type != AML_TYPE_NAMED_FIELD))
{
return_ACPI_STATUS (AE_OK);
}
@@ -637,7 +638,8 @@ XfNamespaceLocateBegin (
if ((Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) ||
(Op->Asl.ParseOpcode == PARSEOP_NAMESEG) ||
(Op->Asl.ParseOpcode == PARSEOP_METHODCALL) ||
- (Op->Asl.ParseOpcode == PARSEOP_EXTERNAL))
+ (Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) ||
+ (OpInfo->Type == AML_TYPE_NAMED_FIELD))
{
/*
* These are name references, do not push the scope stack
@@ -674,6 +676,10 @@ XfNamespaceLocateBegin (
Path = NextOp->Asl.Value.String;
}
+ else if (OpInfo->Type == AML_TYPE_NAMED_FIELD)
+ {
+ Path = Op->Asl.Child->Asl.Value.String;
+ }
else
{
Path = Op->Asl.Value.String;
@@ -702,7 +708,7 @@ XfNamespaceLocateBegin (
* We didn't find the name reference by path -- we can qualify this
* a little better before we print an error message
*/
- if (strlen (Path) == ACPI_NAME_SIZE)
+ if (strlen (Path) == ACPI_NAMESEG_SIZE)
{
/* A simple, one-segment ACPI name */
@@ -764,7 +770,7 @@ XfNamespaceLocateBegin (
* doesn't exist or just can't be reached. However, we
* can differentiate between a NameSeg vs. NamePath.
*/
- if (strlen (Op->Asl.ExternalName) == ACPI_NAME_SIZE)
+ if (strlen (Op->Asl.ExternalName) == ACPI_NAMESEG_SIZE)
{
AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op,
Op->Asl.ExternalName);