diff options
Diffstat (limited to 'sys/contrib/dev/acpica/exresnte.c')
-rw-r--r-- | sys/contrib/dev/acpica/exresnte.c | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/sys/contrib/dev/acpica/exresnte.c b/sys/contrib/dev/acpica/exresnte.c index 5e450dd..2267ef4 100644 --- a/sys/contrib/dev/acpica/exresnte.c +++ b/sys/contrib/dev/acpica/exresnte.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exresnte - AML Interpreter object resolution - * $Revision: 62 $ + * $Revision: 63 $ * *****************************************************************************/ @@ -121,6 +121,8 @@ #include "acdispat.h" #include "acinterp.h" #include "acnamesp.h" +#include "acparser.h" +#include "amlcode.h" #define _COMPONENT ACPI_EXECUTER @@ -327,12 +329,27 @@ AcpiExResolveNodeToValue ( case ACPI_TYPE_LOCAL_REFERENCE: - /* No named references are allowed here */ + switch (SourceDesc->Reference.Opcode) + { + case AML_LOAD_OP: - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unsupported Reference opcode %X\n", - SourceDesc->Reference.Opcode)); + /* This is a DdbHandle */ + /* Return an additional reference to the object */ - return_ACPI_STATUS (AE_AML_OPERAND_TYPE); + ObjDesc = SourceDesc; + AcpiUtAddReference (ObjDesc); + break; + + default: + /* No named references are allowed here */ + + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unsupported Reference opcode %X (%s)\n", + SourceDesc->Reference.Opcode, + AcpiPsGetOpcodeName (SourceDesc->Reference.Opcode))); + + return_ACPI_STATUS (AE_AML_OPERAND_TYPE); + } + break; /* Default case is for unknown types */ |