Home | History | Annotate | Line # | Download | only in executer
exdump.c revision 1.1.1.2
      1      1.1  jruoho /******************************************************************************
      2      1.1  jruoho  *
      3      1.1  jruoho  * Module Name: exdump - Interpreter debug output routines
      4      1.1  jruoho  *
      5      1.1  jruoho  *****************************************************************************/
      6      1.1  jruoho 
      7  1.1.1.2  jruoho /*
      8  1.1.1.2  jruoho  * Copyright (C) 2000 - 2011, Intel Corp.
      9      1.1  jruoho  * All rights reserved.
     10      1.1  jruoho  *
     11  1.1.1.2  jruoho  * Redistribution and use in source and binary forms, with or without
     12  1.1.1.2  jruoho  * modification, are permitted provided that the following conditions
     13  1.1.1.2  jruoho  * are met:
     14  1.1.1.2  jruoho  * 1. Redistributions of source code must retain the above copyright
     15  1.1.1.2  jruoho  *    notice, this list of conditions, and the following disclaimer,
     16  1.1.1.2  jruoho  *    without modification.
     17  1.1.1.2  jruoho  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     18  1.1.1.2  jruoho  *    substantially similar to the "NO WARRANTY" disclaimer below
     19  1.1.1.2  jruoho  *    ("Disclaimer") and any redistribution must be conditioned upon
     20  1.1.1.2  jruoho  *    including a substantially similar Disclaimer requirement for further
     21  1.1.1.2  jruoho  *    binary redistribution.
     22  1.1.1.2  jruoho  * 3. Neither the names of the above-listed copyright holders nor the names
     23  1.1.1.2  jruoho  *    of any contributors may be used to endorse or promote products derived
     24  1.1.1.2  jruoho  *    from this software without specific prior written permission.
     25  1.1.1.2  jruoho  *
     26  1.1.1.2  jruoho  * Alternatively, this software may be distributed under the terms of the
     27  1.1.1.2  jruoho  * GNU General Public License ("GPL") version 2 as published by the Free
     28  1.1.1.2  jruoho  * Software Foundation.
     29  1.1.1.2  jruoho  *
     30  1.1.1.2  jruoho  * NO WARRANTY
     31  1.1.1.2  jruoho  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32  1.1.1.2  jruoho  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33  1.1.1.2  jruoho  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     34  1.1.1.2  jruoho  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35  1.1.1.2  jruoho  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     36  1.1.1.2  jruoho  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     37  1.1.1.2  jruoho  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     38  1.1.1.2  jruoho  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     39  1.1.1.2  jruoho  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     40  1.1.1.2  jruoho  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     41  1.1.1.2  jruoho  * POSSIBILITY OF SUCH DAMAGES.
     42  1.1.1.2  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.1  jruoho     char                    *Title,
     66      1.1  jruoho     char                    *Value);
     67      1.1  jruoho 
     68      1.1  jruoho static void
     69      1.1  jruoho AcpiExOutPointer (
     70      1.1  jruoho     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.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Device.SystemNotify),          "System Notify"},
    135      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Device.DeviceNotify),          "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.1.1.2  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.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (PowerResource.SystemNotify),   "System Notify"},
    183      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (PowerResource.DeviceNotify),   "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.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Processor.SystemNotify),       "System Notify"},
    193      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Processor.DeviceNotify),       "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.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (ThermalZone.SystemNotify),     "System Notify"},
    201      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (ThermalZone.DeviceNotify),     "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.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpRegionField[3] =
    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.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Field.RegionObj),              "Region Object"}
    217      1.1  jruoho };
    218      1.1  jruoho 
    219      1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpBankField[5] =
    220      1.1  jruoho {
    221      1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField),      NULL},
    222      1.1  jruoho     {ACPI_EXD_FIELD,    0,                                              NULL},
    223      1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (BankField.Value),              "Value"},
    224      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (BankField.RegionObj),          "Region Object"},
    225      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (BankField.BankObj),            "Bank Object"}
    226      1.1  jruoho };
    227      1.1  jruoho 
    228      1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpIndexField[5] =
    229      1.1  jruoho {
    230      1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField),      NULL},
    231      1.1  jruoho     {ACPI_EXD_FIELD,    0,                                              NULL},
    232      1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (IndexField.Value),             "Value"},
    233      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (IndexField.IndexObj),          "Index Object"},
    234      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (IndexField.DataObj),           "Data Object"}
    235      1.1  jruoho };
    236      1.1  jruoho 
    237      1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpReference[8] =
    238      1.1  jruoho {
    239      1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpReference),       NULL},
    240      1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Reference.Class),              "Class"},
    241      1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Reference.TargetType),         "Target Type"},
    242      1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Reference.Value),              "Value"},
    243      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Reference.Object),             "Object Desc"},
    244      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Reference.Node),               "Node"},
    245      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Reference.Where),              "Where"},
    246      1.1  jruoho     {ACPI_EXD_REFERENCE,0,                                              NULL}
    247      1.1  jruoho };
    248      1.1  jruoho 
    249      1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpAddressHandler[6] =
    250      1.1  jruoho {
    251      1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpAddressHandler), NULL},
    252      1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (AddressSpace.SpaceId),         "Space Id"},
    253      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (AddressSpace.Next),            "Next"},
    254      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (AddressSpace.RegionList),      "Region List"},
    255      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (AddressSpace.Node),            "Node"},
    256      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (AddressSpace.Context),         "Context"}
    257      1.1  jruoho };
    258      1.1  jruoho 
    259      1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpNotify[3] =
    260      1.1  jruoho {
    261      1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpNotify),         NULL},
    262      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Notify.Node),                  "Node"},
    263      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Notify.Context),               "Context"}
    264      1.1  jruoho };
    265      1.1  jruoho 
    266      1.1  jruoho 
    267      1.1  jruoho /* Miscellaneous tables */
    268      1.1  jruoho 
    269      1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpCommon[4] =
    270      1.1  jruoho {
    271      1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpCommon),         NULL},
    272      1.1  jruoho     {ACPI_EXD_TYPE ,    0,                                              NULL},
    273      1.1  jruoho     {ACPI_EXD_UINT16,   ACPI_EXD_OFFSET (Common.ReferenceCount),        "Reference Count"},
    274      1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Common.Flags),                 "Flags"}
    275      1.1  jruoho };
    276      1.1  jruoho 
    277      1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpFieldCommon[7] =
    278      1.1  jruoho {
    279      1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpFieldCommon),    NULL},
    280      1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (CommonField.FieldFlags),       "Field Flags"},
    281      1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (CommonField.AccessByteWidth),  "Access Byte Width"},
    282      1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (CommonField.BitLength),        "Bit Length"},
    283      1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (CommonField.StartFieldBitOffset),"Field Bit Offset"},
    284      1.1  jruoho     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (CommonField.BaseByteOffset),   "Base Byte Offset"},
    285      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (CommonField.Node),             "Parent Node"}
    286      1.1  jruoho };
    287      1.1  jruoho 
    288      1.1  jruoho static ACPI_EXDUMP_INFO     AcpiExDumpNode[5] =
    289      1.1  jruoho {
    290      1.1  jruoho     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpNode),           NULL},
    291      1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_NSOFFSET (Flags),                      "Flags"},
    292      1.1  jruoho     {ACPI_EXD_UINT8,    ACPI_EXD_NSOFFSET (OwnerId),                    "Owner Id"},
    293      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_NSOFFSET (Child),                      "Child List"},
    294      1.1  jruoho     {ACPI_EXD_POINTER,  ACPI_EXD_NSOFFSET (Peer),                       "Next Peer"}
    295      1.1  jruoho };
    296      1.1  jruoho 
    297      1.1  jruoho 
    298      1.1  jruoho /* Dispatch table, indexed by object type */
    299      1.1  jruoho 
    300      1.1  jruoho static ACPI_EXDUMP_INFO     *AcpiExDumpInfo[] =
    301      1.1  jruoho {
    302      1.1  jruoho     NULL,
    303      1.1  jruoho     AcpiExDumpInteger,
    304      1.1  jruoho     AcpiExDumpString,
    305      1.1  jruoho     AcpiExDumpBuffer,
    306      1.1  jruoho     AcpiExDumpPackage,
    307      1.1  jruoho     NULL,
    308      1.1  jruoho     AcpiExDumpDevice,
    309      1.1  jruoho     AcpiExDumpEvent,
    310      1.1  jruoho     AcpiExDumpMethod,
    311      1.1  jruoho     AcpiExDumpMutex,
    312      1.1  jruoho     AcpiExDumpRegion,
    313      1.1  jruoho     AcpiExDumpPower,
    314      1.1  jruoho     AcpiExDumpProcessor,
    315      1.1  jruoho     AcpiExDumpThermal,
    316      1.1  jruoho     AcpiExDumpBufferField,
    317      1.1  jruoho     NULL,
    318      1.1  jruoho     NULL,
    319      1.1  jruoho     AcpiExDumpRegionField,
    320      1.1  jruoho     AcpiExDumpBankField,
    321      1.1  jruoho     AcpiExDumpIndexField,
    322      1.1  jruoho     AcpiExDumpReference,
    323      1.1  jruoho     NULL,
    324      1.1  jruoho     NULL,
    325      1.1  jruoho     AcpiExDumpNotify,
    326      1.1  jruoho     AcpiExDumpAddressHandler,
    327      1.1  jruoho     NULL,
    328      1.1  jruoho     NULL,
    329      1.1  jruoho     NULL
    330      1.1  jruoho };
    331      1.1  jruoho 
    332      1.1  jruoho 
    333      1.1  jruoho /*******************************************************************************
    334      1.1  jruoho  *
    335      1.1  jruoho  * FUNCTION:    AcpiExDumpObject
    336      1.1  jruoho  *
    337      1.1  jruoho  * PARAMETERS:  ObjDesc             - Descriptor to dump
    338      1.1  jruoho  *              Info                - Info table corresponding to this object
    339      1.1  jruoho  *                                    type
    340      1.1  jruoho  *
    341      1.1  jruoho  * RETURN:      None
    342      1.1  jruoho  *
    343      1.1  jruoho  * DESCRIPTION: Walk the info table for this object
    344      1.1  jruoho  *
    345      1.1  jruoho  ******************************************************************************/
    346      1.1  jruoho 
    347      1.1  jruoho static void
    348      1.1  jruoho AcpiExDumpObject (
    349      1.1  jruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
    350      1.1  jruoho     ACPI_EXDUMP_INFO        *Info)
    351      1.1  jruoho {
    352      1.1  jruoho     UINT8                   *Target;
    353      1.1  jruoho     char                    *Name;
    354      1.1  jruoho     UINT8                   Count;
    355      1.1  jruoho 
    356      1.1  jruoho 
    357      1.1  jruoho     if (!Info)
    358      1.1  jruoho     {
    359      1.1  jruoho         AcpiOsPrintf (
    360      1.1  jruoho             "ExDumpObject: Display not implemented for object type %s\n",
    361      1.1  jruoho             AcpiUtGetObjectTypeName (ObjDesc));
    362      1.1  jruoho         return;
    363      1.1  jruoho     }
    364      1.1  jruoho 
    365      1.1  jruoho     /* First table entry must contain the table length (# of table entries) */
    366      1.1  jruoho 
    367      1.1  jruoho     Count = Info->Offset;
    368      1.1  jruoho 
    369      1.1  jruoho     while (Count)
    370      1.1  jruoho     {
    371      1.1  jruoho         Target = ACPI_ADD_PTR (UINT8, ObjDesc, Info->Offset);
    372      1.1  jruoho         Name = Info->Name;
    373      1.1  jruoho 
    374      1.1  jruoho         switch (Info->Opcode)
    375      1.1  jruoho         {
    376      1.1  jruoho         case ACPI_EXD_INIT:
    377      1.1  jruoho             break;
    378      1.1  jruoho 
    379      1.1  jruoho         case ACPI_EXD_TYPE:
    380      1.1  jruoho 
    381      1.1  jruoho             AcpiExOutString  ("Type", AcpiUtGetObjectTypeName (ObjDesc));
    382      1.1  jruoho             break;
    383      1.1  jruoho 
    384      1.1  jruoho         case ACPI_EXD_UINT8:
    385      1.1  jruoho 
    386      1.1  jruoho             AcpiOsPrintf ("%20s : %2.2X\n", Name, *Target);
    387      1.1  jruoho             break;
    388      1.1  jruoho 
    389      1.1  jruoho         case ACPI_EXD_UINT16:
    390      1.1  jruoho 
    391      1.1  jruoho             AcpiOsPrintf ("%20s : %4.4X\n", Name, ACPI_GET16 (Target));
    392      1.1  jruoho             break;
    393      1.1  jruoho 
    394      1.1  jruoho         case ACPI_EXD_UINT32:
    395      1.1  jruoho 
    396      1.1  jruoho             AcpiOsPrintf ("%20s : %8.8X\n", Name, ACPI_GET32 (Target));
    397      1.1  jruoho             break;
    398      1.1  jruoho 
    399      1.1  jruoho         case ACPI_EXD_UINT64:
    400      1.1  jruoho 
    401      1.1  jruoho             AcpiOsPrintf ("%20s : %8.8X%8.8X\n", "Value",
    402      1.1  jruoho                 ACPI_FORMAT_UINT64 (ACPI_GET64 (Target)));
    403      1.1  jruoho             break;
    404      1.1  jruoho 
    405      1.1  jruoho         case ACPI_EXD_POINTER:
    406      1.1  jruoho         case ACPI_EXD_ADDRESS:
    407      1.1  jruoho 
    408      1.1  jruoho             AcpiExOutPointer (Name, *ACPI_CAST_PTR (void *, Target));
    409      1.1  jruoho             break;
    410      1.1  jruoho 
    411      1.1  jruoho         case ACPI_EXD_STRING:
    412      1.1  jruoho 
    413      1.1  jruoho             AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
    414      1.1  jruoho             AcpiOsPrintf ("\n");
    415      1.1  jruoho             break;
    416      1.1  jruoho 
    417      1.1  jruoho         case ACPI_EXD_BUFFER:
    418      1.1  jruoho 
    419      1.1  jruoho             ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length);
    420      1.1  jruoho             break;
    421      1.1  jruoho 
    422      1.1  jruoho         case ACPI_EXD_PACKAGE:
    423      1.1  jruoho 
    424      1.1  jruoho             /* Dump the package contents */
    425      1.1  jruoho 
    426      1.1  jruoho             AcpiOsPrintf ("\nPackage Contents:\n");
    427      1.1  jruoho             AcpiExDumpPackageObj (ObjDesc, 0, 0);
    428      1.1  jruoho             break;
    429      1.1  jruoho 
    430      1.1  jruoho         case ACPI_EXD_FIELD:
    431      1.1  jruoho 
    432      1.1  jruoho             AcpiExDumpObject (ObjDesc, AcpiExDumpFieldCommon);
    433      1.1  jruoho             break;
    434      1.1  jruoho 
    435      1.1  jruoho         case ACPI_EXD_REFERENCE:
    436      1.1  jruoho 
    437      1.1  jruoho             AcpiExOutString ("Class Name",
    438      1.1  jruoho                 ACPI_CAST_PTR (char, AcpiUtGetReferenceName (ObjDesc)));
    439      1.1  jruoho             AcpiExDumpReferenceObj (ObjDesc);
    440      1.1  jruoho             break;
    441      1.1  jruoho 
    442      1.1  jruoho         default:
    443      1.1  jruoho 
    444      1.1  jruoho             AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n",
    445      1.1  jruoho                 Info->Opcode);
    446      1.1  jruoho             return;
    447      1.1  jruoho         }
    448      1.1  jruoho 
    449      1.1  jruoho         Info++;
    450      1.1  jruoho         Count--;
    451      1.1  jruoho     }
    452      1.1  jruoho }
    453      1.1  jruoho 
    454      1.1  jruoho 
    455      1.1  jruoho /*******************************************************************************
    456      1.1  jruoho  *
    457      1.1  jruoho  * FUNCTION:    AcpiExDumpOperand
    458      1.1  jruoho  *
    459      1.1  jruoho  * PARAMETERS:  *ObjDesc        - Pointer to entry to be dumped
    460      1.1  jruoho  *              Depth           - Current nesting depth
    461      1.1  jruoho  *
    462      1.1  jruoho  * RETURN:      None
    463      1.1  jruoho  *
    464      1.1  jruoho  * DESCRIPTION: Dump an operand object
    465      1.1  jruoho  *
    466      1.1  jruoho  ******************************************************************************/
    467      1.1  jruoho 
    468      1.1  jruoho void
    469      1.1  jruoho AcpiExDumpOperand (
    470      1.1  jruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
    471      1.1  jruoho     UINT32                  Depth)
    472      1.1  jruoho {
    473      1.1  jruoho     UINT32                  Length;
    474      1.1  jruoho     UINT32                  Index;
    475      1.1  jruoho 
    476      1.1  jruoho 
    477      1.1  jruoho     ACPI_FUNCTION_NAME (ExDumpOperand)
    478      1.1  jruoho 
    479      1.1  jruoho 
    480      1.1  jruoho     if (!((ACPI_LV_EXEC & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer)))
    481      1.1  jruoho     {
    482      1.1  jruoho         return;
    483      1.1  jruoho     }
    484      1.1  jruoho 
    485      1.1  jruoho     if (!ObjDesc)
    486      1.1  jruoho     {
    487      1.1  jruoho         /* This could be a null element of a package */
    488      1.1  jruoho 
    489      1.1  jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Null Object Descriptor\n"));
    490      1.1  jruoho         return;
    491      1.1  jruoho     }
    492      1.1  jruoho 
    493      1.1  jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
    494      1.1  jruoho     {
    495      1.1  jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p Namespace Node: ", ObjDesc));
    496      1.1  jruoho         ACPI_DUMP_ENTRY (ObjDesc, ACPI_LV_EXEC);
    497      1.1  jruoho         return;
    498      1.1  jruoho     }
    499      1.1  jruoho 
    500      1.1  jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
    501      1.1  jruoho     {
    502      1.1  jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
    503      1.1  jruoho             "%p is not a node or operand object: [%s]\n",
    504      1.1  jruoho             ObjDesc, AcpiUtGetDescriptorName (ObjDesc)));
    505      1.1  jruoho         ACPI_DUMP_BUFFER (ObjDesc, sizeof (ACPI_OPERAND_OBJECT));
    506      1.1  jruoho         return;
    507      1.1  jruoho     }
    508      1.1  jruoho 
    509      1.1  jruoho     /* ObjDesc is a valid object */
    510      1.1  jruoho 
    511      1.1  jruoho     if (Depth > 0)
    512      1.1  jruoho     {
    513      1.1  jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%*s[%u] %p ",
    514      1.1  jruoho             Depth, " ", Depth, ObjDesc));
    515      1.1  jruoho     }
    516      1.1  jruoho     else
    517      1.1  jruoho     {
    518      1.1  jruoho         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p ", ObjDesc));
    519      1.1  jruoho     }
    520      1.1  jruoho 
    521      1.1  jruoho     /* Decode object type */
    522      1.1  jruoho 
    523      1.1  jruoho     switch (ObjDesc->Common.Type)
    524      1.1  jruoho     {
    525      1.1  jruoho     case ACPI_TYPE_LOCAL_REFERENCE:
    526      1.1  jruoho 
    527      1.1  jruoho         AcpiOsPrintf ("Reference: [%s] ", AcpiUtGetReferenceName (ObjDesc));
    528      1.1  jruoho 
    529      1.1  jruoho         switch (ObjDesc->Reference.Class)
    530      1.1  jruoho         {
    531      1.1  jruoho         case ACPI_REFCLASS_DEBUG:
    532      1.1  jruoho 
    533      1.1  jruoho             AcpiOsPrintf ("\n");
    534      1.1  jruoho             break;
    535      1.1  jruoho 
    536      1.1  jruoho 
    537      1.1  jruoho         case ACPI_REFCLASS_INDEX:
    538      1.1  jruoho 
    539      1.1  jruoho             AcpiOsPrintf ("%p\n", ObjDesc->Reference.Object);
    540      1.1  jruoho             break;
    541      1.1  jruoho 
    542      1.1  jruoho 
    543      1.1  jruoho         case ACPI_REFCLASS_TABLE:
    544      1.1  jruoho 
    545      1.1  jruoho             AcpiOsPrintf ("Table Index %X\n", ObjDesc->Reference.Value);
    546      1.1  jruoho             break;
    547      1.1  jruoho 
    548      1.1  jruoho 
    549      1.1  jruoho         case ACPI_REFCLASS_REFOF:
    550      1.1  jruoho 
    551      1.1  jruoho             AcpiOsPrintf ("%p [%s]\n", ObjDesc->Reference.Object,
    552      1.1  jruoho                 AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
    553      1.1  jruoho                     ObjDesc->Reference.Object)->Common.Type));
    554      1.1  jruoho             break;
    555      1.1  jruoho 
    556      1.1  jruoho 
    557      1.1  jruoho         case ACPI_REFCLASS_NAME:
    558      1.1  jruoho 
    559      1.1  jruoho             AcpiOsPrintf ("- [%4.4s]\n", ObjDesc->Reference.Node->Name.Ascii);
    560      1.1  jruoho             break;
    561      1.1  jruoho 
    562      1.1  jruoho 
    563      1.1  jruoho         case ACPI_REFCLASS_ARG:
    564      1.1  jruoho         case ACPI_REFCLASS_LOCAL:
    565      1.1  jruoho 
    566      1.1  jruoho             AcpiOsPrintf ("%X\n", ObjDesc->Reference.Value);
    567      1.1  jruoho             break;
    568      1.1  jruoho 
    569      1.1  jruoho 
    570      1.1  jruoho         default:    /* Unknown reference class */
    571      1.1  jruoho 
    572      1.1  jruoho             AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class);
    573      1.1  jruoho             break;
    574      1.1  jruoho         }
    575      1.1  jruoho         break;
    576      1.1  jruoho 
    577      1.1  jruoho 
    578      1.1  jruoho     case ACPI_TYPE_BUFFER:
    579      1.1  jruoho 
    580      1.1  jruoho         AcpiOsPrintf ("Buffer length %.2X @ %p\n",
    581      1.1  jruoho             ObjDesc->Buffer.Length, ObjDesc->Buffer.Pointer);
    582      1.1  jruoho 
    583      1.1  jruoho         /* Debug only -- dump the buffer contents */
    584      1.1  jruoho 
    585      1.1  jruoho         if (ObjDesc->Buffer.Pointer)
    586      1.1  jruoho         {
    587      1.1  jruoho             Length = ObjDesc->Buffer.Length;
    588      1.1  jruoho             if (Length > 128)
    589      1.1  jruoho             {
    590      1.1  jruoho                 Length = 128;
    591      1.1  jruoho             }
    592      1.1  jruoho 
    593      1.1  jruoho             AcpiOsPrintf ("Buffer Contents: (displaying length 0x%.2X)\n",
    594      1.1  jruoho                 Length);
    595      1.1  jruoho             ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, Length);
    596      1.1  jruoho         }
    597      1.1  jruoho         break;
    598      1.1  jruoho 
    599      1.1  jruoho 
    600      1.1  jruoho     case ACPI_TYPE_INTEGER:
    601      1.1  jruoho 
    602      1.1  jruoho         AcpiOsPrintf ("Integer %8.8X%8.8X\n",
    603      1.1  jruoho             ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
    604      1.1  jruoho         break;
    605      1.1  jruoho 
    606      1.1  jruoho 
    607      1.1  jruoho     case ACPI_TYPE_PACKAGE:
    608      1.1  jruoho 
    609      1.1  jruoho         AcpiOsPrintf ("Package [Len %X] ElementArray %p\n",
    610      1.1  jruoho             ObjDesc->Package.Count, ObjDesc->Package.Elements);
    611      1.1  jruoho 
    612      1.1  jruoho         /*
    613      1.1  jruoho          * If elements exist, package element pointer is valid,
    614      1.1  jruoho          * and debug_level exceeds 1, dump package's elements.
    615      1.1  jruoho          */
    616      1.1  jruoho         if (ObjDesc->Package.Count &&
    617      1.1  jruoho             ObjDesc->Package.Elements &&
    618      1.1  jruoho             AcpiDbgLevel > 1)
    619      1.1  jruoho         {
    620      1.1  jruoho             for (Index = 0; Index < ObjDesc->Package.Count; Index++)
    621      1.1  jruoho             {
    622      1.1  jruoho                 AcpiExDumpOperand (ObjDesc->Package.Elements[Index], Depth+1);
    623      1.1  jruoho             }
    624      1.1  jruoho         }
    625      1.1  jruoho         break;
    626      1.1  jruoho 
    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 
    651      1.1  jruoho     case ACPI_TYPE_STRING:
    652      1.1  jruoho 
    653      1.1  jruoho         AcpiOsPrintf ("String length %X @ %p ",
    654      1.1  jruoho             ObjDesc->String.Length,
    655      1.1  jruoho             ObjDesc->String.Pointer);
    656      1.1  jruoho 
    657      1.1  jruoho         AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
    658      1.1  jruoho         AcpiOsPrintf ("\n");
    659      1.1  jruoho         break;
    660      1.1  jruoho 
    661      1.1  jruoho 
    662      1.1  jruoho     case ACPI_TYPE_LOCAL_BANK_FIELD:
    663      1.1  jruoho 
    664      1.1  jruoho         AcpiOsPrintf ("BankField\n");
    665      1.1  jruoho         break;
    666      1.1  jruoho 
    667      1.1  jruoho 
    668      1.1  jruoho     case ACPI_TYPE_LOCAL_REGION_FIELD:
    669      1.1  jruoho 
    670      1.1  jruoho         AcpiOsPrintf ("RegionField: Bits=%X AccWidth=%X Lock=%X Update=%X at "
    671      1.1  jruoho             "byte=%X bit=%X of below:\n",
    672      1.1  jruoho             ObjDesc->Field.BitLength,
    673      1.1  jruoho             ObjDesc->Field.AccessByteWidth,
    674      1.1  jruoho             ObjDesc->Field.FieldFlags & AML_FIELD_LOCK_RULE_MASK,
    675      1.1  jruoho             ObjDesc->Field.FieldFlags & AML_FIELD_UPDATE_RULE_MASK,
    676      1.1  jruoho             ObjDesc->Field.BaseByteOffset,
    677      1.1  jruoho             ObjDesc->Field.StartFieldBitOffset);
    678      1.1  jruoho 
    679      1.1  jruoho         AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth+1);
    680      1.1  jruoho         break;
    681      1.1  jruoho 
    682      1.1  jruoho 
    683      1.1  jruoho     case ACPI_TYPE_LOCAL_INDEX_FIELD:
    684      1.1  jruoho 
    685      1.1  jruoho         AcpiOsPrintf ("IndexField\n");
    686      1.1  jruoho         break;
    687      1.1  jruoho 
    688      1.1  jruoho 
    689      1.1  jruoho     case ACPI_TYPE_BUFFER_FIELD:
    690      1.1  jruoho 
    691      1.1  jruoho         AcpiOsPrintf ("BufferField: %X bits at byte %X bit %X of\n",
    692      1.1  jruoho             ObjDesc->BufferField.BitLength,
    693      1.1  jruoho             ObjDesc->BufferField.BaseByteOffset,
    694      1.1  jruoho             ObjDesc->BufferField.StartFieldBitOffset);
    695      1.1  jruoho 
    696      1.1  jruoho         if (!ObjDesc->BufferField.BufferObj)
    697      1.1  jruoho         {
    698      1.1  jruoho             ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*NULL*\n"));
    699      1.1  jruoho         }
    700      1.1  jruoho         else if ((ObjDesc->BufferField.BufferObj)->Common.Type !=
    701      1.1  jruoho                     ACPI_TYPE_BUFFER)
    702      1.1  jruoho         {
    703      1.1  jruoho             AcpiOsPrintf ("*not a Buffer*\n");
    704      1.1  jruoho         }
    705      1.1  jruoho         else
    706      1.1  jruoho         {
    707      1.1  jruoho             AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth+1);
    708      1.1  jruoho         }
    709      1.1  jruoho         break;
    710      1.1  jruoho 
    711      1.1  jruoho 
    712      1.1  jruoho     case ACPI_TYPE_EVENT:
    713      1.1  jruoho 
    714      1.1  jruoho         AcpiOsPrintf ("Event\n");
    715      1.1  jruoho         break;
    716      1.1  jruoho 
    717      1.1  jruoho 
    718      1.1  jruoho     case ACPI_TYPE_METHOD:
    719      1.1  jruoho 
    720      1.1  jruoho         AcpiOsPrintf ("Method(%X) @ %p:%X\n",
    721      1.1  jruoho             ObjDesc->Method.ParamCount,
    722      1.1  jruoho             ObjDesc->Method.AmlStart,
    723      1.1  jruoho             ObjDesc->Method.AmlLength);
    724      1.1  jruoho         break;
    725      1.1  jruoho 
    726      1.1  jruoho 
    727      1.1  jruoho     case ACPI_TYPE_MUTEX:
    728      1.1  jruoho 
    729      1.1  jruoho         AcpiOsPrintf ("Mutex\n");
    730      1.1  jruoho         break;
    731      1.1  jruoho 
    732      1.1  jruoho 
    733      1.1  jruoho     case ACPI_TYPE_DEVICE:
    734      1.1  jruoho 
    735      1.1  jruoho         AcpiOsPrintf ("Device\n");
    736      1.1  jruoho         break;
    737      1.1  jruoho 
    738      1.1  jruoho 
    739      1.1  jruoho     case ACPI_TYPE_POWER:
    740      1.1  jruoho 
    741      1.1  jruoho         AcpiOsPrintf ("Power\n");
    742      1.1  jruoho         break;
    743      1.1  jruoho 
    744      1.1  jruoho 
    745      1.1  jruoho     case ACPI_TYPE_PROCESSOR:
    746      1.1  jruoho 
    747      1.1  jruoho         AcpiOsPrintf ("Processor\n");
    748      1.1  jruoho         break;
    749      1.1  jruoho 
    750      1.1  jruoho 
    751      1.1  jruoho     case ACPI_TYPE_THERMAL:
    752      1.1  jruoho 
    753      1.1  jruoho         AcpiOsPrintf ("Thermal\n");
    754      1.1  jruoho         break;
    755      1.1  jruoho 
    756      1.1  jruoho 
    757      1.1  jruoho     default:
    758      1.1  jruoho         /* Unknown Type */
    759      1.1  jruoho 
    760      1.1  jruoho         AcpiOsPrintf ("Unknown Type %X\n", ObjDesc->Common.Type);
    761      1.1  jruoho         break;
    762      1.1  jruoho     }
    763      1.1  jruoho 
    764      1.1  jruoho     return;
    765      1.1  jruoho }
    766      1.1  jruoho 
    767      1.1  jruoho 
    768      1.1  jruoho /*******************************************************************************
    769      1.1  jruoho  *
    770      1.1  jruoho  * FUNCTION:    AcpiExDumpOperands
    771      1.1  jruoho  *
    772      1.1  jruoho  * PARAMETERS:  Operands            - A list of Operand objects
    773      1.1  jruoho  *              OpcodeName          - AML opcode name
    774      1.1  jruoho  *              NumOperands         - Operand count for this opcode
    775      1.1  jruoho  *
    776      1.1  jruoho  * DESCRIPTION: Dump the operands associated with the opcode
    777      1.1  jruoho  *
    778      1.1  jruoho  ******************************************************************************/
    779      1.1  jruoho 
    780      1.1  jruoho void
    781      1.1  jruoho AcpiExDumpOperands (
    782      1.1  jruoho     ACPI_OPERAND_OBJECT     **Operands,
    783      1.1  jruoho     const char              *OpcodeName,
    784      1.1  jruoho     UINT32                  NumOperands)
    785      1.1  jruoho {
    786      1.1  jruoho     ACPI_FUNCTION_NAME (ExDumpOperands);
    787      1.1  jruoho 
    788      1.1  jruoho 
    789      1.1  jruoho     if (!OpcodeName)
    790      1.1  jruoho     {
    791      1.1  jruoho         OpcodeName = "UNKNOWN";
    792      1.1  jruoho     }
    793      1.1  jruoho 
    794      1.1  jruoho     ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
    795      1.1  jruoho         "**** Start operand dump for opcode [%s], %u operands\n",
    796      1.1  jruoho         OpcodeName, NumOperands));
    797      1.1  jruoho 
    798      1.1  jruoho     if (NumOperands == 0)
    799      1.1  jruoho     {
    800      1.1  jruoho         NumOperands = 1;
    801      1.1  jruoho     }
    802      1.1  jruoho 
    803      1.1  jruoho     /* Dump the individual operands */
    804      1.1  jruoho 
    805      1.1  jruoho     while (NumOperands)
    806      1.1  jruoho     {
    807      1.1  jruoho         AcpiExDumpOperand (*Operands, 0);
    808      1.1  jruoho         Operands++;
    809      1.1  jruoho         NumOperands--;
    810      1.1  jruoho     }
    811      1.1  jruoho 
    812      1.1  jruoho     ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
    813      1.1  jruoho         "**** End operand dump for [%s]\n", OpcodeName));
    814      1.1  jruoho     return;
    815      1.1  jruoho }
    816      1.1  jruoho 
    817      1.1  jruoho 
    818      1.1  jruoho /*******************************************************************************
    819      1.1  jruoho  *
    820      1.1  jruoho  * FUNCTION:    AcpiExOut* functions
    821      1.1  jruoho  *
    822      1.1  jruoho  * PARAMETERS:  Title               - Descriptive text
    823      1.1  jruoho  *              Value               - Value to be displayed
    824      1.1  jruoho  *
    825      1.1  jruoho  * DESCRIPTION: Object dump output formatting functions.  These functions
    826      1.1  jruoho  *              reduce the number of format strings required and keeps them
    827      1.1  jruoho  *              all in one place for easy modification.
    828      1.1  jruoho  *
    829      1.1  jruoho  ******************************************************************************/
    830      1.1  jruoho 
    831      1.1  jruoho static void
    832      1.1  jruoho AcpiExOutString (
    833      1.1  jruoho     char                    *Title,
    834      1.1  jruoho     char                    *Value)
    835      1.1  jruoho {
    836      1.1  jruoho     AcpiOsPrintf ("%20s : %s\n", Title, Value);
    837      1.1  jruoho }
    838      1.1  jruoho 
    839      1.1  jruoho static void
    840      1.1  jruoho AcpiExOutPointer (
    841      1.1  jruoho     char                    *Title,
    842      1.1  jruoho     void                    *Value)
    843      1.1  jruoho {
    844      1.1  jruoho     AcpiOsPrintf ("%20s : %p\n", Title, Value);
    845      1.1  jruoho }
    846      1.1  jruoho 
    847      1.1  jruoho 
    848      1.1  jruoho /*******************************************************************************
    849      1.1  jruoho  *
    850      1.1  jruoho  * FUNCTION:    AcpiExDumpNamespaceNode
    851      1.1  jruoho  *
    852      1.1  jruoho  * PARAMETERS:  Node                - Descriptor to dump
    853      1.1  jruoho  *              Flags               - Force display if TRUE
    854      1.1  jruoho  *
    855      1.1  jruoho  * DESCRIPTION: Dumps the members of the given.Node
    856      1.1  jruoho  *
    857      1.1  jruoho  ******************************************************************************/
    858      1.1  jruoho 
    859      1.1  jruoho void
    860      1.1  jruoho AcpiExDumpNamespaceNode (
    861      1.1  jruoho     ACPI_NAMESPACE_NODE     *Node,
    862      1.1  jruoho     UINT32                  Flags)
    863      1.1  jruoho {
    864      1.1  jruoho 
    865      1.1  jruoho     ACPI_FUNCTION_ENTRY ();
    866      1.1  jruoho 
    867      1.1  jruoho 
    868      1.1  jruoho     if (!Flags)
    869      1.1  jruoho     {
    870      1.1  jruoho         if (!((ACPI_LV_OBJECTS & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer)))
    871      1.1  jruoho         {
    872      1.1  jruoho             return;
    873      1.1  jruoho         }
    874      1.1  jruoho     }
    875      1.1  jruoho 
    876      1.1  jruoho     AcpiOsPrintf ("%20s : %4.4s\n", "Name", AcpiUtGetNodeName (Node));
    877      1.1  jruoho     AcpiExOutString  ("Type", AcpiUtGetTypeName (Node->Type));
    878      1.1  jruoho     AcpiExOutPointer ("Attached Object", AcpiNsGetAttachedObject (Node));
    879      1.1  jruoho     AcpiExOutPointer ("Parent", Node->Parent);
    880      1.1  jruoho 
    881      1.1  jruoho     AcpiExDumpObject (ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node),
    882      1.1  jruoho         AcpiExDumpNode);
    883      1.1  jruoho }
    884      1.1  jruoho 
    885      1.1  jruoho 
    886      1.1  jruoho /*******************************************************************************
    887      1.1  jruoho  *
    888      1.1  jruoho  * FUNCTION:    AcpiExDumpReferenceObj
    889      1.1  jruoho  *
    890      1.1  jruoho  * PARAMETERS:  Object              - Descriptor to dump
    891      1.1  jruoho  *
    892      1.1  jruoho  * DESCRIPTION: Dumps a reference object
    893      1.1  jruoho  *
    894      1.1  jruoho  ******************************************************************************/
    895      1.1  jruoho 
    896      1.1  jruoho static void
    897      1.1  jruoho AcpiExDumpReferenceObj (
    898      1.1  jruoho     ACPI_OPERAND_OBJECT     *ObjDesc)
    899      1.1  jruoho {
    900      1.1  jruoho     ACPI_BUFFER             RetBuf;
    901      1.1  jruoho     ACPI_STATUS             Status;
    902      1.1  jruoho 
    903      1.1  jruoho 
    904      1.1  jruoho     RetBuf.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
    905      1.1  jruoho 
    906      1.1  jruoho     if (ObjDesc->Reference.Class == ACPI_REFCLASS_NAME)
    907      1.1  jruoho     {
    908      1.1  jruoho         AcpiOsPrintf (" %p ", ObjDesc->Reference.Node);
    909      1.1  jruoho 
    910      1.1  jruoho         Status = AcpiNsHandleToPathname (ObjDesc->Reference.Node, &RetBuf);
    911      1.1  jruoho         if (ACPI_FAILURE (Status))
    912      1.1  jruoho         {
    913      1.1  jruoho             AcpiOsPrintf (" Could not convert name to pathname\n");
    914      1.1  jruoho         }
    915      1.1  jruoho         else
    916      1.1  jruoho         {
    917      1.1  jruoho            AcpiOsPrintf ("%s\n", (char *) RetBuf.Pointer);
    918      1.1  jruoho            ACPI_FREE (RetBuf.Pointer);
    919      1.1  jruoho         }
    920      1.1  jruoho     }
    921      1.1  jruoho     else if (ObjDesc->Reference.Object)
    922      1.1  jruoho     {
    923      1.1  jruoho         if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND)
    924      1.1  jruoho         {
    925      1.1  jruoho             AcpiOsPrintf (" Target: %p", ObjDesc->Reference.Object);
    926      1.1  jruoho             if (ObjDesc->Reference.Class == ACPI_REFCLASS_TABLE)
    927      1.1  jruoho             {
    928      1.1  jruoho                 AcpiOsPrintf (" Table Index: %X\n", ObjDesc->Reference.Value);
    929      1.1  jruoho             }
    930      1.1  jruoho             else
    931      1.1  jruoho             {
    932      1.1  jruoho                 AcpiOsPrintf (" Target: %p [%s]\n", ObjDesc->Reference.Object,
    933      1.1  jruoho                     AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
    934      1.1  jruoho                         ObjDesc->Reference.Object)->Common.Type));
    935      1.1  jruoho             }
    936      1.1  jruoho         }
    937      1.1  jruoho         else
    938      1.1  jruoho         {
    939      1.1  jruoho             AcpiOsPrintf (" Target: %p\n", ObjDesc->Reference.Object);
    940      1.1  jruoho         }
    941      1.1  jruoho     }
    942      1.1  jruoho }
    943      1.1  jruoho 
    944      1.1  jruoho 
    945      1.1  jruoho /*******************************************************************************
    946      1.1  jruoho  *
    947      1.1  jruoho  * FUNCTION:    AcpiExDumpPackageObj
    948      1.1  jruoho  *
    949      1.1  jruoho  * PARAMETERS:  ObjDesc             - Descriptor to dump
    950      1.1  jruoho  *              Level               - Indentation Level
    951      1.1  jruoho  *              Index               - Package index for this object
    952      1.1  jruoho  *
    953      1.1  jruoho  * DESCRIPTION: Dumps the elements of the package
    954      1.1  jruoho  *
    955      1.1  jruoho  ******************************************************************************/
    956      1.1  jruoho 
    957      1.1  jruoho static void
    958      1.1  jruoho AcpiExDumpPackageObj (
    959      1.1  jruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
    960      1.1  jruoho     UINT32                  Level,
    961      1.1  jruoho     UINT32                  Index)
    962      1.1  jruoho {
    963      1.1  jruoho     UINT32                  i;
    964      1.1  jruoho 
    965      1.1  jruoho 
    966      1.1  jruoho     /* Indentation and index output */
    967      1.1  jruoho 
    968      1.1  jruoho     if (Level > 0)
    969      1.1  jruoho     {
    970      1.1  jruoho         for (i = 0; i < Level; i++)
    971      1.1  jruoho         {
    972      1.1  jruoho             AcpiOsPrintf ("  ");
    973      1.1  jruoho         }
    974      1.1  jruoho 
    975      1.1  jruoho         AcpiOsPrintf ("[%.2d] ", Index);
    976      1.1  jruoho     }
    977      1.1  jruoho 
    978      1.1  jruoho     AcpiOsPrintf ("%p ", ObjDesc);
    979      1.1  jruoho 
    980      1.1  jruoho     /* Null package elements are allowed */
    981      1.1  jruoho 
    982      1.1  jruoho     if (!ObjDesc)
    983      1.1  jruoho     {
    984      1.1  jruoho         AcpiOsPrintf ("[Null Object]\n");
    985      1.1  jruoho         return;
    986      1.1  jruoho     }
    987      1.1  jruoho 
    988      1.1  jruoho     /* Packages may only contain a few object types */
    989      1.1  jruoho 
    990      1.1  jruoho     switch (ObjDesc->Common.Type)
    991      1.1  jruoho     {
    992      1.1  jruoho     case ACPI_TYPE_INTEGER:
    993      1.1  jruoho 
    994      1.1  jruoho         AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n",
    995      1.1  jruoho             ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
    996      1.1  jruoho         break;
    997      1.1  jruoho 
    998      1.1  jruoho 
    999      1.1  jruoho     case ACPI_TYPE_STRING:
   1000      1.1  jruoho 
   1001      1.1  jruoho         AcpiOsPrintf ("[String]  Value: ");
   1002      1.1  jruoho         for (i = 0; i < ObjDesc->String.Length; i++)
   1003      1.1  jruoho         {
   1004      1.1  jruoho             AcpiOsPrintf ("%c", ObjDesc->String.Pointer[i]);
   1005      1.1  jruoho         }
   1006      1.1  jruoho         AcpiOsPrintf ("\n");
   1007      1.1  jruoho         break;
   1008      1.1  jruoho 
   1009      1.1  jruoho 
   1010      1.1  jruoho     case ACPI_TYPE_BUFFER:
   1011      1.1  jruoho 
   1012      1.1  jruoho         AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length);
   1013      1.1  jruoho         if (ObjDesc->Buffer.Length)
   1014      1.1  jruoho         {
   1015      1.1  jruoho             AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer),
   1016      1.1  jruoho                 ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT);
   1017      1.1  jruoho         }
   1018      1.1  jruoho         else
   1019      1.1  jruoho         {
   1020      1.1  jruoho             AcpiOsPrintf ("\n");
   1021      1.1  jruoho         }
   1022      1.1  jruoho         break;
   1023      1.1  jruoho 
   1024      1.1  jruoho 
   1025      1.1  jruoho     case ACPI_TYPE_PACKAGE:
   1026      1.1  jruoho 
   1027      1.1  jruoho         AcpiOsPrintf ("[Package] Contains %u Elements:\n",
   1028      1.1  jruoho             ObjDesc->Package.Count);
   1029      1.1  jruoho 
   1030      1.1  jruoho         for (i = 0; i < ObjDesc->Package.Count; i++)
   1031      1.1  jruoho         {
   1032      1.1  jruoho             AcpiExDumpPackageObj (ObjDesc->Package.Elements[i], Level+1, i);
   1033      1.1  jruoho         }
   1034      1.1  jruoho         break;
   1035      1.1  jruoho 
   1036      1.1  jruoho 
   1037      1.1  jruoho     case ACPI_TYPE_LOCAL_REFERENCE:
   1038      1.1  jruoho 
   1039      1.1  jruoho         AcpiOsPrintf ("[Object Reference] Type [%s] %2.2X",
   1040      1.1  jruoho             AcpiUtGetReferenceName (ObjDesc),
   1041      1.1  jruoho             ObjDesc->Reference.Class);
   1042      1.1  jruoho         AcpiExDumpReferenceObj (ObjDesc);
   1043      1.1  jruoho         break;
   1044      1.1  jruoho 
   1045      1.1  jruoho 
   1046      1.1  jruoho     default:
   1047      1.1  jruoho 
   1048      1.1  jruoho         AcpiOsPrintf ("[Unknown Type] %X\n", ObjDesc->Common.Type);
   1049      1.1  jruoho         break;
   1050      1.1  jruoho     }
   1051      1.1  jruoho }
   1052      1.1  jruoho 
   1053      1.1  jruoho 
   1054      1.1  jruoho /*******************************************************************************
   1055      1.1  jruoho  *
   1056      1.1  jruoho  * FUNCTION:    AcpiExDumpObjectDescriptor
   1057      1.1  jruoho  *
   1058      1.1  jruoho  * PARAMETERS:  ObjDesc             - Descriptor to dump
   1059      1.1  jruoho  *              Flags               - Force display if TRUE
   1060      1.1  jruoho  *
   1061      1.1  jruoho  * DESCRIPTION: Dumps the members of the object descriptor given.
   1062      1.1  jruoho  *
   1063      1.1  jruoho  ******************************************************************************/
   1064      1.1  jruoho 
   1065      1.1  jruoho void
   1066      1.1  jruoho AcpiExDumpObjectDescriptor (
   1067      1.1  jruoho     ACPI_OPERAND_OBJECT     *ObjDesc,
   1068      1.1  jruoho     UINT32                  Flags)
   1069      1.1  jruoho {
   1070      1.1  jruoho     ACPI_FUNCTION_TRACE (ExDumpObjectDescriptor);
   1071      1.1  jruoho 
   1072      1.1  jruoho 
   1073      1.1  jruoho     if (!ObjDesc)
   1074      1.1  jruoho     {
   1075      1.1  jruoho         return_VOID;
   1076      1.1  jruoho     }
   1077      1.1  jruoho 
   1078      1.1  jruoho     if (!Flags)
   1079      1.1  jruoho     {
   1080      1.1  jruoho         if (!((ACPI_LV_OBJECTS & AcpiDbgLevel) && (_COMPONENT & AcpiDbgLayer)))
   1081      1.1  jruoho         {
   1082      1.1  jruoho             return_VOID;
   1083      1.1  jruoho         }
   1084      1.1  jruoho     }
   1085      1.1  jruoho 
   1086      1.1  jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
   1087      1.1  jruoho     {
   1088      1.1  jruoho         AcpiExDumpNamespaceNode ((ACPI_NAMESPACE_NODE *) ObjDesc, Flags);
   1089      1.1  jruoho 
   1090      1.1  jruoho         AcpiOsPrintf ("\nAttached Object (%p):\n",
   1091      1.1  jruoho             ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object);
   1092      1.1  jruoho 
   1093      1.1  jruoho         AcpiExDumpObjectDescriptor (
   1094      1.1  jruoho             ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object, Flags);
   1095      1.1  jruoho         return_VOID;
   1096      1.1  jruoho     }
   1097      1.1  jruoho 
   1098      1.1  jruoho     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
   1099      1.1  jruoho     {
   1100      1.1  jruoho         AcpiOsPrintf (
   1101      1.1  jruoho             "ExDumpObjectDescriptor: %p is not an ACPI operand object: [%s]\n",
   1102      1.1  jruoho             ObjDesc, AcpiUtGetDescriptorName (ObjDesc));
   1103      1.1  jruoho         return_VOID;
   1104      1.1  jruoho     }
   1105      1.1  jruoho 
   1106      1.1  jruoho     if (ObjDesc->Common.Type > ACPI_TYPE_NS_NODE_MAX)
   1107      1.1  jruoho     {
   1108      1.1  jruoho         return_VOID;
   1109      1.1  jruoho     }
   1110      1.1  jruoho 
   1111      1.1  jruoho     /* Common Fields */
   1112      1.1  jruoho 
   1113      1.1  jruoho     AcpiExDumpObject (ObjDesc, AcpiExDumpCommon);
   1114      1.1  jruoho 
   1115      1.1  jruoho     /* Object-specific fields */
   1116      1.1  jruoho 
   1117      1.1  jruoho     AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]);
   1118      1.1  jruoho     return_VOID;
   1119      1.1  jruoho }
   1120      1.1  jruoho 
   1121      1.1  jruoho #endif
   1122      1.1  jruoho 
   1123