diff options
author | njl <njl@FreeBSD.org> | 2004-04-14 02:10:27 +0000 |
---|---|---|
committer | njl <njl@FreeBSD.org> | 2004-04-14 02:10:27 +0000 |
commit | 3c67c2e8d58f25daaed0d50f5d4355084f1faf87 (patch) | |
tree | 9c760be068e0b25d22acbac5eaeba299b68429ff /sys/contrib/dev/acpica/excreate.c | |
parent | 61c302fc074304c548f2de409a49f0c6c9564470 (diff) | |
download | FreeBSD-src-3c67c2e8d58f25daaed0d50f5d4355084f1faf87.zip FreeBSD-src-3c67c2e8d58f25daaed0d50f5d4355084f1faf87.tar.gz |
Import ACPI-CA 20040402 distribution.
Diffstat (limited to 'sys/contrib/dev/acpica/excreate.c')
-rw-r--r-- | sys/contrib/dev/acpica/excreate.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/sys/contrib/dev/acpica/excreate.c b/sys/contrib/dev/acpica/excreate.c index 8f4be4c..fb6e5ab 100644 --- a/sys/contrib/dev/acpica/excreate.c +++ b/sys/contrib/dev/acpica/excreate.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: excreate - Named object creation - * $Revision: 102 $ + * $Revision: 103 $ * *****************************************************************************/ @@ -159,7 +159,8 @@ AcpiExCreateAlias ( AliasNode = (ACPI_NAMESPACE_NODE *) WalkState->Operands[0]; TargetNode = (ACPI_NAMESPACE_NODE *) WalkState->Operands[1]; - if (TargetNode->Type == ACPI_TYPE_LOCAL_ALIAS) + if ((TargetNode->Type == ACPI_TYPE_LOCAL_ALIAS) || + (TargetNode->Type == ACPI_TYPE_LOCAL_METHOD_ALIAS)) { /* * Dereference an existing alias so that we don't create a chain @@ -167,7 +168,7 @@ AcpiExCreateAlias ( * always exactly one level of indirection away from the * actual aliased name. */ - TargetNode = (ACPI_NAMESPACE_NODE *) TargetNode->Object; + TargetNode = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, TargetNode->Object); } /* @@ -194,6 +195,17 @@ AcpiExCreateAlias ( AliasNode->Object = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, TargetNode); break; + case ACPI_TYPE_METHOD: + + /* + * The new alias has the type ALIAS and points to the original + * NS node, not the object itself. This is because for these + * types, the object can change dynamically via a Store. + */ + AliasNode->Type = ACPI_TYPE_LOCAL_METHOD_ALIAS; + AliasNode->Object = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, TargetNode); + break; + default: /* Attach the original source object to the new Alias Node */ |