diff options
Diffstat (limited to 'usr/src/uts/intel/io/acpica/debugger/dbcmds.c')
| -rw-r--r-- | usr/src/uts/intel/io/acpica/debugger/dbcmds.c | 92 |
1 files changed, 56 insertions, 36 deletions
diff --git a/usr/src/uts/intel/io/acpica/debugger/dbcmds.c b/usr/src/uts/intel/io/acpica/debugger/dbcmds.c index b3ae57d306..0cefe35436 100644 --- a/usr/src/uts/intel/io/acpica/debugger/dbcmds.c +++ b/usr/src/uts/intel/io/acpica/debugger/dbcmds.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbcmds - debug commands and output routines - * $Revision: 1.145 $ + * $Revision: 1.157 $ * ******************************************************************************/ @@ -9,7 +9,7 @@ * * 1. Copyright Notice * - * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp. + * Some or all of this work - Copyright (c) 1999 - 2008, Intel Corp. * All rights reserved. * * 2. License @@ -117,14 +117,12 @@ #include "acpi.h" #include "acdispat.h" -#include "amlcode.h" #include "acnamesp.h" #include "acevents.h" #include "acdebug.h" #include "acresrc.h" #include "acdisasm.h" - - +#include "actables.h" #include "acparser.h" #ifdef ACPI_DEBUGGER @@ -285,9 +283,6 @@ ACPI_STATUS AcpiDbSleep ( char *ObjectArg) { -#if ACPI_MACHINE_WIDTH == 16 - return (AE_OK); -#else ACPI_STATUS Status; UINT8 SleepState; @@ -312,7 +307,6 @@ AcpiDbSleep ( Status = AcpiLeaveSleepState (SleepState); return (Status); -#endif } @@ -441,25 +435,29 @@ AcpiDbDisplayTableInfo ( ACPI_TABLE_DESC *TableDesc; - for (i = 0; i < (ACPI_TABLE_ID_MAX+1); i++) + /* Walk the entire root table list */ + + for (i = 0; i < AcpiGbl_RootTableList.Count; i++) { - TableDesc = AcpiGbl_TableLists[i].Next; - while (TableDesc) - { - AcpiOsPrintf ( "%s at %p length %.5X", - AcpiGbl_TableData[i].Name, TableDesc->Pointer, - (UINT32) TableDesc->Length); + TableDesc = &AcpiGbl_RootTableList.Tables[i]; + AcpiOsPrintf ("%d ", i); - if (i != ACPI_TABLE_ID_FACS) - { - AcpiOsPrintf (" OemID=%6s TableId=%8s OemRevision=%8.8X", - TableDesc->Pointer->OemId, - TableDesc->Pointer->OemTableId, - TableDesc->Pointer->OemRevision); - } - AcpiOsPrintf ("\n"); + /* Make sure that the table is mapped */ + + AcpiTbVerifyTable (TableDesc); + + /* Dump the table header */ + + if (TableDesc->Pointer) + { + AcpiTbPrintTableHeader (TableDesc->Address, TableDesc->Pointer); + } + else + { + /* If the pointer is null, the table has been unloaded */ - TableDesc = TableDesc->Next; + ACPI_INFO ((AE_INFO, "%4.4s - Table has been unloaded", + TableDesc->Signature.Ascii)); } } } @@ -485,6 +483,9 @@ AcpiDbUnloadAcpiTable ( char *TableArg, char *InstanceArg) { +/* TBD: Need to reimplement for new data structures */ + +#if 0 UINT32 i; ACPI_STATUS Status; @@ -514,6 +515,7 @@ AcpiDbUnloadAcpiTable ( } AcpiOsPrintf ("Unknown table type [%s]\n", TableArg); +#endif } @@ -677,7 +679,7 @@ AcpiDbDisassembleMethod ( Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, ObjDesc->Method.AmlStart, - ObjDesc->Method.AmlLength, NULL, 1); + ObjDesc->Method.AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); if (ACPI_FAILURE (Status)) { return (Status); @@ -940,7 +942,7 @@ AcpiDbSetMethodData ( goto Cleanup; } - Status = AcpiDsStoreObjectToLocal (AML_ARG_OP, Index, ObjDesc, + Status = AcpiDsStoreObjectToLocal (ACPI_REFCLASS_ARG, Index, ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { @@ -963,7 +965,7 @@ AcpiDbSetMethodData ( goto Cleanup; } - Status = AcpiDsStoreObjectToLocal (AML_LOCAL_OP, Index, ObjDesc, + Status = AcpiDsStoreObjectToLocal (ACPI_REFCLASS_LOCAL, Index, ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { @@ -1413,8 +1415,8 @@ AcpiDmTestResourceConversion ( OriginalAml = ReturnObj.Pointer; AcpiDmCompareAmlResources ( - OriginalAml->Buffer.Pointer, OriginalAml->Buffer.Length, - NewAml.Pointer, NewAml.Length); + OriginalAml->Buffer.Pointer, (ACPI_RSDESC_SIZE) OriginalAml->Buffer.Length, + NewAml.Pointer, (ACPI_RSDESC_SIZE) NewAml.Length); /* Cleanup and exit */ @@ -1443,8 +1445,6 @@ void AcpiDbDisplayResources ( char *ObjectArg) { -#if ACPI_MACHINE_WIDTH != 16 - ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_BUFFER ReturnObj; @@ -1582,7 +1582,6 @@ Cleanup: AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); return; -#endif } @@ -1608,24 +1607,45 @@ AcpiDbIntegrityWalk ( ACPI_INTEGRITY_INFO *Info = (ACPI_INTEGRITY_INFO *) Context; ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; ACPI_OPERAND_OBJECT *Object; + BOOLEAN Alias = TRUE; Info->Nodes++; - if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) + + /* Verify the NS node, and dereference aliases */ + + while (Alias) { - AcpiOsPrintf ("Invalid Descriptor Type for Node %p [%s]\n", - Node, AcpiUtGetDescriptorName (Node)); + if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) + { + AcpiOsPrintf ("Invalid Descriptor Type for Node %p [%s] - is %2.2X should be %2.2X\n", + Node, AcpiUtGetDescriptorName (Node), ACPI_GET_DESCRIPTOR_TYPE (Node), + ACPI_DESC_TYPE_NAMED); + return (AE_OK); + } + + if ((Node->Type == ACPI_TYPE_LOCAL_ALIAS) || + (Node->Type == ACPI_TYPE_LOCAL_METHOD_ALIAS)) + { + Node = (ACPI_NAMESPACE_NODE *) Node->Object; + } + else + { + Alias = FALSE; + } } if (Node->Type > ACPI_TYPE_LOCAL_MAX) { AcpiOsPrintf ("Invalid Object Type for Node %p, Type = %X\n", Node, Node->Type); + return (AE_OK); } if (!AcpiUtValidAcpiName (Node->Name.Integer)) { AcpiOsPrintf ("Invalid AcpiName for Node %p\n", Node); + return (AE_OK); } Object = AcpiNsGetAttachedObject (Node); |
