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