diff options
| author | Jung-uk Kim <jkim@FreeBSD.org> | 2010-07-06 17:18:05 +0000 |
|---|---|---|
| committer | Jung-uk Kim <jkim@FreeBSD.org> | 2010-07-06 17:18:05 +0000 |
| commit | 6d31afa8e3ab79bfa6c97c341af73f4fc093351a (patch) | |
| tree | 514e3ade7be23ac83127870abf009b5e5ae1d36f /dispatcher/dsobject.c | |
| parent | f2bf96d30fe08965ffd53a28099131ac030e43d5 (diff) | |
Notes
Diffstat (limited to 'dispatcher/dsobject.c')
| -rw-r--r-- | dispatcher/dsobject.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/dispatcher/dsobject.c b/dispatcher/dsobject.c index 3d8fce40390b..9963bd3b804a 100644 --- a/dispatcher/dsobject.c +++ b/dispatcher/dsobject.c @@ -159,6 +159,7 @@ AcpiDsBuildInternalObject ( { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; + ACPI_OBJECT_TYPE Type; ACPI_FUNCTION_TRACE (DsBuildInternalObject); @@ -241,7 +242,20 @@ AcpiDsBuildInternalObject ( return_ACPI_STATUS (Status); } - switch (Op->Common.Node->Type) + /* + * Special handling for Alias objects. We need to setup the type + * and the Op->Common.Node to point to the Alias target. Note, + * Alias has at most one level of indirection internally. + */ + Type = Op->Common.Node->Type; + if (Type == ACPI_TYPE_LOCAL_ALIAS) + { + Type = ObjDesc->Common.Type; + Op->Common.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, + Op->Common.Node->Object); + } + + switch (Type) { /* * For these types, we need the actual node, not the subobject. |
