Home | History | Annotate | Line # | Download | only in executer
exdump.c revision 1.2
      1  1.1  jruoho /******************************************************************************
      2  1.1  jruoho  *
      3  1.1  jruoho  * Module Name: exdump - Interpreter debug output routines
      4  1.1  jruoho  *
      5  1.1  jruoho  *****************************************************************************/
      6  1.1  jruoho 
      7  1.1  jruoho /******************************************************************************
      8  1.1  jruoho  *
      9  1.1  jruoho  * 1. Copyright Notice
     10  1.1  jruoho  *
     11  1.1  jruoho  * Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp.
     12  1.1  jruoho  * All rights reserved.
     13  1.1  jruoho  *
     14  1.1  jruoho  * 2. License
     15  1.1  jruoho  *
     16  1.1  jruoho  * 2.1. This is your license from Intel Corp. under its intellectual property
     17  1.1  jruoho  * rights.  You may have additional license terms from the party that provided
     18  1.1  jruoho  * you this software, covering your right to use that party's intellectual
     19  1.1  jruoho  * property rights.
     20  1.1  jruoho  *
     21  1.1  jruoho  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
     22  1.1  jruoho  * copy of the source code appearing in this file ("Covered Code") an
     23  1.1  jruoho  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
     24  1.1  jruoho  * base code distributed originally by Intel ("Original Intel Code") to copy,
     25  1.1  jruoho  * make derivatives, distribute, use and display any portion of the Covered
     26  1.1  jruoho  * Code in any form, with the right to sublicense such rights; and
     27  1.1  jruoho  *
     28  1.1  jruoho  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
     29  1.1  jruoho  * license (with the right to sublicense), under only those claims of Intel
     30  1.1  jruoho  * patents that are infringed by the Original Intel Code, to make, use, sell,
     31  1.1  jruoho  * offer to sell, and import the Covered Code and derivative works thereof
     32  1.1  jruoho  * solely to the minimum extent necessary to exercise the above copyright
     33  1.1  jruoho  * license, and in no event shall the patent license extend to any additions
     34  1.1  jruoho  * to or modifications of the Original Intel Code.  No other license or right
     35  1.1  jruoho  * is granted directly or by implication, estoppel or otherwise;
     36  1.1  jruoho  *
     37  1.1  jruoho  * The above copyright and patent license is granted only if the following
     38  1.1  jruoho  * conditions are met:
     39  1.1  jruoho  *
     40  1.1  jruoho  * 3. Conditions
     41  1.1  jruoho  *
     42  1.1  jruoho  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
     43  1.1  jruoho  * Redistribution of source code of any substantial portion of the Covered
     44  1.1  jruoho  * Code or modification with rights to further distribute source must include
     45  1.1  jruoho  * the above Copyright Notice, the above License, this list of Conditions,
     46  1.1  jruoho  * and the following Disclaimer and Export Compliance provision.  In addition,
     47  1.1  jruoho  * Licensee must cause all Covered Code to which Licensee contributes to
     48  1.1  jruoho  * contain a file documenting the changes Licensee made to create that Covered
     49  1.1  jruoho  * Code and the date of any change.  Licensee must include in that file the
     50  1.1  jruoho  * documentation of any changes made by any predecessor Licensee.  Licensee
     51  1.1  jruoho  * must include a prominent statement that the modification is derived,
     52  1.1  jruoho  * directly or indirectly, from Original Intel Code.
     53  1.1  jruoho  *
     54  1.1  jruoho  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
     55  1.1  jruoho  * Redistribution of source code of any substantial portion of the Covered
     56  1.1  jruoho  * Code or modification without rights to further distribute source must
     57  1.1  jruoho  * include the following Disclaimer and Export Compliance provision in the
     58  1.1  jruoho  * documentation and/or other materials provided with distribution.  In
     59  1.1  jruoho  * addition, Licensee may not authorize further sublicense of source of any
     60  1.1  jruoho  * portion of the Covered Code, and must include terms to the effect that the
     61  1.1  jruoho  * license from Licensee to its licensee is limited to the intellectual
     62  1.1  jruoho  * property embodied in the software Licensee provides to its licensee, and
     63  1.1  jruoho  * not to intellectual property embodied in modifications its licensee may
     64  1.1  jruoho  * make.
     65  1.1  jruoho  *
     66  1.1  jruoho  * 3.3. Redistribution of Executable. Redistribution in executable form of any
     67  1.1  jruoho  * substantial portion of the Covered Code or modification must reproduce the
     68  1.1  jruoho  * above Copyright Notice, and the following Disclaimer and Export Compliance
     69  1.1  jruoho  * provision in the documentation and/or other materials provided with the
     70  1.1  jruoho  * distribution.
     71  1.1  jruoho  *
     72  1.1  jruoho  * 3.4. Intel retains all right, title, and interest in and to the Original
     73  1.1  jruoho  * Intel Code.
     74  1.1  jruoho  *
     75  1.1  jruoho  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
     76  1.1  jruoho  * Intel shall be used in advertising or otherwise to promote the sale, use or
     77  1.1  jruoho  * other dealings in products derived from or relating to the Covered Code
     78  1.1  jruoho  * without prior written authorization from Intel.
     79  1.1  jruoho  *
     80  1.1  jruoho  * 4. Disclaimer and Export Compliance
     81  1.1  jruoho  *
     82  1.1  jruoho  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
     83  1.1  jruoho  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
     84  1.1  jruoho  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
     85  1.1  jruoho  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
     86  1.1  jruoho  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
     87  1.1  jruoho  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
     88  1.1  jruoho  * PARTICULAR PURPOSE.
     89  1.1  jruoho  *
     90  1.1  jruoho  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
     91  1.1  jruoho  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
     92  1.1  jruoho  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
     93  1.1  jruoho  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
     94  1.1  jruoho  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
     95  1.1  jruoho  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
     96  1.1  jruoho  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
     97  1.1  jruoho  * LIMITED REMEDY.
     98  1.1  jruoho  *
     99  1.1  jruoho  * 4.3. Licensee shall not export, either directly or indirectly, any of this
    100  1.1  jruoho  * software or system incorporating such software without first obtaining any
    101  1.1  jruoho  * required license or other approval from the U. S. Department of Commerce or
    102  1.1  jruoho  * any other agency or department of the United States Government.  In the
    103  1.1  jruoho  * event Licensee exports any such software from the United States or
    104  1.1  jruoho  * re-exports any such software from a foreign destination, Licensee shall
    105  1.1  jruoho  * ensure that the distribution and export/re-export of the software is in
    106  1.1  jruoho  * compliance with all laws, regulations, orders, or other restrictions of the
    107  1.1  jruoho  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
    108  1.1  jruoho  * any of its subsidiaries will export/re-export any technical data, process,
    109  1.1  jruoho  * software, or service, directly or indirectly, to any country for which the
    110  1.1  jruoho  * United States government or any agency thereof requires an export license,
    111  1.1  jruoho  * other governmental approval, or letter of assurance, without first obtaining
    112  1.1  jruoho  * such license, approval or letter.
    113  1.1  jruoho  *
    114  1.1  jruoho  *****************************************************************************/
    115  1.1  jruoho 
    116  1.1  jruoho #define __EXDUMP_C__
    117  1.1  jruoho 
    118  1.1  jruoho #include "acpi.h"
    119  1.1  jruoho #include "accommon.h"
    120  1.1  jruoho #include "acinterp.h"
    121  1.1  jruoho #include "amlcode.h"
    122  1.1  jruoho #include "acnamesp.h"
    123  1.1  jruoho 
    124  1.1  jruoho 
    125  1.1  jruoho #define _COMPONENT          ACPI_EXECUTER
    126  1.1  jruoho         ACPI_MODULE_NAME    ("exdump")
    127  1.1  jruoho 
    128  1.1  jruoho /*
    129  1.1  jruoho  * The following routines are used for debug output only
    130  1.1  jruoho  */
    131  1.1  jruoho #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
    132  1.1  jruoho 
    133  1.1  jruoho /* Local prototypes */
    134  1.1  jruoho 
    135  1.1  jruoho static void
    136  1.1  jruoho AcpiExOutString (
    137  1.2  jruoho     const char              *Title,
    138  1.2  jruoho     const char              *Value);
    139  1.1  jruoho 
    140  1.1  jruoho static void
    141  1.1  jruoho AcpiExOutPointer (
    142  1.2  jruoho     const char              *Title,
    143  1.1  jruoho     void                    *Value);
    144  1.1  jruoho 
    145  1.1  jruoho static void
    146  1.1  jruoho AcpiExDumpObject (
    147  1.1  jruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
    148  1.1  jruoho     ACPI_EXDUMP_INFO        *Info);
    149  1.1  jruoho 
    150  1.1  jruoho static void
    151  1.1  jruoho AcpiExDumpReferenceObj (
    152  1.1  jruoho     ACPI_OPERAND_OBJECT     *ObjDesc);
    153  1.1  jruoho 
    154  1.1  jruoho static void
    155  1.1  jruoho AcpiExDumpPackageObj (
    156  1.1  jruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
    157  1.1  jruoho     UINT32                  Level,
    158  1.1  jruoho     UINT32                  Index);
    159  1.1  jruoho 
    160  1.1  jruoho 
    161  1.1  jruoho /*******************************************************************************
    162  1.1  jruoho  *
    163  1.1  jruoho  * Object Descriptor info tables
    164  1.1  jruoho  *
    165  1.1  jruoho  * Note: The first table entry must be an INIT opcode and must contain
    166  1.1  jruoho  * the table length (number of table entries)
    167  1.1  jruoho  *
    168  1.1  jruoho  ******************************************************************************/
    169  1.1  jruoho 
    170  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpInteger[2] =
    171  1.1  jruoho {
    172  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpInteger),        NULL},
    173  1.1  jruoho     {ACPI_EXD_UINT64,   ACPI_EXD_OFFSET (Integer.Value),                "Value"}
    174  1.1  jruoho };
    175  1.1  jruoho 
    176  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpString[4] =
    177  1.1  jruoho {
    178  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpString),         NULL},
    179  1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (String.Length),                "Length"},
    180  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (String.Pointer),               "Pointer"},
    181  1.1  jruoho     {ACPI_EXD_STRING,   0,                                              NULL}
    182  1.1  jruoho };
    183  1.1  jruoho 
    184  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpBuffer[5] =
    185  1.1  jruoho {
    186  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpBuffer),         NULL},
    187  1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Buffer.Length),                "Length"},
    188  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Buffer.Pointer),               "Pointer"},
    189  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Buffer.Node),                  "Parent Node"},
    190  1.1  jruoho     {ACPI_EXD_BUFFER,   0,                                              NULL}
    191  1.1  jruoho };
    192  1.1  jruoho 
    193  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpPackage[5] =
    194  1.1  jruoho {
    195  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpPackage),        NULL},
    196  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Package.Flags),                "Flags"},
    197  1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Package.Count),                "Elements"},
    198  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Package.Elements),             "Element List"},
    199  1.1  jruoho     {ACPI_EXD_PACKAGE,  0,                                              NULL}
    200  1.1  jruoho };
    201  1.1  jruoho 
    202  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpDevice[4] =
    203  1.1  jruoho {
    204  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpDevice),         NULL},
    205  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Device.Handler),               "Handler"},
    206  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Device.SystemNotify),          "System Notify"},
    207  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Device.DeviceNotify),          "Device Notify"}
    208  1.1  jruoho };
    209  1.1  jruoho 
    210  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpEvent[2] =
    211  1.1  jruoho {
    212  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpEvent),          NULL},
    213  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Event.OsSemaphore),            "OsSemaphore"}
    214  1.1  jruoho };
    215  1.1  jruoho 
    216  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpMethod[9] =
    217  1.1  jruoho {
    218  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpMethod),         NULL},
    219  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.MethodFlags),           "Method Flags"},
    220  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.ParamCount),            "Parameter Count"},
    221  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.SyncLevel),             "Sync Level"},
    222  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Method.Mutex),                 "Mutex"},
    223  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.OwnerId),               "Owner Id"},
    224  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.ThreadCount),           "Thread Count"},
    225  1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Method.AmlLength),             "Aml Length"},
    226  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Method.AmlStart),              "Aml Start"}
    227  1.1  jruoho };
    228  1.1  jruoho 
    229  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpMutex[5] =
    230  1.1  jruoho {
    231  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpMutex),          NULL},
    232  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Mutex.SyncLevel),              "Sync Level"},
    233  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Mutex.OwnerThread),            "Owner Thread"},
    234  1.1  jruoho     {ACPI_EXD_UINT16,   ACPI_EXD_OFFSET (Mutex.AcquisitionDepth),       "Acquire Depth"},
    235  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Mutex.OsMutex),                "OsMutex"}
    236  1.1  jruoho };
    237  1.1  jruoho 
    238  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpRegion[7] =
    239  1.1  jruoho {
    240  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpRegion),         NULL},
    241  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Region.SpaceId),               "Space Id"},
    242  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Region.Flags),                 "Flags"},
    243  1.1  jruoho     {ACPI_EXD_ADDRESS,  ACPI_EXD_OFFSET (Region.Address),               "Address"},
    244  1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Region.Length),                "Length"},
    245  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Region.Handler),               "Handler"},
    246  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Region.Next),                  "Next"}
    247  1.1  jruoho };
    248  1.1  jruoho 
    249  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpPower[5] =
    250  1.1  jruoho {
    251  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpPower),          NULL},
    252  1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (PowerResource.SystemLevel),    "System Level"},
    253  1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (PowerResource.ResourceOrder),  "Resource Order"},
    254  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (PowerResource.SystemNotify),   "System Notify"},
    255  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (PowerResource.DeviceNotify),   "Device Notify"}
    256  1.1  jruoho };
    257  1.1  jruoho 
    258  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpProcessor[7] =
    259  1.1  jruoho {
    260  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpProcessor),      NULL},
    261  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Processor.ProcId),             "Processor ID"},
    262  1.1  jruoho     {ACPI_EXD_UINT8 ,   ACPI_EXD_OFFSET (Processor.Length),             "Length"},
    263  1.1  jruoho     {ACPI_EXD_ADDRESS,  ACPI_EXD_OFFSET (Processor.Address),            "Address"},
    264  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Processor.SystemNotify),       "System Notify"},
    265  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Processor.DeviceNotify),       "Device Notify"},
    266  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Processor.Handler),            "Handler"}
    267  1.1  jruoho };
    268  1.1  jruoho 
    269  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpThermal[4] =
    270  1.1  jruoho {
    271  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpThermal),        NULL},
    272  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (ThermalZone.SystemNotify),     "System Notify"},
    273  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (ThermalZone.DeviceNotify),     "Device Notify"},
    274  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (ThermalZone.Handler),          "Handler"}
    275  1.1  jruoho };
    276  1.1  jruoho 
    277  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpBufferField[3] =
    278  1.1  jruoho {
    279  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpBufferField),    NULL},
    280  1.1  jruoho     {ACPI_EXD_FIELD,    0,                                              NULL},
    281  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (BufferField.BufferObj),        "Buffer Object"}
    282  1.1  jruoho };
    283  1.1  jruoho 
    284  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpRegionField[3] =
    285  1.1  jruoho {
    286  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpRegionField),    NULL},
    287  1.1  jruoho     {ACPI_EXD_FIELD,    0,                                              NULL},
    288  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Field.RegionObj),              "Region Object"}
    289  1.1  jruoho };
    290  1.1  jruoho 
    291  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpBankField[5] =
    292  1.1  jruoho {
    293  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField),      NULL},
    294  1.1  jruoho     {ACPI_EXD_FIELD,    0,                                              NULL},
    295  1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (BankField.Value),              "Value"},
    296  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (BankField.RegionObj),          "Region Object"},
    297  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (BankField.BankObj),            "Bank Object"}
    298  1.1  jruoho };
    299  1.1  jruoho 
    300  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpIndexField[5] =
    301  1.1  jruoho {
    302  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField),      NULL},
    303  1.1  jruoho     {ACPI_EXD_FIELD,    0,                                              NULL},
    304  1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (IndexField.Value),             "Value"},
    305  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (IndexField.IndexObj),          "Index Object"},
    306  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (IndexField.DataObj),           "Data Object"}
    307  1.1  jruoho };
    308  1.1  jruoho 
    309  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpReference[8] =
    310  1.1  jruoho {
    311  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpReference),       NULL},
    312  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Reference.Class),              "Class"},
    313  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Reference.TargetType),         "Target Type"},
    314  1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Reference.Value),              "Value"},
    315  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Reference.Object),             "Object Desc"},
    316  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Reference.Node),               "Node"},
    317  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Reference.Where),              "Where"},
    318  1.1  jruoho     {ACPI_EXD_REFERENCE,0,                                              NULL}
    319  1.1  jruoho };
    320  1.1  jruoho 
    321  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpAddressHandler[6] =
    322  1.1  jruoho {
    323  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpAddressHandler), NULL},
    324  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (AddressSpace.SpaceId),         "Space Id"},
    325  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (AddressSpace.Next),            "Next"},
    326  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (AddressSpace.RegionList),      "Region List"},
    327  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (AddressSpace.Node),            "Node"},
    328  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (AddressSpace.Context),         "Context"}
    329  1.1  jruoho };
    330  1.1  jruoho 
    331  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpNotify[3] =
    332  1.1  jruoho {
    333  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpNotify),         NULL},
    334  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Notify.Node),                  "Node"},
    335  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Notify.Context),               "Context"}
    336  1.1  jruoho };
    337  1.1  jruoho 
    338  1.1  jruoho 
    339  1.1  jruoho /* Miscellaneous tables */
    340  1.1  jruoho 
    341  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpCommon[4] =
    342  1.1  jruoho {
    343  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpCommon),         NULL},
    344  1.1  jruoho     {ACPI_EXD_TYPE ,    0,                                              NULL},
    345  1.1  jruoho     {ACPI_EXD_UINT16,   ACPI_EXD_OFFSET (Common.ReferenceCount),        "Reference Count"},
    346  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Common.Flags),                 "Flags"}
    347  1.1  jruoho };
    348  1.1  jruoho 
    349  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpFieldCommon[7] =
    350  1.1  jruoho {
    351  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpFieldCommon),    NULL},
    352  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (CommonField.FieldFlags),       "Field Flags"},
    353  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (CommonField.AccessByteWidth),  "Access Byte Width"},
    354  1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (CommonField.BitLength),        "Bit Length"},
    355  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (CommonField.StartFieldBitOffset),"Field Bit Offset"},
    356  1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (CommonField.BaseByteOffset),   "Base Byte Offset"},
    357  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (CommonField.Node),             "Parent Node"}
    358  1.1  jruoho };
    359  1.1  jruoho 
    360  1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpNode[5] =
    361  1.1  jruoho {
    362  1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpNode),           NULL},
    363  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_NSOFFSET (Flags),                      "Flags"},
    364  1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_NSOFFSET (OwnerId),                    "Owner Id"},
    365  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_NSOFFSET (Child),                      "Child List"},
    366  1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_NSOFFSET (Peer),                       "Next Peer"}
    367  1.1  jruoho };
    368  1.1  jruoho 
    369  1.1  jruoho 
    370  1.1  jruoho /* Dispatch table, indexed by object type */
    371  1.1  jruoho 
    372  1.1  jruoho static ACPI_EXDUMP_INFO     *AcpiExDumpInfo[] =
    373  1.1  jruoho {
    374  1.1  jruoho     NULL,
    375  1.1  jruoho     AcpiExDumpInteger,
    376  1.1  jruoho     AcpiExDumpString,
    377  1.1  jruoho     AcpiExDumpBuffer,
    378  1.1  jruoho     AcpiExDumpPackage,
    379  1.1  jruoho     NULL,
    380  1.1  jruoho     AcpiExDumpDevice,
    381  1.1  jruoho     AcpiExDumpEvent,
    382  1.1  jruoho     AcpiExDumpMethod,
    383  1.1  jruoho     AcpiExDumpMutex,
    384  1.1  jruoho     AcpiExDumpRegion,
    385  1.1  jruoho     AcpiExDumpPower,
    386  1.1  jruoho     AcpiExDumpProcessor,
    387  1.1  jruoho     AcpiExDumpThermal,
    388  1.1  jruoho     AcpiExDumpBufferField,
    389  1.1  jruoho     NULL,
    390  1.1  jruoho     NULL,
    391  1.1  jruoho     AcpiExDumpRegionField,
    392  1.1  jruoho     AcpiExDumpBankField,
    393  1.1  jruoho     AcpiExDumpIndexField,
    394  1.1  jruoho     AcpiExDumpReference,
    395  1.1  jruoho     NULL,
    396  1.1  jruoho     NULL,
    397  1.1  jruoho     AcpiExDumpNotify,
    398  1.1  jruoho     AcpiExDumpAddressHandler,
    399  1.1  jruoho     NULL,
    400  1.1  jruoho     NULL,
    401  1.1  jruoho     NULL
    402  1.1  jruoho };
    403  1.1  jruoho 
    404  1.1  jruoho 
    405  1.1  jruoho /*******************************************************************************
    406  1.1  jruoho  *
    407  1.1  jruoho  * FUNCTION:    AcpiExDumpObject
    408  1.1  jruoho  *
    409  1.1  jruoho  * PARAMETERS:  ObjDesc             - Descriptor to dump
    410  1.1  jruoho  *              Info                - Info table corresponding to this object
    411  1.1  jruoho  *                                    type
    412  1.1  jruoho  *
    413  1.1  jruoho  * RETURN:      None
    414  1.1  jruoho  *
    415  1.1  jruoho  * DESCRIPTION: Walk the info table for this object
    416  1.1  jruoho  *
    417  1.1  jruoho  ******************************************************************************/
    418  1.1  jruoho 
    419  1.1  jruoho static void
    420  1.1  jruoho AcpiExDumpObject (
    421  1.1  jruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
    422  1.1  jruoho     ACPI_EXDUMP_INFO        *Info)
    423  1.1  jruoho {
    424  1.1  jruoho     UINT8                   *Target;
    425  1.1  jruoho     char                    *Name;
    426  1.1  jruoho     UINT8                   Count;
    427  1.1  jruoho 
    428  1.1  jruoho 
    429  1.1  jruoho     if (!Info)
    430  1.1  jruoho     {
    431  1.1  jruoho         AcpiOsPrintf (
    432  1.1  jruoho             "ExDumpObject: Display not implemented for object type %s\n",
    433  1.1  jruoho             AcpiUtGetObjectTypeName (ObjDesc));
    434  1.1  jruoho         return;
    435  1.1  jruoho     }
    436  1.1  jruoho 
    437  1.1  jruoho     /* First table entry must contain the table length (# of table entries) */
    438  1.1  jruoho 
    439  1.1  jruoho     Count = Info->Offset;
    440  1.1  jruoho 
    441  1.1  jruoho     while (Count)
    442  1.1  jruoho     {
    443  1.1  jruoho         Target = ACPI_ADD_PTR (UINT8, ObjDesc, Info->Offset);
    444  1.2  jruoho         Name = __UNCONST(Info->Name);
    445  1.1  jruoho 
    446  1.1  jruoho         switch (Info->Opcode)
    447  1.1  jruoho         {
    448  1.1  jruoho         case ACPI_EXD_INIT:
    449  1.1  jruoho             break;
    450  1.1  jruoho 
    451  1.1  jruoho         case ACPI_EXD_TYPE:
    452  1.1  jruoho 
    453  1.1  jruoho             AcpiExOutString  ("Type", AcpiUtGetObjectTypeName (ObjDesc));
    454  1.1  jruoho             break;
    455  1.1  jruoho 
    456  1.1  jruoho         case ACPI_EXD_UINT8:
    457  1.1  jruoho 
    458  1.1  jruoho             AcpiOsPrintf ("%20s : %2.2X\n", Name, *Target);
    459  1.1  jruoho             break;
    460  1.1  jruoho 
    461  1.1  jruoho         case ACPI_EXD_UINT16:
    462  1.1  jruoho 
    463  1.1  jruoho             AcpiOsPrintf ("%20s : %4.4X\n", Name, ACPI_GET16 (Target));
    464  1.1  jruoho             break;
    465  1.1  jruoho 
    466  1.1  jruoho         case ACPI_EXD_UINT32:
    467  1.1  jruoho 
    468  1.1  jruoho             AcpiOsPrintf ("%20s : %8.8X\n", Name, ACPI_GET32 (Target));
    469  1.1  jruoho             break;
    470  1.1  jruoho 
    471  1.1  jruoho         case ACPI_EXD_UINT64:
    472  1.1  jruoho 
    473  1.1  jruoho             AcpiOsPrintf ("%20s : %8.8X%8.8X\n", "Value",
    474  1.1  jruoho                 ACPI_FORMAT_UINT64 (ACPI_GET64 (Target)));
    475  1.1  jruoho             break;
    476  1.1  jruoho 
    477  1.1  jruoho         case ACPI_EXD_POINTER:
    478  1.1  jruoho         case ACPI_EXD_ADDRESS:
    479  1.1  jruoho 
    480  1.1  jruoho             AcpiExOutPointer (Name, *ACPI_CAST_PTR (void *, Target));
    481  1.1  jruoho             break;
    482  1.1  jruoho 
    483  1.1  jruoho         case ACPI_EXD_STRING:
    484  1.1  jruoho 
    485  1.1  jruoho             AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
    486  1.1  jruoho             AcpiOsPrintf ("\n");
    487  1.1  jruoho             break;
    488  1.1  jruoho 
    489  1.1  jruoho         case ACPI_EXD_BUFFER:
    490  1.1  jruoho 
    491  1.1  jruoho             ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length);
    492  1.1  jruoho             break;
    493  1.1  jruoho 
    494  1.1  jruoho         case ACPI_EXD_PACKAGE:
    495  1.1  jruoho 
    496  1.1  jruoho             /* Dump the package contents */
    497  1.1  jruoho 
    498  1.1  jruoho             AcpiOsPrintf ("\nPackage Contents:\n");
    499  1.1  jruoho             AcpiExDumpPackageObj (ObjDesc, 0, 0);
    500  1.1  jruoho             break;
    501  1.1  jruoho 
    502  1.1  jruoho         case ACPI_EXD_FIELD:
    503  1.1  jruoho 
    504  1.1  jruoho             AcpiExDumpObject (ObjDesc, AcpiExDumpFieldCommon);
    505  1.1  jruoho             break;
    506  1.1  jruoho 
    507  1.1  jruoho         case ACPI_EXD_REFERENCE:
    508  1.1  jruoho 
    509  1.1  jruoho             AcpiExOutString ("Class Name",
    510  1.1  jruoho                 ACPI_CAST_PTR (char, AcpiUtGetReferenceName (ObjDesc)));
    511  1.1  jruoho             AcpiExDumpReferenceObj (ObjDesc);
    512  1.1  jruoho             break;
    513  1.1  jruoho 
    514  1.1  jruoho         default:
    515  1.1  jruoho 
    516  1.1  jruoho             AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n",
    517  1.1  jruoho                 Info->Opcode);
    518  1.1  jruoho             return;
    519  1.1  jruoho         }
    520  1.1  jruoho 
    521  1.1  jruoho         Info++;
    522  1.1  jruoho         Count--;
    523  1.1  jruoho     }
    524  1.1  jruoho }
    525  1.1  jruoho 
    526  1.1  jruoho 
    527  1.1  jruoho /*******************************************************************************
    528  1.1  jruoho  *
    529  1.1  jruoho  * FUNCTION:    AcpiExDumpOperand
    530  1.1  jruoho  *
    531  1.1  jruoho  * PARAMETERS:  *ObjDesc        - Pointer to entry to be dumped
    532  1.1  jruoho  *              Depth           - Current nesting depth
    533  1.1  jruoho  *
    534  1.1  jruoho  * RETURN:      None
    535  1.1  jruoho  *
    536  1.1  jruoho  * DESCRIPTION: Dump an operand object
    537  1.1  jruoho  *
    538  1.1  jruoho  ******************************************************************************/
    539  1.1  jruoho 
    540  1.1  jruoho void
    541  1.1  jruoho AcpiExDumpOperand (
    542  1.1  jruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
    543  1.1  jruoho     UINT32                  Depth)
    544  1.1  jruoho {
    545  1.1  jruoho     UINT32                  Length;
    546  1.1  jruoho     UINT32                  Index;
    547  1.1  jruoho 
    548  1.1  jruoho 
    549  1.1  jruoho     ACPI_FUNCTION_NAME (ExDumpOperand)
    550  1.1  jruoho 
    551  1.1  jruoho 
    552  1.1  jruoho     if (!((ACPI_LV_EXEC & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer)))
    553  1.1  jruoho     {
    554  1.1  jruoho         return;
    555  1.1  jruoho     }
    556  1.1  jruoho 
    557  1.1  jruoho     if (!ObjDesc)
    558  1.1  jruoho     {
    559  1.1  jruoho         /* This could be a null element of a package */
    560  1.1  jruoho 
    561  1.1  jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Null Object Descriptor\n"));
    562  1.1  jruoho         return;
    563  1.1  jruoho     }
    564  1.1  jruoho 
    565  1.1  jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
    566  1.1  jruoho     {
    567  1.1  jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p Namespace Node: ", ObjDesc));
    568  1.1  jruoho         ACPI_DUMP_ENTRY (ObjDesc, ACPI_LV_EXEC);
    569  1.1  jruoho         return;
    570  1.1  jruoho     }
    571  1.1  jruoho 
    572  1.1  jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
    573  1.1  jruoho     {
    574  1.1  jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
    575  1.1  jruoho             "%p is not a node or operand object: [%s]\n",
    576  1.1  jruoho             ObjDesc, AcpiUtGetDescriptorName (ObjDesc)));
    577  1.1  jruoho         ACPI_DUMP_BUFFER (ObjDesc, sizeof (ACPI_OPERAND_OBJECT));
    578  1.1  jruoho         return;
    579  1.1  jruoho     }
    580  1.1  jruoho 
    581  1.1  jruoho     /* ObjDesc is a valid object */
    582  1.1  jruoho 
    583  1.1  jruoho     if (Depth > 0)
    584  1.1  jruoho     {
    585  1.1  jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%*s[%u] %p ",
    586  1.1  jruoho             Depth, " ", Depth, ObjDesc));
    587  1.1  jruoho     }
    588  1.1  jruoho     else
    589  1.1  jruoho     {
    590  1.1  jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p ", ObjDesc));
    591  1.1  jruoho     }
    592  1.1  jruoho 
    593  1.1  jruoho     /* Decode object type */
    594  1.1  jruoho 
    595  1.1  jruoho     switch (ObjDesc->Common.Type)
    596  1.1  jruoho     {
    597  1.1  jruoho     case ACPI_TYPE_LOCAL_REFERENCE:
    598  1.1  jruoho 
    599  1.1  jruoho         AcpiOsPrintf ("Reference: [%s] ", AcpiUtGetReferenceName (ObjDesc));
    600  1.1  jruoho 
    601  1.1  jruoho         switch (ObjDesc->Reference.Class)
    602  1.1  jruoho         {
    603  1.1  jruoho         case ACPI_REFCLASS_DEBUG:
    604  1.1  jruoho 
    605  1.1  jruoho             AcpiOsPrintf ("\n");
    606  1.1  jruoho             break;
    607  1.1  jruoho 
    608  1.1  jruoho 
    609  1.1  jruoho         case ACPI_REFCLASS_INDEX:
    610  1.1  jruoho 
    611  1.1  jruoho             AcpiOsPrintf ("%p\n", ObjDesc->Reference.Object);
    612  1.1  jruoho             break;
    613  1.1  jruoho 
    614  1.1  jruoho 
    615  1.1  jruoho         case ACPI_REFCLASS_TABLE:
    616  1.1  jruoho 
    617  1.1  jruoho             AcpiOsPrintf ("Table Index %X\n", ObjDesc->Reference.Value);
    618  1.1  jruoho             break;
    619  1.1  jruoho 
    620  1.1  jruoho 
    621  1.1  jruoho         case ACPI_REFCLASS_REFOF:
    622  1.1  jruoho 
    623  1.1  jruoho             AcpiOsPrintf ("%p [%s]\n", ObjDesc->Reference.Object,
    624  1.1  jruoho                 AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
    625  1.1  jruoho                     ObjDesc->Reference.Object)->Common.Type));
    626  1.1  jruoho             break;
    627  1.1  jruoho 
    628  1.1  jruoho 
    629  1.1  jruoho         case ACPI_REFCLASS_NAME:
    630  1.1  jruoho 
    631  1.1  jruoho             AcpiOsPrintf ("- [%4.4s]\n", ObjDesc->Reference.Node->Name.Ascii);
    632  1.1  jruoho             break;
    633  1.1  jruoho 
    634  1.1  jruoho 
    635  1.1  jruoho         case ACPI_REFCLASS_ARG:
    636  1.1  jruoho         case ACPI_REFCLASS_LOCAL:
    637  1.1  jruoho 
    638  1.1  jruoho             AcpiOsPrintf ("%X\n", ObjDesc->Reference.Value);
    639  1.1  jruoho             break;
    640  1.1  jruoho 
    641  1.1  jruoho 
    642  1.1  jruoho         default:    /* Unknown reference class */
    643  1.1  jruoho 
    644  1.1  jruoho             AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class);
    645  1.1  jruoho             break;
    646  1.1  jruoho         }
    647  1.1  jruoho         break;
    648  1.1  jruoho 
    649  1.1  jruoho 
    650  1.1  jruoho     case ACPI_TYPE_BUFFER:
    651  1.1  jruoho 
    652  1.1  jruoho         AcpiOsPrintf ("Buffer length %.2X @ %p\n",
    653  1.1  jruoho             ObjDesc->Buffer.Length, ObjDesc->Buffer.Pointer);
    654  1.1  jruoho 
    655  1.1  jruoho         /* Debug only -- dump the buffer contents */
    656  1.1  jruoho 
    657  1.1  jruoho         if (ObjDesc->Buffer.Pointer)
    658  1.1  jruoho         {
    659  1.1  jruoho             Length = ObjDesc->Buffer.Length;
    660  1.1  jruoho             if (Length > 128)
    661  1.1  jruoho             {
    662  1.1  jruoho                 Length = 128;
    663  1.1  jruoho             }
    664  1.1  jruoho 
    665  1.1  jruoho             AcpiOsPrintf ("Buffer Contents: (displaying length 0x%.2X)\n",
    666  1.1  jruoho                 Length);
    667  1.1  jruoho             ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, Length);
    668  1.1  jruoho         }
    669  1.1  jruoho         break;
    670  1.1  jruoho 
    671  1.1  jruoho 
    672  1.1  jruoho     case ACPI_TYPE_INTEGER:
    673  1.1  jruoho 
    674  1.1  jruoho         AcpiOsPrintf ("Integer %8.8X%8.8X\n",
    675  1.1  jruoho             ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
    676  1.1  jruoho         break;
    677  1.1  jruoho 
    678  1.1  jruoho 
    679  1.1  jruoho     case ACPI_TYPE_PACKAGE:
    680  1.1  jruoho 
    681  1.1  jruoho         AcpiOsPrintf ("Package [Len %X] ElementArray %p\n",
    682  1.1  jruoho             ObjDesc->Package.Count, ObjDesc->Package.Elements);
    683  1.1  jruoho 
    684  1.1  jruoho         /*
    685  1.1  jruoho          * If elements exist, package element pointer is valid,
    686  1.1  jruoho          * and debug_level exceeds 1, dump package's elements.
    687  1.1  jruoho          */
    688  1.1  jruoho         if (ObjDesc->Package.Count &&
    689  1.1  jruoho             ObjDesc->Package.Elements &&
    690  1.1  jruoho             AcpiDbgLevel > 1)
    691  1.1  jruoho         {
    692  1.1  jruoho             for (Index = 0; Index < ObjDesc->Package.Count; Index++)
    693  1.1  jruoho             {
    694  1.1  jruoho                 AcpiExDumpOperand (ObjDesc->Package.Elements[Index], Depth+1);
    695  1.1  jruoho             }
    696  1.1  jruoho         }
    697  1.1  jruoho         break;
    698  1.1  jruoho 
    699  1.1  jruoho 
    700  1.1  jruoho     case ACPI_TYPE_REGION:
    701  1.1  jruoho 
    702  1.1  jruoho         AcpiOsPrintf ("Region %s (%X)",
    703  1.1  jruoho             AcpiUtGetRegionName (ObjDesc->Region.SpaceId),
    704  1.1  jruoho             ObjDesc->Region.SpaceId);
    705  1.1  jruoho 
    706  1.1  jruoho         /*
    707  1.1  jruoho          * If the address and length have not been evaluated,
    708  1.1  jruoho          * don't print them.
    709  1.1  jruoho          */
    710  1.1  jruoho         if (!(ObjDesc->Region.Flags & AOPOBJ_DATA_VALID))
    711  1.1  jruoho         {
    712  1.1  jruoho             AcpiOsPrintf ("\n");
    713  1.1  jruoho         }
    714  1.1  jruoho         else
    715  1.1  jruoho         {
    716  1.1  jruoho             AcpiOsPrintf (" base %8.8X%8.8X Length %X\n",
    717  1.1  jruoho                 ACPI_FORMAT_NATIVE_UINT (ObjDesc->Region.Address),
    718  1.1  jruoho                 ObjDesc->Region.Length);
    719  1.1  jruoho         }
    720  1.1  jruoho         break;
    721  1.1  jruoho 
    722  1.1  jruoho 
    723  1.1  jruoho     case ACPI_TYPE_STRING:
    724  1.1  jruoho 
    725  1.1  jruoho         AcpiOsPrintf ("String length %X @ %p ",
    726  1.1  jruoho             ObjDesc->String.Length,
    727  1.1  jruoho             ObjDesc->String.Pointer);
    728  1.1  jruoho 
    729  1.1  jruoho         AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
    730  1.1  jruoho         AcpiOsPrintf ("\n");
    731  1.1  jruoho         break;
    732  1.1  jruoho 
    733  1.1  jruoho 
    734  1.1  jruoho     case ACPI_TYPE_LOCAL_BANK_FIELD:
    735  1.1  jruoho 
    736  1.1  jruoho         AcpiOsPrintf ("BankField\n");
    737  1.1  jruoho         break;
    738  1.1  jruoho 
    739  1.1  jruoho 
    740  1.1  jruoho     case ACPI_TYPE_LOCAL_REGION_FIELD:
    741  1.1  jruoho 
    742  1.1  jruoho         AcpiOsPrintf ("RegionField: Bits=%X AccWidth=%X Lock=%X Update=%X at "
    743  1.1  jruoho             "byte=%X bit=%X of below:\n",
    744  1.1  jruoho             ObjDesc->Field.BitLength,
    745  1.1  jruoho             ObjDesc->Field.AccessByteWidth,
    746  1.1  jruoho             ObjDesc->Field.FieldFlags & AML_FIELD_LOCK_RULE_MASK,
    747  1.1  jruoho             ObjDesc->Field.FieldFlags & AML_FIELD_UPDATE_RULE_MASK,
    748  1.1  jruoho             ObjDesc->Field.BaseByteOffset,
    749  1.1  jruoho             ObjDesc->Field.StartFieldBitOffset);
    750  1.1  jruoho 
    751  1.1  jruoho         AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth+1);
    752  1.1  jruoho         break;
    753  1.1  jruoho 
    754  1.1  jruoho 
    755  1.1  jruoho     case ACPI_TYPE_LOCAL_INDEX_FIELD:
    756  1.1  jruoho 
    757  1.1  jruoho         AcpiOsPrintf ("IndexField\n");
    758  1.1  jruoho         break;
    759  1.1  jruoho 
    760  1.1  jruoho 
    761  1.1  jruoho     case ACPI_TYPE_BUFFER_FIELD:
    762  1.1  jruoho 
    763  1.1  jruoho         AcpiOsPrintf ("BufferField: %X bits at byte %X bit %X of\n",
    764  1.1  jruoho             ObjDesc->BufferField.BitLength,
    765  1.1  jruoho             ObjDesc->BufferField.BaseByteOffset,
    766  1.1  jruoho             ObjDesc->BufferField.StartFieldBitOffset);
    767  1.1  jruoho 
    768  1.1  jruoho         if (!ObjDesc->BufferField.BufferObj)
    769  1.1  jruoho         {
    770  1.1  jruoho             ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*NULL*\n"));
    771  1.1  jruoho         }
    772  1.1  jruoho         else if ((ObjDesc->BufferField.BufferObj)->Common.Type !=
    773  1.1  jruoho                     ACPI_TYPE_BUFFER)
    774  1.1  jruoho         {
    775  1.1  jruoho             AcpiOsPrintf ("*not a Buffer*\n");
    776  1.1  jruoho         }
    777  1.1  jruoho         else
    778  1.1  jruoho         {
    779  1.1  jruoho             AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth+1);
    780  1.1  jruoho         }
    781  1.1  jruoho         break;
    782  1.1  jruoho 
    783  1.1  jruoho 
    784  1.1  jruoho     case ACPI_TYPE_EVENT:
    785  1.1  jruoho 
    786  1.1  jruoho         AcpiOsPrintf ("Event\n");
    787  1.1  jruoho         break;
    788  1.1  jruoho 
    789  1.1  jruoho 
    790  1.1  jruoho     case ACPI_TYPE_METHOD:
    791  1.1  jruoho 
    792  1.1  jruoho         AcpiOsPrintf ("Method(%X) @ %p:%X\n",
    793  1.1  jruoho             ObjDesc->Method.ParamCount,
    794  1.1  jruoho             ObjDesc->Method.AmlStart,
    795  1.1  jruoho             ObjDesc->Method.AmlLength);
    796  1.1  jruoho         break;
    797  1.1  jruoho 
    798  1.1  jruoho 
    799  1.1  jruoho     case ACPI_TYPE_MUTEX:
    800  1.1  jruoho 
    801  1.1  jruoho         AcpiOsPrintf ("Mutex\n");
    802  1.1  jruoho         break;
    803  1.1  jruoho 
    804  1.1  jruoho 
    805  1.1  jruoho     case ACPI_TYPE_DEVICE:
    806  1.1  jruoho 
    807  1.1  jruoho         AcpiOsPrintf ("Device\n");
    808  1.1  jruoho         break;
    809  1.1  jruoho 
    810  1.1  jruoho 
    811  1.1  jruoho     case ACPI_TYPE_POWER:
    812  1.1  jruoho 
    813  1.1  jruoho         AcpiOsPrintf ("Power\n");
    814  1.1  jruoho         break;
    815  1.1  jruoho 
    816  1.1  jruoho 
    817  1.1  jruoho     case ACPI_TYPE_PROCESSOR:
    818  1.1  jruoho 
    819  1.1  jruoho         AcpiOsPrintf ("Processor\n");
    820  1.1  jruoho         break;
    821  1.1  jruoho 
    822  1.1  jruoho 
    823  1.1  jruoho     case ACPI_TYPE_THERMAL:
    824  1.1  jruoho 
    825  1.1  jruoho         AcpiOsPrintf ("Thermal\n");
    826  1.1  jruoho         break;
    827  1.1  jruoho 
    828  1.1  jruoho 
    829  1.1  jruoho     default:
    830  1.1  jruoho         /* Unknown Type */
    831  1.1  jruoho 
    832  1.1  jruoho         AcpiOsPrintf ("Unknown Type %X\n", ObjDesc->Common.Type);
    833  1.1  jruoho         break;
    834  1.1  jruoho     }
    835  1.1  jruoho 
    836  1.1  jruoho     return;
    837  1.1  jruoho }
    838  1.1  jruoho 
    839  1.1  jruoho 
    840  1.1  jruoho /*******************************************************************************
    841  1.1  jruoho  *
    842  1.1  jruoho  * FUNCTION:    AcpiExDumpOperands
    843  1.1  jruoho  *
    844  1.1  jruoho  * PARAMETERS:  Operands            - A list of Operand objects
    845  1.1  jruoho  *              OpcodeName          - AML opcode name
    846  1.1  jruoho  *              NumOperands         - Operand count for this opcode
    847  1.1  jruoho  *
    848  1.1  jruoho  * DESCRIPTION: Dump the operands associated with the opcode
    849  1.1  jruoho  *
    850  1.1  jruoho  ******************************************************************************/
    851  1.1  jruoho 
    852  1.1  jruoho void
    853  1.1  jruoho AcpiExDumpOperands (
    854  1.1  jruoho     ACPI_OPERAND_OBJECT     **Operands,
    855  1.1  jruoho     const char              *OpcodeName,
    856  1.1  jruoho     UINT32                  NumOperands)
    857  1.1  jruoho {
    858  1.1  jruoho     ACPI_FUNCTION_NAME (ExDumpOperands);
    859  1.1  jruoho 
    860  1.1  jruoho 
    861  1.1  jruoho     if (!OpcodeName)
    862  1.1  jruoho     {
    863  1.1  jruoho         OpcodeName = "UNKNOWN";
    864  1.1  jruoho     }
    865  1.1  jruoho 
    866  1.1  jruoho     ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
    867  1.1  jruoho         "**** Start operand dump for opcode [%s], %u operands\n",
    868  1.1  jruoho         OpcodeName, NumOperands));
    869  1.1  jruoho 
    870  1.1  jruoho     if (NumOperands == 0)
    871  1.1  jruoho     {
    872  1.1  jruoho         NumOperands = 1;
    873  1.1  jruoho     }
    874  1.1  jruoho 
    875  1.1  jruoho     /* Dump the individual operands */
    876  1.1  jruoho 
    877  1.1  jruoho     while (NumOperands)
    878  1.1  jruoho     {
    879  1.1  jruoho         AcpiExDumpOperand (*Operands, 0);
    880  1.1  jruoho         Operands++;
    881  1.1  jruoho         NumOperands--;
    882  1.1  jruoho     }
    883  1.1  jruoho 
    884  1.1  jruoho     ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
    885  1.1  jruoho         "**** End operand dump for [%s]\n", OpcodeName));
    886  1.1  jruoho     return;
    887  1.1  jruoho }
    888  1.1  jruoho 
    889  1.1  jruoho 
    890  1.1  jruoho /*******************************************************************************
    891  1.1  jruoho  *
    892  1.1  jruoho  * FUNCTION:    AcpiExOut* functions
    893  1.1  jruoho  *
    894  1.1  jruoho  * PARAMETERS:  Title               - Descriptive text
    895  1.1  jruoho  *              Value               - Value to be displayed
    896  1.1  jruoho  *
    897  1.1  jruoho  * DESCRIPTION: Object dump output formatting functions.  These functions
    898  1.1  jruoho  *              reduce the number of format strings required and keeps them
    899  1.1  jruoho  *              all in one place for easy modification.
    900  1.1  jruoho  *
    901  1.1  jruoho  ******************************************************************************/
    902  1.1  jruoho 
    903  1.1  jruoho static void
    904  1.1  jruoho AcpiExOutString (
    905  1.2  jruoho     const char              *Title,
    906  1.2  jruoho     const char              *Value)
    907  1.1  jruoho {
    908  1.1  jruoho     AcpiOsPrintf ("%20s : %s\n", Title, Value);
    909  1.1  jruoho }
    910  1.1  jruoho 
    911  1.1  jruoho static void
    912  1.1  jruoho AcpiExOutPointer (
    913  1.2  jruoho     const char              *Title,
    914  1.1  jruoho     void                    *Value)
    915  1.1  jruoho {
    916  1.1  jruoho     AcpiOsPrintf ("%20s : %p\n", Title, Value);
    917  1.1  jruoho }
    918  1.1  jruoho 
    919  1.1  jruoho 
    920  1.1  jruoho /*******************************************************************************
    921  1.1  jruoho  *
    922  1.1  jruoho  * FUNCTION:    AcpiExDumpNamespaceNode
    923  1.1  jruoho  *
    924  1.1  jruoho  * PARAMETERS:  Node                - Descriptor to dump
    925  1.1  jruoho  *              Flags               - Force display if TRUE
    926  1.1  jruoho  *
    927  1.1  jruoho  * DESCRIPTION: Dumps the members of the given.Node
    928  1.1  jruoho  *
    929  1.1  jruoho  ******************************************************************************/
    930  1.1  jruoho 
    931  1.1  jruoho void
    932  1.1  jruoho AcpiExDumpNamespaceNode (
    933  1.1  jruoho     ACPI_NAMESPACE_NODE     *Node,
    934  1.1  jruoho     UINT32                  Flags)
    935  1.1  jruoho {
    936  1.1  jruoho 
    937  1.1  jruoho     ACPI_FUNCTION_ENTRY ();
    938  1.1  jruoho 
    939  1.1  jruoho 
    940  1.1  jruoho     if (!Flags)
    941  1.1  jruoho     {
    942  1.1  jruoho         if (!((ACPI_LV_OBJECTS & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer)))
    943  1.1  jruoho         {
    944  1.1  jruoho             return;
    945  1.1  jruoho         }
    946  1.1  jruoho     }
    947  1.1  jruoho 
    948  1.1  jruoho     AcpiOsPrintf ("%20s : %4.4s\n", "Name", AcpiUtGetNodeName (Node));
    949  1.1  jruoho     AcpiExOutString  ("Type", AcpiUtGetTypeName (Node->Type));
    950  1.1  jruoho     AcpiExOutPointer ("Attached Object", AcpiNsGetAttachedObject (Node));
    951  1.1  jruoho     AcpiExOutPointer ("Parent", Node->Parent);
    952  1.1  jruoho 
    953  1.1  jruoho     AcpiExDumpObject (ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node),
    954  1.1  jruoho         AcpiExDumpNode);
    955  1.1  jruoho }
    956  1.1  jruoho 
    957  1.1  jruoho 
    958  1.1  jruoho /*******************************************************************************
    959  1.1  jruoho  *
    960  1.1  jruoho  * FUNCTION:    AcpiExDumpReferenceObj
    961  1.1  jruoho  *
    962  1.1  jruoho  * PARAMETERS:  Object              - Descriptor to dump
    963  1.1  jruoho  *
    964  1.1  jruoho  * DESCRIPTION: Dumps a reference object
    965  1.1  jruoho  *
    966  1.1  jruoho  ******************************************************************************/
    967  1.1  jruoho 
    968  1.1  jruoho static void
    969  1.1  jruoho AcpiExDumpReferenceObj (
    970  1.1  jruoho     ACPI_OPERAND_OBJECT     *ObjDesc)
    971  1.1  jruoho {
    972  1.1  jruoho     ACPI_BUFFER             RetBuf;
    973  1.1  jruoho     ACPI_STATUS             Status;
    974  1.1  jruoho 
    975  1.1  jruoho 
    976  1.1  jruoho     RetBuf.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
    977  1.1  jruoho 
    978  1.1  jruoho     if (ObjDesc->Reference.Class == ACPI_REFCLASS_NAME)
    979  1.1  jruoho     {
    980  1.1  jruoho         AcpiOsPrintf (" %p ", ObjDesc->Reference.Node);
    981  1.1  jruoho 
    982  1.1  jruoho         Status = AcpiNsHandleToPathname (ObjDesc->Reference.Node, &RetBuf);
    983  1.1  jruoho         if (ACPI_FAILURE (Status))
    984  1.1  jruoho         {
    985  1.1  jruoho             AcpiOsPrintf (" Could not convert name to pathname\n");
    986  1.1  jruoho         }
    987  1.1  jruoho         else
    988  1.1  jruoho         {
    989  1.1  jruoho            AcpiOsPrintf ("%s\n", (char *) RetBuf.Pointer);
    990  1.1  jruoho            ACPI_FREE (RetBuf.Pointer);
    991  1.1  jruoho         }
    992  1.1  jruoho     }
    993  1.1  jruoho     else if (ObjDesc->Reference.Object)
    994  1.1  jruoho     {
    995  1.1  jruoho         if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND)
    996  1.1  jruoho         {
    997  1.1  jruoho             AcpiOsPrintf (" Target: %p", ObjDesc->Reference.Object);
    998  1.1  jruoho             if (ObjDesc->Reference.Class == ACPI_REFCLASS_TABLE)
    999  1.1  jruoho             {
   1000  1.1  jruoho                 AcpiOsPrintf (" Table Index: %X\n", ObjDesc->Reference.Value);
   1001  1.1  jruoho             }
   1002  1.1  jruoho             else
   1003  1.1  jruoho             {
   1004  1.1  jruoho                 AcpiOsPrintf (" Target: %p [%s]\n", ObjDesc->Reference.Object,
   1005  1.1  jruoho                     AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
   1006  1.1  jruoho                         ObjDesc->Reference.Object)->Common.Type));
   1007  1.1  jruoho             }
   1008  1.1  jruoho         }
   1009  1.1  jruoho         else
   1010  1.1  jruoho         {
   1011  1.1  jruoho             AcpiOsPrintf (" Target: %p\n", ObjDesc->Reference.Object);
   1012  1.1  jruoho         }
   1013  1.1  jruoho     }
   1014  1.1  jruoho }
   1015  1.1  jruoho 
   1016  1.1  jruoho 
   1017  1.1  jruoho /*******************************************************************************
   1018  1.1  jruoho  *
   1019  1.1  jruoho  * FUNCTION:    AcpiExDumpPackageObj
   1020  1.1  jruoho  *
   1021  1.1  jruoho  * PARAMETERS:  ObjDesc             - Descriptor to dump
   1022  1.1  jruoho  *              Level               - Indentation Level
   1023  1.1  jruoho  *              Index               - Package index for this object
   1024  1.1  jruoho  *
   1025  1.1  jruoho  * DESCRIPTION: Dumps the elements of the package
   1026  1.1  jruoho  *
   1027  1.1  jruoho  ******************************************************************************/
   1028  1.1  jruoho 
   1029  1.1  jruoho static void
   1030  1.1  jruoho AcpiExDumpPackageObj (
   1031  1.1  jruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
   1032  1.1  jruoho     UINT32                  Level,
   1033  1.1  jruoho     UINT32                  Index)
   1034  1.1  jruoho {
   1035  1.1  jruoho     UINT32                  i;
   1036  1.1  jruoho 
   1037  1.1  jruoho 
   1038  1.1  jruoho     /* Indentation and index output */
   1039  1.1  jruoho 
   1040  1.1  jruoho     if (Level > 0)
   1041  1.1  jruoho     {
   1042  1.1  jruoho         for (i = 0; i < Level; i++)
   1043  1.1  jruoho         {
   1044  1.1  jruoho             AcpiOsPrintf ("  ");
   1045  1.1  jruoho         }
   1046  1.1  jruoho 
   1047  1.1  jruoho         AcpiOsPrintf ("[%.2d] ", Index);
   1048  1.1  jruoho     }
   1049  1.1  jruoho 
   1050  1.1  jruoho     AcpiOsPrintf ("%p ", ObjDesc);
   1051  1.1  jruoho 
   1052  1.1  jruoho     /* Null package elements are allowed */
   1053  1.1  jruoho 
   1054  1.1  jruoho     if (!ObjDesc)
   1055  1.1  jruoho     {
   1056  1.1  jruoho         AcpiOsPrintf ("[Null Object]\n");
   1057  1.1  jruoho         return;
   1058  1.1  jruoho     }
   1059  1.1  jruoho 
   1060  1.1  jruoho     /* Packages may only contain a few object types */
   1061  1.1  jruoho 
   1062  1.1  jruoho     switch (ObjDesc->Common.Type)
   1063  1.1  jruoho     {
   1064  1.1  jruoho     case ACPI_TYPE_INTEGER:
   1065  1.1  jruoho 
   1066  1.1  jruoho         AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n",
   1067  1.1  jruoho             ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
   1068  1.1  jruoho         break;
   1069  1.1  jruoho 
   1070  1.1  jruoho 
   1071  1.1  jruoho     case ACPI_TYPE_STRING:
   1072  1.1  jruoho 
   1073  1.1  jruoho         AcpiOsPrintf ("[String]  Value: ");
   1074  1.1  jruoho         for (i = 0; i < ObjDesc->String.Length; i++)
   1075  1.1  jruoho         {
   1076  1.1  jruoho             AcpiOsPrintf ("%c", ObjDesc->String.Pointer[i]);
   1077  1.1  jruoho         }
   1078  1.1  jruoho         AcpiOsPrintf ("\n");
   1079  1.1  jruoho         break;
   1080  1.1  jruoho 
   1081  1.1  jruoho 
   1082  1.1  jruoho     case ACPI_TYPE_BUFFER:
   1083  1.1  jruoho 
   1084  1.1  jruoho         AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length);
   1085  1.1  jruoho         if (ObjDesc->Buffer.Length)
   1086  1.1  jruoho         {
   1087  1.1  jruoho             AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer),
   1088  1.1  jruoho                 ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT);
   1089  1.1  jruoho         }
   1090  1.1  jruoho         else
   1091  1.1  jruoho         {
   1092  1.1  jruoho             AcpiOsPrintf ("\n");
   1093  1.1  jruoho         }
   1094  1.1  jruoho         break;
   1095  1.1  jruoho 
   1096  1.1  jruoho 
   1097  1.1  jruoho     case ACPI_TYPE_PACKAGE:
   1098  1.1  jruoho 
   1099  1.1  jruoho         AcpiOsPrintf ("[Package] Contains %u Elements:\n",
   1100  1.1  jruoho             ObjDesc->Package.Count);
   1101  1.1  jruoho 
   1102  1.1  jruoho         for (i = 0; i < ObjDesc->Package.Count; i++)
   1103  1.1  jruoho         {
   1104  1.1  jruoho             AcpiExDumpPackageObj (ObjDesc->Package.Elements[i], Level+1, i);
   1105  1.1  jruoho         }
   1106  1.1  jruoho         break;
   1107  1.1  jruoho 
   1108  1.1  jruoho 
   1109  1.1  jruoho     case ACPI_TYPE_LOCAL_REFERENCE:
   1110  1.1  jruoho 
   1111  1.1  jruoho         AcpiOsPrintf ("[Object Reference] Type [%s] %2.2X",
   1112  1.1  jruoho             AcpiUtGetReferenceName (ObjDesc),
   1113  1.1  jruoho             ObjDesc->Reference.Class);
   1114  1.1  jruoho         AcpiExDumpReferenceObj (ObjDesc);
   1115  1.1  jruoho         break;
   1116  1.1  jruoho 
   1117  1.1  jruoho 
   1118  1.1  jruoho     default:
   1119  1.1  jruoho 
   1120  1.1  jruoho         AcpiOsPrintf ("[Unknown Type] %X\n", ObjDesc->Common.Type);
   1121  1.1  jruoho         break;
   1122  1.1  jruoho     }
   1123  1.1  jruoho }
   1124  1.1  jruoho 
   1125  1.1  jruoho 
   1126  1.1  jruoho /*******************************************************************************
   1127  1.1  jruoho  *
   1128  1.1  jruoho  * FUNCTION:    AcpiExDumpObjectDescriptor
   1129  1.1  jruoho  *
   1130  1.1  jruoho  * PARAMETERS:  ObjDesc             - Descriptor to dump
   1131  1.1  jruoho  *              Flags               - Force display if TRUE
   1132  1.1  jruoho  *
   1133  1.1  jruoho  * DESCRIPTION: Dumps the members of the object descriptor given.
   1134  1.1  jruoho  *
   1135  1.1  jruoho  ******************************************************************************/
   1136  1.1  jruoho 
   1137  1.1  jruoho void
   1138  1.1  jruoho AcpiExDumpObjectDescriptor (
   1139  1.1  jruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
   1140  1.1  jruoho     UINT32                  Flags)
   1141  1.1  jruoho {
   1142  1.1  jruoho     ACPI_FUNCTION_TRACE (ExDumpObjectDescriptor);
   1143  1.1  jruoho 
   1144  1.1  jruoho 
   1145  1.1  jruoho     if (!ObjDesc)
   1146  1.1  jruoho     {
   1147  1.1  jruoho         return_VOID;
   1148  1.1  jruoho     }
   1149  1.1  jruoho 
   1150  1.1  jruoho     if (!Flags)
   1151  1.1  jruoho     {
   1152  1.1  jruoho         if (!((ACPI_LV_OBJECTS & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer)))
   1153  1.1  jruoho         {
   1154  1.1  jruoho             return_VOID;
   1155  1.1  jruoho         }
   1156  1.1  jruoho     }
   1157  1.1  jruoho 
   1158  1.1  jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
   1159  1.1  jruoho     {
   1160  1.1  jruoho         AcpiExDumpNamespaceNode ((ACPI_NAMESPACE_NODE *) ObjDesc, Flags);
   1161  1.1  jruoho 
   1162  1.1  jruoho         AcpiOsPrintf ("\nAttached Object (%p):\n",
   1163  1.1  jruoho             ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object);
   1164  1.1  jruoho 
   1165  1.1  jruoho         AcpiExDumpObjectDescriptor (
   1166  1.1  jruoho             ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object, Flags);
   1167  1.1  jruoho         return_VOID;
   1168  1.1  jruoho     }
   1169  1.1  jruoho 
   1170  1.1  jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
   1171  1.1  jruoho     {
   1172  1.1  jruoho         AcpiOsPrintf (
   1173  1.1  jruoho             "ExDumpObjectDescriptor: %p is not an ACPI operand object: [%s]\n",
   1174  1.1  jruoho             ObjDesc, AcpiUtGetDescriptorName (ObjDesc));
   1175  1.1  jruoho         return_VOID;
   1176  1.1  jruoho     }
   1177  1.1  jruoho 
   1178  1.1  jruoho     if (ObjDesc->Common.Type > ACPI_TYPE_NS_NODE_MAX)
   1179  1.1  jruoho     {
   1180  1.1  jruoho         return_VOID;
   1181  1.1  jruoho     }
   1182  1.1  jruoho 
   1183  1.1  jruoho     /* Common Fields */
   1184  1.1  jruoho 
   1185  1.1  jruoho     AcpiExDumpObject (ObjDesc, AcpiExDumpCommon);
   1186  1.1  jruoho 
   1187  1.1  jruoho     /* Object-specific fields */
   1188  1.1  jruoho 
   1189  1.1  jruoho     AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]);
   1190  1.1  jruoho     return_VOID;
   1191  1.1  jruoho }
   1192  1.1  jruoho 
   1193  1.1  jruoho #endif
   1194  1.1  jruoho 
   1195