Home | History | Annotate | Line # | Download | only in executer
exdump.c revision 1.4
      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.4  christos  * Copyright (C) 2000 - 2013, 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.1    jruoho     {ACPI_EXD_POINTER,  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.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpPackage[5] =
    122  1.1    jruoho {
    123  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpPackage),        NULL},
    124  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Package.Flags),                "Flags"},
    125  1.1    jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Package.Count),                "Elements"},
    126  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Package.Elements),             "Element List"},
    127  1.1    jruoho     {ACPI_EXD_PACKAGE,  0,                                              NULL}
    128  1.1    jruoho };
    129  1.1    jruoho 
    130  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpDevice[4] =
    131  1.1    jruoho {
    132  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpDevice),         NULL},
    133  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Device.Handler),               "Handler"},
    134  1.4  christos     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Device.NotifyList[0]),         "System Notify"},
    135  1.4  christos     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Device.NotifyList[1]),         "Device Notify"}
    136  1.1    jruoho };
    137  1.1    jruoho 
    138  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpEvent[2] =
    139  1.1    jruoho {
    140  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpEvent),          NULL},
    141  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Event.OsSemaphore),            "OsSemaphore"}
    142  1.1    jruoho };
    143  1.1    jruoho 
    144  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpMethod[9] =
    145  1.1    jruoho {
    146  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpMethod),         NULL},
    147  1.3    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.InfoFlags),             "Info Flags"},
    148  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.ParamCount),            "Parameter Count"},
    149  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.SyncLevel),             "Sync Level"},
    150  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Method.Mutex),                 "Mutex"},
    151  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.OwnerId),               "Owner Id"},
    152  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.ThreadCount),           "Thread Count"},
    153  1.1    jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Method.AmlLength),             "Aml Length"},
    154  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Method.AmlStart),              "Aml Start"}
    155  1.1    jruoho };
    156  1.1    jruoho 
    157  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpMutex[5] =
    158  1.1    jruoho {
    159  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpMutex),          NULL},
    160  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Mutex.SyncLevel),              "Sync Level"},
    161  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Mutex.OwnerThread),            "Owner Thread"},
    162  1.1    jruoho     {ACPI_EXD_UINT16,   ACPI_EXD_OFFSET (Mutex.AcquisitionDepth),       "Acquire Depth"},
    163  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Mutex.OsMutex),                "OsMutex"}
    164  1.1    jruoho };
    165  1.1    jruoho 
    166  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpRegion[7] =
    167  1.1    jruoho {
    168  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpRegion),         NULL},
    169  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Region.SpaceId),               "Space Id"},
    170  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Region.Flags),                 "Flags"},
    171  1.1    jruoho     {ACPI_EXD_ADDRESS,  ACPI_EXD_OFFSET (Region.Address),               "Address"},
    172  1.1    jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Region.Length),                "Length"},
    173  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Region.Handler),               "Handler"},
    174  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Region.Next),                  "Next"}
    175  1.1    jruoho };
    176  1.1    jruoho 
    177  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpPower[5] =
    178  1.1    jruoho {
    179  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpPower),          NULL},
    180  1.1    jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (PowerResource.SystemLevel),    "System Level"},
    181  1.1    jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (PowerResource.ResourceOrder),  "Resource Order"},
    182  1.4  christos     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (PowerResource.NotifyList[0]),  "System Notify"},
    183  1.4  christos     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (PowerResource.NotifyList[1]),  "Device Notify"}
    184  1.1    jruoho };
    185  1.1    jruoho 
    186  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpProcessor[7] =
    187  1.1    jruoho {
    188  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpProcessor),      NULL},
    189  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Processor.ProcId),             "Processor ID"},
    190  1.1    jruoho     {ACPI_EXD_UINT8 ,   ACPI_EXD_OFFSET (Processor.Length),             "Length"},
    191  1.1    jruoho     {ACPI_EXD_ADDRESS,  ACPI_EXD_OFFSET (Processor.Address),            "Address"},
    192  1.4  christos     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Processor.NotifyList[0]),      "System Notify"},
    193  1.4  christos     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Processor.NotifyList[1]),      "Device Notify"},
    194  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Processor.Handler),            "Handler"}
    195  1.1    jruoho };
    196  1.1    jruoho 
    197  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpThermal[4] =
    198  1.1    jruoho {
    199  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpThermal),        NULL},
    200  1.4  christos     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (ThermalZone.NotifyList[0]),    "System Notify"},
    201  1.4  christos     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (ThermalZone.NotifyList[1]),    "Device Notify"},
    202  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (ThermalZone.Handler),          "Handler"}
    203  1.1    jruoho };
    204  1.1    jruoho 
    205  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpBufferField[3] =
    206  1.1    jruoho {
    207  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpBufferField),    NULL},
    208  1.1    jruoho     {ACPI_EXD_FIELD,    0,                                              NULL},
    209  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (BufferField.BufferObj),        "Buffer Object"}
    210  1.1    jruoho };
    211  1.1    jruoho 
    212  1.4  christos static ACPI_EXDUMP_INFO     AcpiExDumpRegionField[5] =
    213  1.1    jruoho {
    214  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpRegionField),    NULL},
    215  1.1    jruoho     {ACPI_EXD_FIELD,    0,                                              NULL},
    216  1.4  christos     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Field.AccessLength),           "AccessLength"},
    217  1.4  christos     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Field.RegionObj),              "Region Object"},
    218  1.4  christos     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Field.ResourceBuffer),         "ResourceBuffer"}
    219  1.1    jruoho };
    220  1.1    jruoho 
    221  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpBankField[5] =
    222  1.1    jruoho {
    223  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField),      NULL},
    224  1.1    jruoho     {ACPI_EXD_FIELD,    0,                                              NULL},
    225  1.1    jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (BankField.Value),              "Value"},
    226  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (BankField.RegionObj),          "Region Object"},
    227  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (BankField.BankObj),            "Bank Object"}
    228  1.1    jruoho };
    229  1.1    jruoho 
    230  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpIndexField[5] =
    231  1.1    jruoho {
    232  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField),      NULL},
    233  1.1    jruoho     {ACPI_EXD_FIELD,    0,                                              NULL},
    234  1.1    jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (IndexField.Value),             "Value"},
    235  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (IndexField.IndexObj),          "Index Object"},
    236  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (IndexField.DataObj),           "Data Object"}
    237  1.1    jruoho };
    238  1.1    jruoho 
    239  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpReference[8] =
    240  1.1    jruoho {
    241  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpReference),       NULL},
    242  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Reference.Class),              "Class"},
    243  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Reference.TargetType),         "Target Type"},
    244  1.1    jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Reference.Value),              "Value"},
    245  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Reference.Object),             "Object Desc"},
    246  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Reference.Node),               "Node"},
    247  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Reference.Where),              "Where"},
    248  1.1    jruoho     {ACPI_EXD_REFERENCE,0,                                              NULL}
    249  1.1    jruoho };
    250  1.1    jruoho 
    251  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpAddressHandler[6] =
    252  1.1    jruoho {
    253  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpAddressHandler), NULL},
    254  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (AddressSpace.SpaceId),         "Space Id"},
    255  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (AddressSpace.Next),            "Next"},
    256  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (AddressSpace.RegionList),      "Region List"},
    257  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (AddressSpace.Node),            "Node"},
    258  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (AddressSpace.Context),         "Context"}
    259  1.1    jruoho };
    260  1.1    jruoho 
    261  1.4  christos static ACPI_EXDUMP_INFO     AcpiExDumpNotify[7] =
    262  1.1    jruoho {
    263  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpNotify),         NULL},
    264  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Notify.Node),                  "Node"},
    265  1.4  christos     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Notify.HandlerType),           "Handler Type"},
    266  1.4  christos     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Notify.Handler),               "Handler"},
    267  1.4  christos     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Notify.Context),               "Context"},
    268  1.4  christos     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Notify.Next[0]),               "Next System Notify"},
    269  1.4  christos     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Notify.Next[1]),               "Next Device Notify"}
    270  1.1    jruoho };
    271  1.1    jruoho 
    272  1.1    jruoho 
    273  1.1    jruoho /* Miscellaneous tables */
    274  1.1    jruoho 
    275  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpCommon[4] =
    276  1.1    jruoho {
    277  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpCommon),         NULL},
    278  1.1    jruoho     {ACPI_EXD_TYPE ,    0,                                              NULL},
    279  1.1    jruoho     {ACPI_EXD_UINT16,   ACPI_EXD_OFFSET (Common.ReferenceCount),        "Reference Count"},
    280  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Common.Flags),                 "Flags"}
    281  1.1    jruoho };
    282  1.1    jruoho 
    283  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpFieldCommon[7] =
    284  1.1    jruoho {
    285  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpFieldCommon),    NULL},
    286  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (CommonField.FieldFlags),       "Field Flags"},
    287  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (CommonField.AccessByteWidth),  "Access Byte Width"},
    288  1.1    jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (CommonField.BitLength),        "Bit Length"},
    289  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (CommonField.StartFieldBitOffset),"Field Bit Offset"},
    290  1.1    jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (CommonField.BaseByteOffset),   "Base Byte Offset"},
    291  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (CommonField.Node),             "Parent Node"}
    292  1.1    jruoho };
    293  1.1    jruoho 
    294  1.1    jruoho static ACPI_EXDUMP_INFO     AcpiExDumpNode[5] =
    295  1.1    jruoho {
    296  1.1    jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpNode),           NULL},
    297  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_NSOFFSET (Flags),                      "Flags"},
    298  1.1    jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_NSOFFSET (OwnerId),                    "Owner Id"},
    299  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_NSOFFSET (Child),                      "Child List"},
    300  1.1    jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_NSOFFSET (Peer),                       "Next Peer"}
    301  1.1    jruoho };
    302  1.1    jruoho 
    303  1.1    jruoho 
    304  1.1    jruoho /* Dispatch table, indexed by object type */
    305  1.1    jruoho 
    306  1.1    jruoho static ACPI_EXDUMP_INFO     *AcpiExDumpInfo[] =
    307  1.1    jruoho {
    308  1.1    jruoho     NULL,
    309  1.1    jruoho     AcpiExDumpInteger,
    310  1.1    jruoho     AcpiExDumpString,
    311  1.1    jruoho     AcpiExDumpBuffer,
    312  1.1    jruoho     AcpiExDumpPackage,
    313  1.1    jruoho     NULL,
    314  1.1    jruoho     AcpiExDumpDevice,
    315  1.1    jruoho     AcpiExDumpEvent,
    316  1.1    jruoho     AcpiExDumpMethod,
    317  1.1    jruoho     AcpiExDumpMutex,
    318  1.1    jruoho     AcpiExDumpRegion,
    319  1.1    jruoho     AcpiExDumpPower,
    320  1.1    jruoho     AcpiExDumpProcessor,
    321  1.1    jruoho     AcpiExDumpThermal,
    322  1.1    jruoho     AcpiExDumpBufferField,
    323  1.1    jruoho     NULL,
    324  1.1    jruoho     NULL,
    325  1.1    jruoho     AcpiExDumpRegionField,
    326  1.1    jruoho     AcpiExDumpBankField,
    327  1.1    jruoho     AcpiExDumpIndexField,
    328  1.1    jruoho     AcpiExDumpReference,
    329  1.1    jruoho     NULL,
    330  1.1    jruoho     NULL,
    331  1.1    jruoho     AcpiExDumpNotify,
    332  1.1    jruoho     AcpiExDumpAddressHandler,
    333  1.1    jruoho     NULL,
    334  1.1    jruoho     NULL,
    335  1.1    jruoho     NULL
    336  1.1    jruoho };
    337  1.1    jruoho 
    338  1.1    jruoho 
    339  1.1    jruoho /*******************************************************************************
    340  1.1    jruoho  *
    341  1.1    jruoho  * FUNCTION:    AcpiExDumpObject
    342  1.1    jruoho  *
    343  1.1    jruoho  * PARAMETERS:  ObjDesc             - Descriptor to dump
    344  1.1    jruoho  *              Info                - Info table corresponding to this object
    345  1.1    jruoho  *                                    type
    346  1.1    jruoho  *
    347  1.1    jruoho  * RETURN:      None
    348  1.1    jruoho  *
    349  1.1    jruoho  * DESCRIPTION: Walk the info table for this object
    350  1.1    jruoho  *
    351  1.1    jruoho  ******************************************************************************/
    352  1.1    jruoho 
    353  1.1    jruoho static void
    354  1.1    jruoho AcpiExDumpObject (
    355  1.1    jruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
    356  1.1    jruoho     ACPI_EXDUMP_INFO        *Info)
    357  1.1    jruoho {
    358  1.1    jruoho     UINT8                   *Target;
    359  1.1    jruoho     char                    *Name;
    360  1.4  christos     const char              *ReferenceName;
    361  1.1    jruoho     UINT8                   Count;
    362  1.1    jruoho 
    363  1.1    jruoho 
    364  1.1    jruoho     if (!Info)
    365  1.1    jruoho     {
    366  1.1    jruoho         AcpiOsPrintf (
    367  1.1    jruoho             "ExDumpObject: Display not implemented for object type %s\n",
    368  1.1    jruoho             AcpiUtGetObjectTypeName (ObjDesc));
    369  1.1    jruoho         return;
    370  1.1    jruoho     }
    371  1.1    jruoho 
    372  1.1    jruoho     /* First table entry must contain the table length (# of table entries) */
    373  1.1    jruoho 
    374  1.1    jruoho     Count = Info->Offset;
    375  1.1    jruoho 
    376  1.1    jruoho     while (Count)
    377  1.1    jruoho     {
    378  1.1    jruoho         Target = ACPI_ADD_PTR (UINT8, ObjDesc, Info->Offset);
    379  1.2    jruoho         Name = __UNCONST(Info->Name);
    380  1.1    jruoho 
    381  1.1    jruoho         switch (Info->Opcode)
    382  1.1    jruoho         {
    383  1.1    jruoho         case ACPI_EXD_INIT:
    384  1.4  christos 
    385  1.1    jruoho             break;
    386  1.1    jruoho 
    387  1.1    jruoho         case ACPI_EXD_TYPE:
    388  1.1    jruoho 
    389  1.1    jruoho             AcpiExOutString  ("Type", AcpiUtGetObjectTypeName (ObjDesc));
    390  1.1    jruoho             break;
    391  1.1    jruoho 
    392  1.1    jruoho         case ACPI_EXD_UINT8:
    393  1.1    jruoho 
    394  1.1    jruoho             AcpiOsPrintf ("%20s : %2.2X\n", Name, *Target);
    395  1.1    jruoho             break;
    396  1.1    jruoho 
    397  1.1    jruoho         case ACPI_EXD_UINT16:
    398  1.1    jruoho 
    399  1.1    jruoho             AcpiOsPrintf ("%20s : %4.4X\n", Name, ACPI_GET16 (Target));
    400  1.1    jruoho             break;
    401  1.1    jruoho 
    402  1.1    jruoho         case ACPI_EXD_UINT32:
    403  1.1    jruoho 
    404  1.1    jruoho             AcpiOsPrintf ("%20s : %8.8X\n", Name, ACPI_GET32 (Target));
    405  1.1    jruoho             break;
    406  1.1    jruoho 
    407  1.1    jruoho         case ACPI_EXD_UINT64:
    408  1.1    jruoho 
    409  1.1    jruoho             AcpiOsPrintf ("%20s : %8.8X%8.8X\n", "Value",
    410  1.1    jruoho                 ACPI_FORMAT_UINT64 (ACPI_GET64 (Target)));
    411  1.1    jruoho             break;
    412  1.1    jruoho 
    413  1.1    jruoho         case ACPI_EXD_POINTER:
    414  1.1    jruoho         case ACPI_EXD_ADDRESS:
    415  1.1    jruoho 
    416  1.1    jruoho             AcpiExOutPointer (Name, *ACPI_CAST_PTR (void *, Target));
    417  1.1    jruoho             break;
    418  1.1    jruoho 
    419  1.1    jruoho         case ACPI_EXD_STRING:
    420  1.1    jruoho 
    421  1.1    jruoho             AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
    422  1.1    jruoho             AcpiOsPrintf ("\n");
    423  1.1    jruoho             break;
    424  1.1    jruoho 
    425  1.1    jruoho         case ACPI_EXD_BUFFER:
    426  1.1    jruoho 
    427  1.1    jruoho             ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length);
    428  1.1    jruoho             break;
    429  1.1    jruoho 
    430  1.1    jruoho         case ACPI_EXD_PACKAGE:
    431  1.1    jruoho 
    432  1.1    jruoho             /* Dump the package contents */
    433  1.1    jruoho 
    434  1.1    jruoho             AcpiOsPrintf ("\nPackage Contents:\n");
    435  1.1    jruoho             AcpiExDumpPackageObj (ObjDesc, 0, 0);
    436  1.1    jruoho             break;
    437  1.1    jruoho 
    438  1.1    jruoho         case ACPI_EXD_FIELD:
    439  1.1    jruoho 
    440  1.1    jruoho             AcpiExDumpObject (ObjDesc, AcpiExDumpFieldCommon);
    441  1.1    jruoho             break;
    442  1.1    jruoho 
    443  1.1    jruoho         case ACPI_EXD_REFERENCE:
    444  1.1    jruoho 
    445  1.4  christos             ReferenceName = AcpiUtGetReferenceName (ObjDesc);
    446  1.4  christos             AcpiExOutString ("Class Name", ACPI_CAST_PTR (char, ReferenceName));
    447  1.1    jruoho             AcpiExDumpReferenceObj (ObjDesc);
    448  1.1    jruoho             break;
    449  1.1    jruoho 
    450  1.1    jruoho         default:
    451  1.1    jruoho 
    452  1.1    jruoho             AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n",
    453  1.1    jruoho                 Info->Opcode);
    454  1.1    jruoho             return;
    455  1.1    jruoho         }
    456  1.1    jruoho 
    457  1.1    jruoho         Info++;
    458  1.1    jruoho         Count--;
    459  1.1    jruoho     }
    460  1.1    jruoho }
    461  1.1    jruoho 
    462  1.1    jruoho 
    463  1.1    jruoho /*******************************************************************************
    464  1.1    jruoho  *
    465  1.1    jruoho  * FUNCTION:    AcpiExDumpOperand
    466  1.1    jruoho  *
    467  1.1    jruoho  * PARAMETERS:  *ObjDesc        - Pointer to entry to be dumped
    468  1.1    jruoho  *              Depth           - Current nesting depth
    469  1.1    jruoho  *
    470  1.1    jruoho  * RETURN:      None
    471  1.1    jruoho  *
    472  1.1    jruoho  * DESCRIPTION: Dump an operand object
    473  1.1    jruoho  *
    474  1.1    jruoho  ******************************************************************************/
    475  1.1    jruoho 
    476  1.1    jruoho void
    477  1.1    jruoho AcpiExDumpOperand (
    478  1.1    jruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
    479  1.1    jruoho     UINT32                  Depth)
    480  1.1    jruoho {
    481  1.1    jruoho     UINT32                  Length;
    482  1.1    jruoho     UINT32                  Index;
    483  1.1    jruoho 
    484  1.1    jruoho 
    485  1.1    jruoho     ACPI_FUNCTION_NAME (ExDumpOperand)
    486  1.1    jruoho 
    487  1.1    jruoho 
    488  1.4  christos     /* Check if debug output enabled */
    489  1.4  christos 
    490  1.4  christos     if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_EXEC, _COMPONENT))
    491  1.1    jruoho     {
    492  1.1    jruoho         return;
    493  1.1    jruoho     }
    494  1.1    jruoho 
    495  1.1    jruoho     if (!ObjDesc)
    496  1.1    jruoho     {
    497  1.1    jruoho         /* This could be a null element of a package */
    498  1.1    jruoho 
    499  1.1    jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Null Object Descriptor\n"));
    500  1.1    jruoho         return;
    501  1.1    jruoho     }
    502  1.1    jruoho 
    503  1.1    jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
    504  1.1    jruoho     {
    505  1.1    jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p Namespace Node: ", ObjDesc));
    506  1.1    jruoho         ACPI_DUMP_ENTRY (ObjDesc, ACPI_LV_EXEC);
    507  1.1    jruoho         return;
    508  1.1    jruoho     }
    509  1.1    jruoho 
    510  1.1    jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
    511  1.1    jruoho     {
    512  1.1    jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
    513  1.1    jruoho             "%p is not a node or operand object: [%s]\n",
    514  1.1    jruoho             ObjDesc, AcpiUtGetDescriptorName (ObjDesc)));
    515  1.1    jruoho         ACPI_DUMP_BUFFER (ObjDesc, sizeof (ACPI_OPERAND_OBJECT));
    516  1.1    jruoho         return;
    517  1.1    jruoho     }
    518  1.1    jruoho 
    519  1.1    jruoho     /* ObjDesc is a valid object */
    520  1.1    jruoho 
    521  1.1    jruoho     if (Depth > 0)
    522  1.1    jruoho     {
    523  1.1    jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%*s[%u] %p ",
    524  1.1    jruoho             Depth, " ", Depth, ObjDesc));
    525  1.1    jruoho     }
    526  1.1    jruoho     else
    527  1.1    jruoho     {
    528  1.1    jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p ", ObjDesc));
    529  1.1    jruoho     }
    530  1.1    jruoho 
    531  1.1    jruoho     /* Decode object type */
    532  1.1    jruoho 
    533  1.1    jruoho     switch (ObjDesc->Common.Type)
    534  1.1    jruoho     {
    535  1.1    jruoho     case ACPI_TYPE_LOCAL_REFERENCE:
    536  1.1    jruoho 
    537  1.1    jruoho         AcpiOsPrintf ("Reference: [%s] ", AcpiUtGetReferenceName (ObjDesc));
    538  1.1    jruoho 
    539  1.1    jruoho         switch (ObjDesc->Reference.Class)
    540  1.1    jruoho         {
    541  1.1    jruoho         case ACPI_REFCLASS_DEBUG:
    542  1.1    jruoho 
    543  1.1    jruoho             AcpiOsPrintf ("\n");
    544  1.1    jruoho             break;
    545  1.1    jruoho 
    546  1.1    jruoho         case ACPI_REFCLASS_INDEX:
    547  1.1    jruoho 
    548  1.1    jruoho             AcpiOsPrintf ("%p\n", ObjDesc->Reference.Object);
    549  1.1    jruoho             break;
    550  1.1    jruoho 
    551  1.1    jruoho         case ACPI_REFCLASS_TABLE:
    552  1.1    jruoho 
    553  1.1    jruoho             AcpiOsPrintf ("Table Index %X\n", ObjDesc->Reference.Value);
    554  1.1    jruoho             break;
    555  1.1    jruoho 
    556  1.1    jruoho         case ACPI_REFCLASS_REFOF:
    557  1.1    jruoho 
    558  1.1    jruoho             AcpiOsPrintf ("%p [%s]\n", ObjDesc->Reference.Object,
    559  1.1    jruoho                 AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
    560  1.1    jruoho                     ObjDesc->Reference.Object)->Common.Type));
    561  1.1    jruoho             break;
    562  1.1    jruoho 
    563  1.1    jruoho         case ACPI_REFCLASS_NAME:
    564  1.1    jruoho 
    565  1.1    jruoho             AcpiOsPrintf ("- [%4.4s]\n", ObjDesc->Reference.Node->Name.Ascii);
    566  1.1    jruoho             break;
    567  1.1    jruoho 
    568  1.1    jruoho         case ACPI_REFCLASS_ARG:
    569  1.1    jruoho         case ACPI_REFCLASS_LOCAL:
    570  1.1    jruoho 
    571  1.1    jruoho             AcpiOsPrintf ("%X\n", ObjDesc->Reference.Value);
    572  1.1    jruoho             break;
    573  1.1    jruoho 
    574  1.1    jruoho         default:    /* Unknown reference class */
    575  1.1    jruoho 
    576  1.1    jruoho             AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class);
    577  1.1    jruoho             break;
    578  1.1    jruoho         }
    579  1.1    jruoho         break;
    580  1.1    jruoho 
    581  1.1    jruoho     case ACPI_TYPE_BUFFER:
    582  1.1    jruoho 
    583  1.1    jruoho         AcpiOsPrintf ("Buffer length %.2X @ %p\n",
    584  1.1    jruoho             ObjDesc->Buffer.Length, ObjDesc->Buffer.Pointer);
    585  1.1    jruoho 
    586  1.1    jruoho         /* Debug only -- dump the buffer contents */
    587  1.1    jruoho 
    588  1.1    jruoho         if (ObjDesc->Buffer.Pointer)
    589  1.1    jruoho         {
    590  1.1    jruoho             Length = ObjDesc->Buffer.Length;
    591  1.1    jruoho             if (Length > 128)
    592  1.1    jruoho             {
    593  1.1    jruoho                 Length = 128;
    594  1.1    jruoho             }
    595  1.1    jruoho 
    596  1.1    jruoho             AcpiOsPrintf ("Buffer Contents: (displaying length 0x%.2X)\n",
    597  1.1    jruoho                 Length);
    598  1.1    jruoho             ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, Length);
    599  1.1    jruoho         }
    600  1.1    jruoho         break;
    601  1.1    jruoho 
    602  1.1    jruoho     case ACPI_TYPE_INTEGER:
    603  1.1    jruoho 
    604  1.1    jruoho         AcpiOsPrintf ("Integer %8.8X%8.8X\n",
    605  1.1    jruoho             ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
    606  1.1    jruoho         break;
    607  1.1    jruoho 
    608  1.1    jruoho     case ACPI_TYPE_PACKAGE:
    609  1.1    jruoho 
    610  1.1    jruoho         AcpiOsPrintf ("Package [Len %X] ElementArray %p\n",
    611  1.1    jruoho             ObjDesc->Package.Count, ObjDesc->Package.Elements);
    612  1.1    jruoho 
    613  1.1    jruoho         /*
    614  1.1    jruoho          * If elements exist, package element pointer is valid,
    615  1.1    jruoho          * and debug_level exceeds 1, dump package's elements.
    616  1.1    jruoho          */
    617  1.1    jruoho         if (ObjDesc->Package.Count &&
    618  1.1    jruoho             ObjDesc->Package.Elements &&
    619  1.1    jruoho             AcpiDbgLevel > 1)
    620  1.1    jruoho         {
    621  1.1    jruoho             for (Index = 0; Index < ObjDesc->Package.Count; Index++)
    622  1.1    jruoho             {
    623  1.1    jruoho                 AcpiExDumpOperand (ObjDesc->Package.Elements[Index], Depth+1);
    624  1.1    jruoho             }
    625  1.1    jruoho         }
    626  1.1    jruoho         break;
    627  1.1    jruoho 
    628  1.1    jruoho     case ACPI_TYPE_REGION:
    629  1.1    jruoho 
    630  1.1    jruoho         AcpiOsPrintf ("Region %s (%X)",
    631  1.1    jruoho             AcpiUtGetRegionName (ObjDesc->Region.SpaceId),
    632  1.1    jruoho             ObjDesc->Region.SpaceId);
    633  1.1    jruoho 
    634  1.1    jruoho         /*
    635  1.1    jruoho          * If the address and length have not been evaluated,
    636  1.1    jruoho          * don't print them.
    637  1.1    jruoho          */
    638  1.1    jruoho         if (!(ObjDesc->Region.Flags & AOPOBJ_DATA_VALID))
    639  1.1    jruoho         {
    640  1.1    jruoho             AcpiOsPrintf ("\n");
    641  1.1    jruoho         }
    642  1.1    jruoho         else
    643  1.1    jruoho         {
    644  1.1    jruoho             AcpiOsPrintf (" base %8.8X%8.8X Length %X\n",
    645  1.1    jruoho                 ACPI_FORMAT_NATIVE_UINT (ObjDesc->Region.Address),
    646  1.1    jruoho                 ObjDesc->Region.Length);
    647  1.1    jruoho         }
    648  1.1    jruoho         break;
    649  1.1    jruoho 
    650  1.1    jruoho     case ACPI_TYPE_STRING:
    651  1.1    jruoho 
    652  1.1    jruoho         AcpiOsPrintf ("String length %X @ %p ",
    653  1.1    jruoho             ObjDesc->String.Length,
    654  1.1    jruoho             ObjDesc->String.Pointer);
    655  1.1    jruoho 
    656  1.1    jruoho         AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
    657  1.1    jruoho         AcpiOsPrintf ("\n");
    658  1.1    jruoho         break;
    659  1.1    jruoho 
    660  1.1    jruoho     case ACPI_TYPE_LOCAL_BANK_FIELD:
    661  1.1    jruoho 
    662  1.1    jruoho         AcpiOsPrintf ("BankField\n");
    663  1.1    jruoho         break;
    664  1.1    jruoho 
    665  1.1    jruoho     case ACPI_TYPE_LOCAL_REGION_FIELD:
    666  1.1    jruoho 
    667  1.1    jruoho         AcpiOsPrintf ("RegionField: Bits=%X AccWidth=%X Lock=%X Update=%X at "
    668  1.1    jruoho             "byte=%X bit=%X of below:\n",
    669  1.1    jruoho             ObjDesc->Field.BitLength,
    670  1.1    jruoho             ObjDesc->Field.AccessByteWidth,
    671  1.1    jruoho             ObjDesc->Field.FieldFlags & AML_FIELD_LOCK_RULE_MASK,
    672  1.1    jruoho             ObjDesc->Field.FieldFlags & AML_FIELD_UPDATE_RULE_MASK,
    673  1.1    jruoho             ObjDesc->Field.BaseByteOffset,
    674  1.1    jruoho             ObjDesc->Field.StartFieldBitOffset);
    675  1.1    jruoho 
    676  1.1    jruoho         AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth+1);
    677  1.1    jruoho         break;
    678  1.1    jruoho 
    679  1.1    jruoho     case ACPI_TYPE_LOCAL_INDEX_FIELD:
    680  1.1    jruoho 
    681  1.1    jruoho         AcpiOsPrintf ("IndexField\n");
    682  1.1    jruoho         break;
    683  1.1    jruoho 
    684  1.1    jruoho     case ACPI_TYPE_BUFFER_FIELD:
    685  1.1    jruoho 
    686  1.1    jruoho         AcpiOsPrintf ("BufferField: %X bits at byte %X bit %X of\n",
    687  1.1    jruoho             ObjDesc->BufferField.BitLength,
    688  1.1    jruoho             ObjDesc->BufferField.BaseByteOffset,
    689  1.1    jruoho             ObjDesc->BufferField.StartFieldBitOffset);
    690  1.1    jruoho 
    691  1.1    jruoho         if (!ObjDesc->BufferField.BufferObj)
    692  1.1    jruoho         {
    693  1.1    jruoho             ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*NULL*\n"));
    694  1.1    jruoho         }
    695  1.1    jruoho         else if ((ObjDesc->BufferField.BufferObj)->Common.Type !=
    696  1.1    jruoho                     ACPI_TYPE_BUFFER)
    697  1.1    jruoho         {
    698  1.1    jruoho             AcpiOsPrintf ("*not a Buffer*\n");
    699  1.1    jruoho         }
    700  1.1    jruoho         else
    701  1.1    jruoho         {
    702  1.1    jruoho             AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth+1);
    703  1.1    jruoho         }
    704  1.1    jruoho         break;
    705  1.1    jruoho 
    706  1.1    jruoho     case ACPI_TYPE_EVENT:
    707  1.1    jruoho 
    708  1.1    jruoho         AcpiOsPrintf ("Event\n");
    709  1.1    jruoho         break;
    710  1.1    jruoho 
    711  1.1    jruoho     case ACPI_TYPE_METHOD:
    712  1.1    jruoho 
    713  1.1    jruoho         AcpiOsPrintf ("Method(%X) @ %p:%X\n",
    714  1.1    jruoho             ObjDesc->Method.ParamCount,
    715  1.1    jruoho             ObjDesc->Method.AmlStart,
    716  1.1    jruoho             ObjDesc->Method.AmlLength);
    717  1.1    jruoho         break;
    718  1.1    jruoho 
    719  1.1    jruoho     case ACPI_TYPE_MUTEX:
    720  1.1    jruoho 
    721  1.1    jruoho         AcpiOsPrintf ("Mutex\n");
    722  1.1    jruoho         break;
    723  1.1    jruoho 
    724  1.1    jruoho     case ACPI_TYPE_DEVICE:
    725  1.1    jruoho 
    726  1.1    jruoho         AcpiOsPrintf ("Device\n");
    727  1.1    jruoho         break;
    728  1.1    jruoho 
    729  1.1    jruoho     case ACPI_TYPE_POWER:
    730  1.1    jruoho 
    731  1.1    jruoho         AcpiOsPrintf ("Power\n");
    732  1.1    jruoho         break;
    733  1.1    jruoho 
    734  1.1    jruoho     case ACPI_TYPE_PROCESSOR:
    735  1.1    jruoho 
    736  1.1    jruoho         AcpiOsPrintf ("Processor\n");
    737  1.1    jruoho         break;
    738  1.1    jruoho 
    739  1.1    jruoho     case ACPI_TYPE_THERMAL:
    740  1.1    jruoho 
    741  1.1    jruoho         AcpiOsPrintf ("Thermal\n");
    742  1.1    jruoho         break;
    743  1.1    jruoho 
    744  1.4  christos     default:
    745  1.1    jruoho 
    746  1.1    jruoho         /* Unknown Type */
    747  1.1    jruoho 
    748  1.1    jruoho         AcpiOsPrintf ("Unknown Type %X\n", ObjDesc->Common.Type);
    749  1.1    jruoho         break;
    750  1.1    jruoho     }
    751  1.1    jruoho 
    752  1.1    jruoho     return;
    753  1.1    jruoho }
    754  1.1    jruoho 
    755  1.1    jruoho 
    756  1.1    jruoho /*******************************************************************************
    757  1.1    jruoho  *
    758  1.1    jruoho  * FUNCTION:    AcpiExDumpOperands
    759  1.1    jruoho  *
    760  1.1    jruoho  * PARAMETERS:  Operands            - A list of Operand objects
    761  1.1    jruoho  *              OpcodeName          - AML opcode name
    762  1.1    jruoho  *              NumOperands         - Operand count for this opcode
    763  1.1    jruoho  *
    764  1.1    jruoho  * DESCRIPTION: Dump the operands associated with the opcode
    765  1.1    jruoho  *
    766  1.1    jruoho  ******************************************************************************/
    767  1.1    jruoho 
    768  1.1    jruoho void
    769  1.1    jruoho AcpiExDumpOperands (
    770  1.1    jruoho     ACPI_OPERAND_OBJECT     **Operands,
    771  1.1    jruoho     const char              *OpcodeName,
    772  1.1    jruoho     UINT32                  NumOperands)
    773  1.1    jruoho {
    774  1.1    jruoho     ACPI_FUNCTION_NAME (ExDumpOperands);
    775  1.1    jruoho 
    776  1.1    jruoho 
    777  1.1    jruoho     if (!OpcodeName)
    778  1.1    jruoho     {
    779  1.1    jruoho         OpcodeName = "UNKNOWN";
    780  1.1    jruoho     }
    781  1.1    jruoho 
    782  1.1    jruoho     ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
    783  1.1    jruoho         "**** Start operand dump for opcode [%s], %u operands\n",
    784  1.1    jruoho         OpcodeName, NumOperands));
    785  1.1    jruoho 
    786  1.1    jruoho     if (NumOperands == 0)
    787  1.1    jruoho     {
    788  1.1    jruoho         NumOperands = 1;
    789  1.1    jruoho     }
    790  1.1    jruoho 
    791  1.1    jruoho     /* Dump the individual operands */
    792  1.1    jruoho 
    793  1.1    jruoho     while (NumOperands)
    794  1.1    jruoho     {
    795  1.1    jruoho         AcpiExDumpOperand (*Operands, 0);
    796  1.1    jruoho         Operands++;
    797  1.1    jruoho         NumOperands--;
    798  1.1    jruoho     }
    799  1.1    jruoho 
    800  1.1    jruoho     ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
    801  1.1    jruoho         "**** End operand dump for [%s]\n", OpcodeName));
    802  1.1    jruoho     return;
    803  1.1    jruoho }
    804  1.1    jruoho 
    805  1.1    jruoho 
    806  1.1    jruoho /*******************************************************************************
    807  1.1    jruoho  *
    808  1.1    jruoho  * FUNCTION:    AcpiExOut* functions
    809  1.1    jruoho  *
    810  1.1    jruoho  * PARAMETERS:  Title               - Descriptive text
    811  1.1    jruoho  *              Value               - Value to be displayed
    812  1.1    jruoho  *
    813  1.4  christos  * DESCRIPTION: Object dump output formatting functions. These functions
    814  1.1    jruoho  *              reduce the number of format strings required and keeps them
    815  1.1    jruoho  *              all in one place for easy modification.
    816  1.1    jruoho  *
    817  1.1    jruoho  ******************************************************************************/
    818  1.1    jruoho 
    819  1.1    jruoho static void
    820  1.1    jruoho AcpiExOutString (
    821  1.2    jruoho     const char              *Title,
    822  1.2    jruoho     const char              *Value)
    823  1.1    jruoho {
    824  1.1    jruoho     AcpiOsPrintf ("%20s : %s\n", Title, Value);
    825  1.1    jruoho }
    826  1.1    jruoho 
    827  1.1    jruoho static void
    828  1.1    jruoho AcpiExOutPointer (
    829  1.2    jruoho     const char              *Title,
    830  1.1    jruoho     void                    *Value)
    831  1.1    jruoho {
    832  1.1    jruoho     AcpiOsPrintf ("%20s : %p\n", Title, Value);
    833  1.1    jruoho }
    834  1.1    jruoho 
    835  1.1    jruoho 
    836  1.1    jruoho /*******************************************************************************
    837  1.1    jruoho  *
    838  1.1    jruoho  * FUNCTION:    AcpiExDumpNamespaceNode
    839  1.1    jruoho  *
    840  1.1    jruoho  * PARAMETERS:  Node                - Descriptor to dump
    841  1.1    jruoho  *              Flags               - Force display if TRUE
    842  1.1    jruoho  *
    843  1.1    jruoho  * DESCRIPTION: Dumps the members of the given.Node
    844  1.1    jruoho  *
    845  1.1    jruoho  ******************************************************************************/
    846  1.1    jruoho 
    847  1.1    jruoho void
    848  1.1    jruoho AcpiExDumpNamespaceNode (
    849  1.1    jruoho     ACPI_NAMESPACE_NODE     *Node,
    850  1.1    jruoho     UINT32                  Flags)
    851  1.1    jruoho {
    852  1.1    jruoho 
    853  1.1    jruoho     ACPI_FUNCTION_ENTRY ();
    854  1.1    jruoho 
    855  1.1    jruoho 
    856  1.1    jruoho     if (!Flags)
    857  1.1    jruoho     {
    858  1.4  christos         /* Check if debug output enabled */
    859  1.4  christos 
    860  1.4  christos         if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_OBJECTS, _COMPONENT))
    861  1.1    jruoho         {
    862  1.1    jruoho             return;
    863  1.1    jruoho         }
    864  1.1    jruoho     }
    865  1.1    jruoho 
    866  1.1    jruoho     AcpiOsPrintf ("%20s : %4.4s\n", "Name", AcpiUtGetNodeName (Node));
    867  1.1    jruoho     AcpiExOutString  ("Type", AcpiUtGetTypeName (Node->Type));
    868  1.1    jruoho     AcpiExOutPointer ("Attached Object", AcpiNsGetAttachedObject (Node));
    869  1.1    jruoho     AcpiExOutPointer ("Parent", Node->Parent);
    870  1.1    jruoho 
    871  1.1    jruoho     AcpiExDumpObject (ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node),
    872  1.1    jruoho         AcpiExDumpNode);
    873  1.1    jruoho }
    874  1.1    jruoho 
    875  1.1    jruoho 
    876  1.1    jruoho /*******************************************************************************
    877  1.1    jruoho  *
    878  1.1    jruoho  * FUNCTION:    AcpiExDumpReferenceObj
    879  1.1    jruoho  *
    880  1.1    jruoho  * PARAMETERS:  Object              - Descriptor to dump
    881  1.1    jruoho  *
    882  1.1    jruoho  * DESCRIPTION: Dumps a reference object
    883  1.1    jruoho  *
    884  1.1    jruoho  ******************************************************************************/
    885  1.1    jruoho 
    886  1.1    jruoho static void
    887  1.1    jruoho AcpiExDumpReferenceObj (
    888  1.1    jruoho     ACPI_OPERAND_OBJECT     *ObjDesc)
    889  1.1    jruoho {
    890  1.1    jruoho     ACPI_BUFFER             RetBuf;
    891  1.1    jruoho     ACPI_STATUS             Status;
    892  1.1    jruoho 
    893  1.1    jruoho 
    894  1.1    jruoho     RetBuf.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
    895  1.1    jruoho 
    896  1.1    jruoho     if (ObjDesc->Reference.Class == ACPI_REFCLASS_NAME)
    897  1.1    jruoho     {
    898  1.1    jruoho         AcpiOsPrintf (" %p ", ObjDesc->Reference.Node);
    899  1.1    jruoho 
    900  1.1    jruoho         Status = AcpiNsHandleToPathname (ObjDesc->Reference.Node, &RetBuf);
    901  1.1    jruoho         if (ACPI_FAILURE (Status))
    902  1.1    jruoho         {
    903  1.1    jruoho             AcpiOsPrintf (" Could not convert name to pathname\n");
    904  1.1    jruoho         }
    905  1.1    jruoho         else
    906  1.1    jruoho         {
    907  1.1    jruoho            AcpiOsPrintf ("%s\n", (char *) RetBuf.Pointer);
    908  1.1    jruoho            ACPI_FREE (RetBuf.Pointer);
    909  1.1    jruoho         }
    910  1.1    jruoho     }
    911  1.1    jruoho     else if (ObjDesc->Reference.Object)
    912  1.1    jruoho     {
    913  1.1    jruoho         if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND)
    914  1.1    jruoho         {
    915  1.1    jruoho             AcpiOsPrintf (" Target: %p", ObjDesc->Reference.Object);
    916  1.1    jruoho             if (ObjDesc->Reference.Class == ACPI_REFCLASS_TABLE)
    917  1.1    jruoho             {
    918  1.1    jruoho                 AcpiOsPrintf (" Table Index: %X\n", ObjDesc->Reference.Value);
    919  1.1    jruoho             }
    920  1.1    jruoho             else
    921  1.1    jruoho             {
    922  1.1    jruoho                 AcpiOsPrintf (" Target: %p [%s]\n", ObjDesc->Reference.Object,
    923  1.1    jruoho                     AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
    924  1.1    jruoho                         ObjDesc->Reference.Object)->Common.Type));
    925  1.1    jruoho             }
    926  1.1    jruoho         }
    927  1.1    jruoho         else
    928  1.1    jruoho         {
    929  1.1    jruoho             AcpiOsPrintf (" Target: %p\n", ObjDesc->Reference.Object);
    930  1.1    jruoho         }
    931  1.1    jruoho     }
    932  1.1    jruoho }
    933  1.1    jruoho 
    934  1.1    jruoho 
    935  1.1    jruoho /*******************************************************************************
    936  1.1    jruoho  *
    937  1.1    jruoho  * FUNCTION:    AcpiExDumpPackageObj
    938  1.1    jruoho  *
    939  1.1    jruoho  * PARAMETERS:  ObjDesc             - Descriptor to dump
    940  1.1    jruoho  *              Level               - Indentation Level
    941  1.1    jruoho  *              Index               - Package index for this object
    942  1.1    jruoho  *
    943  1.1    jruoho  * DESCRIPTION: Dumps the elements of the package
    944  1.1    jruoho  *
    945  1.1    jruoho  ******************************************************************************/
    946  1.1    jruoho 
    947  1.1    jruoho static void
    948  1.1    jruoho AcpiExDumpPackageObj (
    949  1.1    jruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
    950  1.1    jruoho     UINT32                  Level,
    951  1.1    jruoho     UINT32                  Index)
    952  1.1    jruoho {
    953  1.1    jruoho     UINT32                  i;
    954  1.1    jruoho 
    955  1.1    jruoho 
    956  1.1    jruoho     /* Indentation and index output */
    957  1.1    jruoho 
    958  1.1    jruoho     if (Level > 0)
    959  1.1    jruoho     {
    960  1.1    jruoho         for (i = 0; i < Level; i++)
    961  1.1    jruoho         {
    962  1.1    jruoho             AcpiOsPrintf ("  ");
    963  1.1    jruoho         }
    964  1.1    jruoho 
    965  1.1    jruoho         AcpiOsPrintf ("[%.2d] ", Index);
    966  1.1    jruoho     }
    967  1.1    jruoho 
    968  1.1    jruoho     AcpiOsPrintf ("%p ", ObjDesc);
    969  1.1    jruoho 
    970  1.1    jruoho     /* Null package elements are allowed */
    971  1.1    jruoho 
    972  1.1    jruoho     if (!ObjDesc)
    973  1.1    jruoho     {
    974  1.1    jruoho         AcpiOsPrintf ("[Null Object]\n");
    975  1.1    jruoho         return;
    976  1.1    jruoho     }
    977  1.1    jruoho 
    978  1.1    jruoho     /* Packages may only contain a few object types */
    979  1.1    jruoho 
    980  1.1    jruoho     switch (ObjDesc->Common.Type)
    981  1.1    jruoho     {
    982  1.1    jruoho     case ACPI_TYPE_INTEGER:
    983  1.1    jruoho 
    984  1.1    jruoho         AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n",
    985  1.1    jruoho             ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
    986  1.1    jruoho         break;
    987  1.1    jruoho 
    988  1.1    jruoho     case ACPI_TYPE_STRING:
    989  1.1    jruoho 
    990  1.1    jruoho         AcpiOsPrintf ("[String]  Value: ");
    991  1.4  christos         AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
    992  1.1    jruoho         AcpiOsPrintf ("\n");
    993  1.1    jruoho         break;
    994  1.1    jruoho 
    995  1.1    jruoho     case ACPI_TYPE_BUFFER:
    996  1.1    jruoho 
    997  1.1    jruoho         AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length);
    998  1.1    jruoho         if (ObjDesc->Buffer.Length)
    999  1.1    jruoho         {
   1000  1.4  christos             AcpiUtDebugDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer),
   1001  1.1    jruoho                 ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT);
   1002  1.1    jruoho         }
   1003  1.1    jruoho         else
   1004  1.1    jruoho         {
   1005  1.1    jruoho             AcpiOsPrintf ("\n");
   1006  1.1    jruoho         }
   1007  1.1    jruoho         break;
   1008  1.1    jruoho 
   1009  1.1    jruoho     case ACPI_TYPE_PACKAGE:
   1010  1.1    jruoho 
   1011  1.1    jruoho         AcpiOsPrintf ("[Package] Contains %u Elements:\n",
   1012  1.1    jruoho             ObjDesc->Package.Count);
   1013  1.1    jruoho 
   1014  1.1    jruoho         for (i = 0; i < ObjDesc->Package.Count; i++)
   1015  1.1    jruoho         {
   1016  1.1    jruoho             AcpiExDumpPackageObj (ObjDesc->Package.Elements[i], Level+1, i);
   1017  1.1    jruoho         }
   1018  1.1    jruoho         break;
   1019  1.1    jruoho 
   1020  1.1    jruoho     case ACPI_TYPE_LOCAL_REFERENCE:
   1021  1.1    jruoho 
   1022  1.1    jruoho         AcpiOsPrintf ("[Object Reference] Type [%s] %2.2X",
   1023  1.1    jruoho             AcpiUtGetReferenceName (ObjDesc),
   1024  1.1    jruoho             ObjDesc->Reference.Class);
   1025  1.1    jruoho         AcpiExDumpReferenceObj (ObjDesc);
   1026  1.1    jruoho         break;
   1027  1.1    jruoho 
   1028  1.1    jruoho     default:
   1029  1.1    jruoho 
   1030  1.1    jruoho         AcpiOsPrintf ("[Unknown Type] %X\n", ObjDesc->Common.Type);
   1031  1.1    jruoho         break;
   1032  1.1    jruoho     }
   1033  1.1    jruoho }
   1034  1.1    jruoho 
   1035  1.1    jruoho 
   1036  1.1    jruoho /*******************************************************************************
   1037  1.1    jruoho  *
   1038  1.1    jruoho  * FUNCTION:    AcpiExDumpObjectDescriptor
   1039  1.1    jruoho  *
   1040  1.1    jruoho  * PARAMETERS:  ObjDesc             - Descriptor to dump
   1041  1.1    jruoho  *              Flags               - Force display if TRUE
   1042  1.1    jruoho  *
   1043  1.1    jruoho  * DESCRIPTION: Dumps the members of the object descriptor given.
   1044  1.1    jruoho  *
   1045  1.1    jruoho  ******************************************************************************/
   1046  1.1    jruoho 
   1047  1.1    jruoho void
   1048  1.1    jruoho AcpiExDumpObjectDescriptor (
   1049  1.1    jruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
   1050  1.1    jruoho     UINT32                  Flags)
   1051  1.1    jruoho {
   1052  1.1    jruoho     ACPI_FUNCTION_TRACE (ExDumpObjectDescriptor);
   1053  1.1    jruoho 
   1054  1.1    jruoho 
   1055  1.1    jruoho     if (!ObjDesc)
   1056  1.1    jruoho     {
   1057  1.1    jruoho         return_VOID;
   1058  1.1    jruoho     }
   1059  1.1    jruoho 
   1060  1.1    jruoho     if (!Flags)
   1061  1.1    jruoho     {
   1062  1.4  christos         /* Check if debug output enabled */
   1063  1.4  christos 
   1064  1.4  christos         if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_OBJECTS, _COMPONENT))
   1065  1.1    jruoho         {
   1066  1.1    jruoho             return_VOID;
   1067  1.1    jruoho         }
   1068  1.1    jruoho     }
   1069  1.1    jruoho 
   1070  1.1    jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
   1071  1.1    jruoho     {
   1072  1.1    jruoho         AcpiExDumpNamespaceNode ((ACPI_NAMESPACE_NODE *) ObjDesc, Flags);
   1073  1.1    jruoho 
   1074  1.1    jruoho         AcpiOsPrintf ("\nAttached Object (%p):\n",
   1075  1.1    jruoho             ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object);
   1076  1.1    jruoho 
   1077  1.1    jruoho         AcpiExDumpObjectDescriptor (
   1078  1.1    jruoho             ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object, Flags);
   1079  1.1    jruoho         return_VOID;
   1080  1.1    jruoho     }
   1081  1.1    jruoho 
   1082  1.1    jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
   1083  1.1    jruoho     {
   1084  1.1    jruoho         AcpiOsPrintf (
   1085  1.1    jruoho             "ExDumpObjectDescriptor: %p is not an ACPI operand object: [%s]\n",
   1086  1.1    jruoho             ObjDesc, AcpiUtGetDescriptorName (ObjDesc));
   1087  1.1    jruoho         return_VOID;
   1088  1.1    jruoho     }
   1089  1.1    jruoho 
   1090  1.1    jruoho     if (ObjDesc->Common.Type > ACPI_TYPE_NS_NODE_MAX)
   1091  1.1    jruoho     {
   1092  1.1    jruoho         return_VOID;
   1093  1.1    jruoho     }
   1094  1.1    jruoho 
   1095  1.1    jruoho     /* Common Fields */
   1096  1.1    jruoho 
   1097  1.1    jruoho     AcpiExDumpObject (ObjDesc, AcpiExDumpCommon);
   1098  1.1    jruoho 
   1099  1.1    jruoho     /* Object-specific fields */
   1100  1.1    jruoho 
   1101  1.1    jruoho     AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]);
   1102  1.1    jruoho     return_VOID;
   1103  1.1    jruoho }
   1104  1.1    jruoho 
   1105  1.1    jruoho #endif
   1106