summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/acpica/dbdisply.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/acpica/dbdisply.c')
-rw-r--r--sys/contrib/dev/acpica/dbdisply.c403
1 files changed, 78 insertions, 325 deletions
diff --git a/sys/contrib/dev/acpica/dbdisply.c b/sys/contrib/dev/acpica/dbdisply.c
index 2f74d1f..11f6930 100644
--- a/sys/contrib/dev/acpica/dbdisply.c
+++ b/sys/contrib/dev/acpica/dbdisply.c
@@ -1,7 +1,7 @@
/*******************************************************************************
*
* Module Name: dbdisply - debug display commands
- * $Revision: 89 $
+ * $Revision: 95 $
*
******************************************************************************/
@@ -122,6 +122,7 @@
#include "acparser.h"
#include "acinterp.h"
#include "acdebug.h"
+#include "acdisasm.h"
#ifdef ACPI_DEBUGGER
@@ -388,272 +389,6 @@ DumpNte:
/*******************************************************************************
*
- * FUNCTION: AcpiDbDecodeInternalObject
- *
- * PARAMETERS: ObjDesc - Object to be displayed
- *
- * RETURN: None
- *
- * DESCRIPTION: Short display of an internal object. Numbers and Strings.
- *
- ******************************************************************************/
-
-void
-AcpiDbDecodeInternalObject (
- ACPI_OPERAND_OBJECT *ObjDesc)
-{
- UINT32 i;
-
-
- if (!ObjDesc)
- {
- AcpiOsPrintf (" Uninitialized");
- return;
- }
-
- if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
- {
- AcpiOsPrintf (" %p", ObjDesc);
- return;
- }
-
- AcpiOsPrintf (" %s", AcpiUtGetObjectTypeName (ObjDesc));
-
- switch (ACPI_GET_OBJECT_TYPE (ObjDesc))
- {
- case ACPI_TYPE_INTEGER:
-
- AcpiOsPrintf (" %8.8X%8.8X", ACPI_HIDWORD (ObjDesc->Integer.Value),
- ACPI_LODWORD (ObjDesc->Integer.Value));
- break;
-
-
- case ACPI_TYPE_STRING:
-
- AcpiOsPrintf ("(%d) \"%.24s",
- ObjDesc->String.Length, ObjDesc->String.Pointer);
-
- if (ObjDesc->String.Length > 24)
- {
- AcpiOsPrintf ("...");
- }
- else
- {
- AcpiOsPrintf ("\"");
- }
- break;
-
-
- case ACPI_TYPE_BUFFER:
-
- AcpiOsPrintf ("(%d)", ObjDesc->Buffer.Length);
- for (i = 0; (i < 8) && (i < ObjDesc->Buffer.Length); i++)
- {
- AcpiOsPrintf (" %2.2X", ObjDesc->Buffer.Pointer[i]);
- }
- break;
-
-
- default:
-
- 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 ("<Node> Name %4.4s",
- Node->Name.Ascii);
-
- if (Node->Flags & ANOBJ_METHOD_ARG)
- {
- AcpiOsPrintf (" [Method Arg]");
- }
- if (Node->Flags & ANOBJ_METHOD_LOCAL)
- {
- AcpiOsPrintf (" [Method Local]");
- }
-
- AcpiDbDecodeInternalObject (AcpiNsGetAttachedObject (Node));
-}
-
-
-/*******************************************************************************
- *
- * FUNCTION: AcpiDbDisplayInternalObject
- *
- * PARAMETERS: ObjDesc - Object to be displayed
- * WalkState - Current walk state
- *
- * RETURN: None
- *
- * DESCRIPTION: Short display of an internal object
- *
- ******************************************************************************/
-
-void
-AcpiDbDisplayInternalObject (
- ACPI_OPERAND_OBJECT *ObjDesc,
- ACPI_WALK_STATE *WalkState)
-{
- UINT8 Type;
-
-
- AcpiOsPrintf ("%p ", ObjDesc);
-
- if (!ObjDesc)
- {
- AcpiOsPrintf ("<NullObj>\n");
- return;
- }
-
- /* Decode the object type */
-
- switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc))
- {
- case ACPI_DESC_TYPE_PARSER:
-
- AcpiOsPrintf ("<Parser> ");
- break;
-
-
- case ACPI_DESC_TYPE_NAMED:
-
- AcpiDbDecodeNode ((ACPI_NAMESPACE_NODE *) ObjDesc);
- break;
-
-
- case ACPI_DESC_TYPE_OPERAND:
-
- Type = ACPI_GET_OBJECT_TYPE (ObjDesc);
- if (Type > ACPI_TYPE_LOCAL_MAX)
- {
- AcpiOsPrintf (" Type %X [Invalid Type]", (UINT32) Type);
- return;
- }
-
- /* Decode the ACPI object type */
-
- switch (ACPI_GET_OBJECT_TYPE (ObjDesc))
- {
- case ACPI_TYPE_LOCAL_REFERENCE:
-
- switch (ObjDesc->Reference.Opcode)
- {
- case AML_LOCAL_OP:
-
- AcpiOsPrintf ("[Local%d] ", ObjDesc->Reference.Offset);
- if (WalkState)
- {
- ObjDesc = WalkState->LocalVariables[ObjDesc->Reference.Offset].Object;
- AcpiOsPrintf ("%p", ObjDesc);
- AcpiDbDecodeInternalObject (ObjDesc);
- }
- break;
-
-
- case AML_ARG_OP:
-
- AcpiOsPrintf ("[Arg%d] ", ObjDesc->Reference.Offset);
- if (WalkState)
- {
- ObjDesc = WalkState->Arguments[ObjDesc->Reference.Offset].Object;
- AcpiOsPrintf ("%p", ObjDesc);
- AcpiDbDecodeInternalObject (ObjDesc);
- }
- break;
-
-
- case AML_DEBUG_OP:
-
- AcpiOsPrintf ("[Debug] ");
- break;
-
-
- case AML_INDEX_OP:
-
- AcpiOsPrintf ("[Index] ");
- if (!ObjDesc->Reference.Where)
- {
- AcpiOsPrintf ("Uninitialized WHERE ptr");
- }
- else
- {
- AcpiDbDecodeInternalObject (*(ObjDesc->Reference.Where));
- }
- break;
-
-
- case AML_REF_OF_OP:
-
- AcpiOsPrintf ("[RefOf] ");
-
- /* 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 ("<Obj> ");
- AcpiOsPrintf (" ");
- AcpiDbDecodeInternalObject (ObjDesc);
- break;
- }
- break;
-
-
- default:
-
- AcpiOsPrintf ("<Not a valid ACPI Object Descriptor> ");
- break;
- }
-
- AcpiOsPrintf ("\n");
-}
-
-
-/*******************************************************************************
- *
* FUNCTION: AcpiDbDisplayMethodInfo
*
* PARAMETERS: StartOp - Root of the control method parse tree
@@ -778,10 +513,7 @@ AcpiDbDisplayMethodInfo (
void
AcpiDbDisplayLocals (void)
{
- UINT32 i;
ACPI_WALK_STATE *WalkState;
- ACPI_OPERAND_OBJECT *ObjDesc;
- ACPI_NAMESPACE_NODE *Node;
WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList);
@@ -791,22 +523,7 @@ AcpiDbDisplayLocals (void)
return;
}
- ObjDesc = WalkState->MethodDesc;
- Node = WalkState->MethodNode;
- if (!Node)
- {
- AcpiOsPrintf ("No method node (Executing subtree for buffer or opregion)\n");
- return;
- }
-
- AcpiOsPrintf ("Local Variables for method [%4.4s]:\n", Node->Name.Ascii);
-
- for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++)
- {
- ObjDesc = WalkState->LocalVariables[i].Object;
- AcpiOsPrintf ("Local%d: ", i);
- AcpiDbDisplayInternalObject (ObjDesc, WalkState);
- }
+ AcpiDmDisplayLocals (WalkState);
}
@@ -825,12 +542,7 @@ AcpiDbDisplayLocals (void)
void
AcpiDbDisplayArguments (void)
{
- UINT32 i;
ACPI_WALK_STATE *WalkState;
- ACPI_OPERAND_OBJECT *ObjDesc;
- UINT32 NumArgs;
- UINT32 Concurrency;
- ACPI_NAMESPACE_NODE *Node;
WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList);
@@ -840,26 +552,7 @@ AcpiDbDisplayArguments (void)
return;
}
- ObjDesc = WalkState->MethodDesc;
- Node = WalkState->MethodNode;
- if (!Node)
- {
- AcpiOsPrintf ("No method node (Executing subtree for buffer or opregion)\n");
- return;
- }
-
- NumArgs = ObjDesc->Method.ParamCount;
- Concurrency = ObjDesc->Method.Concurrency;
-
- AcpiOsPrintf ("Method [%4.4s] has %X arguments, max concurrency = %X\n",
- Node->Name.Ascii, NumArgs, Concurrency);
-
- for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++)
- {
- ObjDesc = WalkState->Arguments[i].Object;
- AcpiOsPrintf ("Arg%d: ", i);
- AcpiDbDisplayInternalObject (ObjDesc, WalkState);
- }
+ AcpiDmDisplayArguments (WalkState);
}
@@ -907,7 +600,7 @@ AcpiDbDisplayResults (void)
{
ObjDesc = WalkState->Results->Results.ObjDesc[i];
AcpiOsPrintf ("Result%d: ", i);
- AcpiDbDisplayInternalObject (ObjDesc, WalkState);
+ AcpiDmDisplayInternalObject (ObjDesc, WalkState);
}
}
@@ -954,6 +647,59 @@ AcpiDbDisplayCallingTree (void)
/*******************************************************************************
*
+ * FUNCTION: AcpiDbDisplayObjectType
+ *
+ * PARAMETERS: None
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Display current calling tree of nested control methods
+ *
+ ******************************************************************************/
+
+void
+AcpiDbDisplayObjectType (
+ char *ObjectArg)
+{
+ ACPI_HANDLE Handle;
+ ACPI_BUFFER Buffer;
+ ACPI_DEVICE_INFO *Info;
+ ACPI_STATUS Status;
+ ACPI_NATIVE_UINT i;
+
+
+ Handle = ACPI_TO_POINTER (ACPI_STRTOUL (ObjectArg, NULL, 16));
+ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
+
+ Status = AcpiGetObjectInfo (Handle, &Buffer);
+ if (ACPI_SUCCESS (Status))
+ {
+ Info = Buffer.Pointer;
+ AcpiOsPrintf ("HID: %s, ADR: %8.8X%8.8X, Status %8.8X\n",
+ &Info->HardwareId,
+ ACPI_HIDWORD (Info->Address), ACPI_LODWORD (Info->Address),
+ Info->CurrentStatus);
+
+ if (Info->Valid & ACPI_VALID_CID)
+ {
+ for (i = 0; i < Info->CompatibilityId.Count; i++)
+ {
+ AcpiOsPrintf ("CID #%d: %s\n", i, &Info->CompatibilityId.Id[i]);
+ }
+ }
+
+ ACPI_MEM_FREE (Info);
+ }
+ else
+ {
+ AcpiOsPrintf ("%s\n", AcpiFormatException (Status));
+ }
+
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiDbDisplayResultObject
*
* PARAMETERS: ObjDesc - Object to be displayed
@@ -983,7 +729,7 @@ AcpiDbDisplayResultObject (
}
AcpiOsPrintf ("ResultObj: ");
- AcpiDbDisplayInternalObject (ObjDesc, WalkState);
+ AcpiDmDisplayInternalObject (ObjDesc, WalkState);
AcpiOsPrintf ("\n");
}
@@ -1013,7 +759,7 @@ AcpiDbDisplayArgumentObject (
}
AcpiOsPrintf ("ArgObj: ");
- AcpiDbDisplayInternalObject (ObjDesc, WalkState);
+ AcpiDmDisplayInternalObject (ObjDesc, WalkState);
}
@@ -1033,21 +779,28 @@ void
AcpiDbDisplayGpes (void)
{
ACPI_GPE_BLOCK_INFO *GpeBlock;
+ ACPI_GPE_XRUPT_INFO *GpeXruptInfo;
UINT32 i = 0;
- GpeBlock = AcpiGbl_GpeBlockListHead;
- while (GpeBlock)
+ GpeXruptInfo = AcpiGbl_GpeXruptListHead;
+ while (GpeXruptInfo)
{
- AcpiOsPrintf ("Block %d - %p\n", i, GpeBlock);
- AcpiOsPrintf (" Registers: %d\n", GpeBlock->RegisterCount);
- AcpiOsPrintf (" GPE range: %d to %d\n", GpeBlock->BlockBaseNumber,
- GpeBlock->BlockBaseNumber + (GpeBlock->RegisterCount * 8) -1);
- AcpiOsPrintf (" RegisterInfo: %p\n", GpeBlock->RegisterInfo);
- AcpiOsPrintf (" EventInfo: %p\n", GpeBlock->EventInfo);
- i++;
-
- GpeBlock = GpeBlock->Next;
+ GpeBlock = GpeXruptInfo->GpeBlockListHead;
+ while (GpeBlock)
+ {
+ AcpiOsPrintf ("Block %d - %p\n", i, GpeBlock);
+ AcpiOsPrintf (" Registers: %d\n", GpeBlock->RegisterCount);
+ AcpiOsPrintf (" GPE range: %d to %d\n", GpeBlock->BlockBaseNumber,
+ GpeBlock->BlockBaseNumber + (GpeBlock->RegisterCount * 8) -1);
+ AcpiOsPrintf (" RegisterInfo: %p\n", GpeBlock->RegisterInfo);
+ AcpiOsPrintf (" EventInfo: %p\n", GpeBlock->EventInfo);
+ i++;
+
+ GpeBlock = GpeBlock->Next;
+ }
+
+ GpeXruptInfo = GpeXruptInfo->Next;
}
}
OpenPOWER on IntegriCloud