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