diff --git a/source/components/debugger/dbdisply.c b/source/components/debugger/dbdisply.c index 10dbe8a7a..5c8adeee4 100644 --- a/source/components/debugger/dbdisply.c +++ b/source/components/debugger/dbdisply.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbdisply - debug display commands - * $Revision: 1.74 $ + * $Revision: 1.76 $ * ******************************************************************************/ @@ -411,9 +411,15 @@ AcpiDbDecodeInternalObject ( return; } - AcpiOsPrintf (" %s", AcpiUtGetTypeName (ObjDesc->Common.Type)); + if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) + { + AcpiOsPrintf ("%p", ObjDesc); + return; + } - switch (ObjDesc->Common.Type) + AcpiOsPrintf (" %s", AcpiUtGetObjectTypeName (ObjDesc)); + + switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) { case ACPI_TYPE_INTEGER: @@ -449,12 +455,47 @@ AcpiDbDecodeInternalObject ( default: - /* No additional display for other types */ + + AcpiOsPrintf ("%p", ObjDesc); break; } } +/******************************************************************************* + * + * FUNCTION: AcpiDbDecodeNode + * + * PARAMETERS: Node - Object to be displayed + * + * RETURN: None + * + * DESCRIPTION: Short display of a namespace node + * + ******************************************************************************/ + +void +AcpiDbDecodeNode ( + ACPI_NAMESPACE_NODE *Node) +{ + + + AcpiOsPrintf (" Name %4.4s Type-%s", + Node->Name.Ascii, AcpiUtGetTypeName (Node->Type)); + + if (Node->Flags & ANOBJ_METHOD_ARG) + { + AcpiOsPrintf (" [Method Arg]"); + } + if (Node->Flags & ANOBJ_METHOD_LOCAL) + { + AcpiOsPrintf (" [Method Local]"); + } + + AcpiDbDecodeInternalObject (AcpiNsGetAttachedObject (Node)); +} + + /******************************************************************************* * * FUNCTION: AcpiDbDisplayInternalObject @@ -496,24 +537,13 @@ AcpiDbDisplayInternalObject ( case ACPI_DESC_TYPE_NAMED: - AcpiOsPrintf (" Name %4.4s Type-%s", - ((ACPI_NAMESPACE_NODE *)ObjDesc)->Name.Ascii, - AcpiUtGetTypeName (((ACPI_NAMESPACE_NODE *) ObjDesc)->Type)); - - if (((ACPI_NAMESPACE_NODE *) ObjDesc)->Flags & ANOBJ_METHOD_ARG) - { - AcpiOsPrintf (" [Method Arg]"); - } - if (((ACPI_NAMESPACE_NODE *) ObjDesc)->Flags & ANOBJ_METHOD_LOCAL) - { - AcpiOsPrintf (" [Method Local]"); - } + AcpiDbDecodeNode ((ACPI_NAMESPACE_NODE *) ObjDesc); break; case ACPI_DESC_TYPE_OPERAND: - Type = ObjDesc->Common.Type; + Type = ACPI_GET_OBJECT_TYPE (ObjDesc); if (Type > INTERNAL_TYPE_MAX) { AcpiOsPrintf (" Type %hX [Invalid Type]", Type); @@ -522,12 +552,14 @@ AcpiDbDisplayInternalObject ( /* Decode the ACPI object type */ - switch (ObjDesc->Common.Type) + switch (ACPI_GET_OBJECT_TYPE (ObjDesc)) { case INTERNAL_TYPE_REFERENCE: + switch (ObjDesc->Reference.Opcode) { case AML_LOCAL_OP: + AcpiOsPrintf ("[Local%d] ", ObjDesc->Reference.Offset); if (WalkState) { @@ -537,7 +569,9 @@ AcpiDbDisplayInternalObject ( } break; + case AML_ARG_OP: + AcpiOsPrintf ("[Arg%d] ", ObjDesc->Reference.Offset); if (WalkState) { @@ -547,24 +581,52 @@ AcpiDbDisplayInternalObject ( } break; + case AML_DEBUG_OP: + AcpiOsPrintf ("[Debug] "); break; + case AML_INDEX_OP: - AcpiOsPrintf ("[Index] "); + + AcpiOsPrintf ("[Index] "); AcpiDbDecodeInternalObject (ObjDesc->Reference.Object); break; + + case AML_REF_OF_OP: + + AcpiOsPrintf ("[Reference] "); + + /* Reference can be to a Node or an Operand object */ + + switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc->Reference.Object)) + { + case ACPI_DESC_TYPE_NAMED: + AcpiDbDecodeNode (ObjDesc->Reference.Object); + break; + + case ACPI_DESC_TYPE_OPERAND: + AcpiDbDecodeInternalObject (ObjDesc->Reference.Object); + break; + + default: + break; + } + break; + + default: + AcpiOsPrintf ("Unknown Reference opcode %X\n", ObjDesc->Reference.Opcode); break; - } break; default: + AcpiOsPrintf (" "); AcpiOsPrintf (" "); AcpiDbDecodeInternalObject (ObjDesc);