17c478bd9Sstevel@tonic-gate /******************************************************************************
27c478bd9Sstevel@tonic-gate  *
37c478bd9Sstevel@tonic-gate  * Module Name: exdump - Interpreter debug output routines
47c478bd9Sstevel@tonic-gate  *
57c478bd9Sstevel@tonic-gate  *****************************************************************************/
67c478bd9Sstevel@tonic-gate 
7*35786f68SRobert Mustacchi /******************************************************************************
8*35786f68SRobert Mustacchi  *
9*35786f68SRobert Mustacchi  * 1. Copyright Notice
10*35786f68SRobert Mustacchi  *
11*35786f68SRobert Mustacchi  * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
127c478bd9Sstevel@tonic-gate  * All rights reserved.
137c478bd9Sstevel@tonic-gate  *
14*35786f68SRobert Mustacchi  * 2. License
15*35786f68SRobert Mustacchi  *
16*35786f68SRobert Mustacchi  * 2.1. This is your license from Intel Corp. under its intellectual property
17*35786f68SRobert Mustacchi  * rights. You may have additional license terms from the party that provided
18*35786f68SRobert Mustacchi  * you this software, covering your right to use that party's intellectual
19*35786f68SRobert Mustacchi  * property rights.
20*35786f68SRobert Mustacchi  *
21*35786f68SRobert Mustacchi  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22*35786f68SRobert Mustacchi  * copy of the source code appearing in this file ("Covered Code") an
23*35786f68SRobert Mustacchi  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24*35786f68SRobert Mustacchi  * base code distributed originally by Intel ("Original Intel Code") to copy,
25*35786f68SRobert Mustacchi  * make derivatives, distribute, use and display any portion of the Covered
26*35786f68SRobert Mustacchi  * Code in any form, with the right to sublicense such rights; and
27*35786f68SRobert Mustacchi  *
28*35786f68SRobert Mustacchi  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29*35786f68SRobert Mustacchi  * license (with the right to sublicense), under only those claims of Intel
30*35786f68SRobert Mustacchi  * patents that are infringed by the Original Intel Code, to make, use, sell,
31*35786f68SRobert Mustacchi  * offer to sell, and import the Covered Code and derivative works thereof
32*35786f68SRobert Mustacchi  * solely to the minimum extent necessary to exercise the above copyright
33*35786f68SRobert Mustacchi  * license, and in no event shall the patent license extend to any additions
34*35786f68SRobert Mustacchi  * to or modifications of the Original Intel Code. No other license or right
35*35786f68SRobert Mustacchi  * is granted directly or by implication, estoppel or otherwise;
36*35786f68SRobert Mustacchi  *
37*35786f68SRobert Mustacchi  * The above copyright and patent license is granted only if the following
38*35786f68SRobert Mustacchi  * conditions are met:
39*35786f68SRobert Mustacchi  *
40*35786f68SRobert Mustacchi  * 3. Conditions
41*35786f68SRobert Mustacchi  *
42*35786f68SRobert Mustacchi  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43*35786f68SRobert Mustacchi  * Redistribution of source code of any substantial portion of the Covered
44*35786f68SRobert Mustacchi  * Code or modification with rights to further distribute source must include
45*35786f68SRobert Mustacchi  * the above Copyright Notice, the above License, this list of Conditions,
46*35786f68SRobert Mustacchi  * and the following Disclaimer and Export Compliance provision. In addition,
47*35786f68SRobert Mustacchi  * Licensee must cause all Covered Code to which Licensee contributes to
48*35786f68SRobert Mustacchi  * contain a file documenting the changes Licensee made to create that Covered
49*35786f68SRobert Mustacchi  * Code and the date of any change. Licensee must include in that file the
50*35786f68SRobert Mustacchi  * documentation of any changes made by any predecessor Licensee. Licensee
51*35786f68SRobert Mustacchi  * must include a prominent statement that the modification is derived,
52*35786f68SRobert Mustacchi  * directly or indirectly, from Original Intel Code.
53*35786f68SRobert Mustacchi  *
54*35786f68SRobert Mustacchi  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55*35786f68SRobert Mustacchi  * Redistribution of source code of any substantial portion of the Covered
56*35786f68SRobert Mustacchi  * Code or modification without rights to further distribute source must
57*35786f68SRobert Mustacchi  * include the following Disclaimer and Export Compliance provision in the
58*35786f68SRobert Mustacchi  * documentation and/or other materials provided with distribution. In
59*35786f68SRobert Mustacchi  * addition, Licensee may not authorize further sublicense of source of any
60*35786f68SRobert Mustacchi  * portion of the Covered Code, and must include terms to the effect that the
61*35786f68SRobert Mustacchi  * license from Licensee to its licensee is limited to the intellectual
62*35786f68SRobert Mustacchi  * property embodied in the software Licensee provides to its licensee, and
63*35786f68SRobert Mustacchi  * not to intellectual property embodied in modifications its licensee may
64*35786f68SRobert Mustacchi  * make.
65*35786f68SRobert Mustacchi  *
66*35786f68SRobert Mustacchi  * 3.3. Redistribution of Executable. Redistribution in executable form of any
67*35786f68SRobert Mustacchi  * substantial portion of the Covered Code or modification must reproduce the
68*35786f68SRobert Mustacchi  * above Copyright Notice, and the following Disclaimer and Export Compliance
69*35786f68SRobert Mustacchi  * provision in the documentation and/or other materials provided with the
70*35786f68SRobert Mustacchi  * distribution.
71*35786f68SRobert Mustacchi  *
72*35786f68SRobert Mustacchi  * 3.4. Intel retains all right, title, and interest in and to the Original
73*35786f68SRobert Mustacchi  * Intel Code.
74*35786f68SRobert Mustacchi  *
75*35786f68SRobert Mustacchi  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76*35786f68SRobert Mustacchi  * Intel shall be used in advertising or otherwise to promote the sale, use or
77*35786f68SRobert Mustacchi  * other dealings in products derived from or relating to the Covered Code
78*35786f68SRobert Mustacchi  * without prior written authorization from Intel.
79*35786f68SRobert Mustacchi  *
80*35786f68SRobert Mustacchi  * 4. Disclaimer and Export Compliance
81*35786f68SRobert Mustacchi  *
82*35786f68SRobert Mustacchi  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83*35786f68SRobert Mustacchi  * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84*35786f68SRobert Mustacchi  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
85*35786f68SRobert Mustacchi  * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
86*35786f68SRobert Mustacchi  * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
87*35786f68SRobert Mustacchi  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
88*35786f68SRobert Mustacchi  * PARTICULAR PURPOSE.
89*35786f68SRobert Mustacchi  *
90*35786f68SRobert Mustacchi  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91*35786f68SRobert Mustacchi  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92*35786f68SRobert Mustacchi  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93*35786f68SRobert Mustacchi  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94*35786f68SRobert Mustacchi  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95*35786f68SRobert Mustacchi  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
96*35786f68SRobert Mustacchi  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
97*35786f68SRobert Mustacchi  * LIMITED REMEDY.
98*35786f68SRobert Mustacchi  *
99*35786f68SRobert Mustacchi  * 4.3. Licensee shall not export, either directly or indirectly, any of this
100*35786f68SRobert Mustacchi  * software or system incorporating such software without first obtaining any
101*35786f68SRobert Mustacchi  * required license or other approval from the U. S. Department of Commerce or
102*35786f68SRobert Mustacchi  * any other agency or department of the United States Government. In the
103*35786f68SRobert Mustacchi  * event Licensee exports any such software from the United States or
104*35786f68SRobert Mustacchi  * re-exports any such software from a foreign destination, Licensee shall
105*35786f68SRobert Mustacchi  * ensure that the distribution and export/re-export of the software is in
106*35786f68SRobert Mustacchi  * compliance with all laws, regulations, orders, or other restrictions of the
107*35786f68SRobert Mustacchi  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108*35786f68SRobert Mustacchi  * any of its subsidiaries will export/re-export any technical data, process,
109*35786f68SRobert Mustacchi  * software, or service, directly or indirectly, to any country for which the
110*35786f68SRobert Mustacchi  * United States government or any agency thereof requires an export license,
111*35786f68SRobert Mustacchi  * other governmental approval, or letter of assurance, without first obtaining
112*35786f68SRobert Mustacchi  * such license, approval or letter.
113*35786f68SRobert Mustacchi  *
114*35786f68SRobert Mustacchi  *****************************************************************************
115*35786f68SRobert Mustacchi  *
116*35786f68SRobert Mustacchi  * Alternatively, you may choose to be licensed under the terms of the
117*35786f68SRobert Mustacchi  * following license:
118*35786f68SRobert Mustacchi  *
11926f3cdf0SGordon Ross  * Redistribution and use in source and binary forms, with or without
12026f3cdf0SGordon Ross  * modification, are permitted provided that the following conditions
12126f3cdf0SGordon Ross  * are met:
12226f3cdf0SGordon Ross  * 1. Redistributions of source code must retain the above copyright
12326f3cdf0SGordon Ross  *    notice, this list of conditions, and the following disclaimer,
12426f3cdf0SGordon Ross  *    without modification.
12526f3cdf0SGordon Ross  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
12626f3cdf0SGordon Ross  *    substantially similar to the "NO WARRANTY" disclaimer below
12726f3cdf0SGordon Ross  *    ("Disclaimer") and any redistribution must be conditioned upon
12826f3cdf0SGordon Ross  *    including a substantially similar Disclaimer requirement for further
12926f3cdf0SGordon Ross  *    binary redistribution.
13026f3cdf0SGordon Ross  * 3. Neither the names of the above-listed copyright holders nor the names
13126f3cdf0SGordon Ross  *    of any contributors may be used to endorse or promote products derived
13226f3cdf0SGordon Ross  *    from this software without specific prior written permission.
1337c478bd9Sstevel@tonic-gate  *
13426f3cdf0SGordon Ross  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13526f3cdf0SGordon Ross  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
136*35786f68SRobert Mustacchi  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
13726f3cdf0SGordon Ross  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
138*35786f68SRobert Mustacchi  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
139*35786f68SRobert Mustacchi  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
140*35786f68SRobert Mustacchi  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
141*35786f68SRobert Mustacchi  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
142*35786f68SRobert Mustacchi  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
143*35786f68SRobert Mustacchi  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
144*35786f68SRobert Mustacchi  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
145*35786f68SRobert Mustacchi  *
146*35786f68SRobert Mustacchi  * Alternatively, you may choose to be licensed under the terms of the
147*35786f68SRobert Mustacchi  * GNU General Public License ("GPL") version 2 as published by the Free
148*35786f68SRobert Mustacchi  * Software Foundation.
149*35786f68SRobert Mustacchi  *
150*35786f68SRobert Mustacchi  *****************************************************************************/
1517c478bd9Sstevel@tonic-gate 
1527c478bd9Sstevel@tonic-gate #include "acpi.h"
153aa2aa9a6SDana Myers #include "accommon.h"
1547c478bd9Sstevel@tonic-gate #include "acinterp.h"
1557c478bd9Sstevel@tonic-gate #include "amlcode.h"
1567c478bd9Sstevel@tonic-gate #include "acnamesp.h"
157db2bae30SDana Myers 
1587c478bd9Sstevel@tonic-gate 
1597c478bd9Sstevel@tonic-gate #define _COMPONENT          ACPI_EXECUTER
1607c478bd9Sstevel@tonic-gate         ACPI_MODULE_NAME    ("exdump")
1617c478bd9Sstevel@tonic-gate 
162450d6964Smyers /*
163450d6964Smyers  * The following routines are used for debug output only
164450d6964Smyers  */
165450d6964Smyers #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
166450d6964Smyers 
1677c478bd9Sstevel@tonic-gate /* Local prototypes */
1687c478bd9Sstevel@tonic-gate 
1697c478bd9Sstevel@tonic-gate static void
1707c478bd9Sstevel@tonic-gate AcpiExOutString (
1717b1019a6SJerry Jelinek     const char              *Title,
1727b1019a6SJerry Jelinek     const char              *Value);
1737c478bd9Sstevel@tonic-gate 
1747c478bd9Sstevel@tonic-gate static void
1757c478bd9Sstevel@tonic-gate AcpiExOutPointer (
1767b1019a6SJerry Jelinek     const char              *Title,
1777b1019a6SJerry Jelinek     const void              *Value);
1787c478bd9Sstevel@tonic-gate 
17927f7c583Smyers static void
18027f7c583Smyers AcpiExDumpObject (
18127f7c583Smyers     ACPI_OPERAND_OBJECT     *ObjDesc,
18227f7c583Smyers     ACPI_EXDUMP_INFO        *Info);
18327f7c583Smyers 
184450d6964Smyers static void
18530082d0cSmyers AcpiExDumpReferenceObj (
186450d6964Smyers     ACPI_OPERAND_OBJECT     *ObjDesc);
187450d6964Smyers 
188450d6964Smyers static void
18930082d0cSmyers AcpiExDumpPackageObj (
190450d6964Smyers     ACPI_OPERAND_OBJECT     *ObjDesc,
191450d6964Smyers     UINT32                  Level,
192450d6964Smyers     UINT32                  Index);
1937c478bd9Sstevel@tonic-gate 
1947c478bd9Sstevel@tonic-gate 
19530082d0cSmyers /*******************************************************************************
19630082d0cSmyers  *
19730082d0cSmyers  * Object Descriptor info tables
19830082d0cSmyers  *
19930082d0cSmyers  * Note: The first table entry must be an INIT opcode and must contain
20030082d0cSmyers  * the table length (number of table entries)
20130082d0cSmyers  *
20230082d0cSmyers  ******************************************************************************/
20330082d0cSmyers 
20430082d0cSmyers static ACPI_EXDUMP_INFO     AcpiExDumpInteger[2] =
20530082d0cSmyers {
20630082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpInteger),        NULL},
20730082d0cSmyers     {ACPI_EXD_UINT64,   ACPI_EXD_OFFSET (Integer.Value),                "Value"}
20830082d0cSmyers };
20930082d0cSmyers 
21030082d0cSmyers static ACPI_EXDUMP_INFO     AcpiExDumpString[4] =
21130082d0cSmyers {
21230082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpString),         NULL},
21330082d0cSmyers     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (String.Length),                "Length"},
21430082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (String.Pointer),               "Pointer"},
21530082d0cSmyers     {ACPI_EXD_STRING,   0,                                              NULL}
21630082d0cSmyers };
21730082d0cSmyers 
218db2bae30SDana Myers static ACPI_EXDUMP_INFO     AcpiExDumpBuffer[5] =
21930082d0cSmyers {
22030082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpBuffer),         NULL},
22130082d0cSmyers     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Buffer.Length),                "Length"},
22230082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Buffer.Pointer),               "Pointer"},
2237b1019a6SJerry Jelinek     {ACPI_EXD_NODE,     ACPI_EXD_OFFSET (Buffer.Node),                  "Parent Node"},
22430082d0cSmyers     {ACPI_EXD_BUFFER,   0,                                              NULL}
22530082d0cSmyers };
22630082d0cSmyers 
2277b1019a6SJerry Jelinek static ACPI_EXDUMP_INFO     AcpiExDumpPackage[6] =
22830082d0cSmyers {
22930082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpPackage),        NULL},
2307b1019a6SJerry Jelinek     {ACPI_EXD_NODE,     ACPI_EXD_OFFSET (Package.Node),                 "Parent Node"},
23130082d0cSmyers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Package.Flags),                "Flags"},
232*35786f68SRobert Mustacchi     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Package.Count),                "Element Count"},
23330082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Package.Elements),             "Element List"},
23430082d0cSmyers     {ACPI_EXD_PACKAGE,  0,                                              NULL}
23530082d0cSmyers };
23630082d0cSmyers 
23730082d0cSmyers static ACPI_EXDUMP_INFO     AcpiExDumpDevice[4] =
23830082d0cSmyers {
23930082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpDevice),         NULL},
2407b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Device.NotifyList[0]),         "System Notify"},
2417b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Device.NotifyList[1]),         "Device Notify"},
2427b1019a6SJerry Jelinek     {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (Device.Handler),               "Handler"}
24330082d0cSmyers };
24430082d0cSmyers 
24530082d0cSmyers static ACPI_EXDUMP_INFO     AcpiExDumpEvent[2] =
24630082d0cSmyers {
24730082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpEvent),          NULL},
24827f7c583Smyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Event.OsSemaphore),            "OsSemaphore"}
24930082d0cSmyers };
25030082d0cSmyers 
251aa2aa9a6SDana Myers static ACPI_EXDUMP_INFO     AcpiExDumpMethod[9] =
25230082d0cSmyers {
25330082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpMethod),         NULL},
25426f3cdf0SGordon Ross     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.InfoFlags),             "Info Flags"},
255aa2aa9a6SDana Myers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.ParamCount),            "Parameter Count"},
25627f7c583Smyers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.SyncLevel),             "Sync Level"},
25727f7c583Smyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Method.Mutex),                 "Mutex"},
25830082d0cSmyers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.OwnerId),               "Owner Id"},
25930082d0cSmyers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Method.ThreadCount),           "Thread Count"},
26030082d0cSmyers     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Method.AmlLength),             "Aml Length"},
26130082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Method.AmlStart),              "Aml Start"}
26230082d0cSmyers };
26330082d0cSmyers 
2647b1019a6SJerry Jelinek static ACPI_EXDUMP_INFO     AcpiExDumpMutex[6] =
26530082d0cSmyers {
26630082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpMutex),          NULL},
26730082d0cSmyers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Mutex.SyncLevel),              "Sync Level"},
2687b1019a6SJerry Jelinek     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Mutex.OriginalSyncLevel),      "Original Sync Level"},
26930082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Mutex.OwnerThread),            "Owner Thread"},
27030082d0cSmyers     {ACPI_EXD_UINT16,   ACPI_EXD_OFFSET (Mutex.AcquisitionDepth),       "Acquire Depth"},
27127f7c583Smyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Mutex.OsMutex),                "OsMutex"}
27230082d0cSmyers };
27330082d0cSmyers 
2747b1019a6SJerry Jelinek static ACPI_EXDUMP_INFO     AcpiExDumpRegion[8] =
27530082d0cSmyers {
27630082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpRegion),         NULL},
27730082d0cSmyers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Region.SpaceId),               "Space Id"},
27830082d0cSmyers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Region.Flags),                 "Flags"},
2797b1019a6SJerry Jelinek     {ACPI_EXD_NODE,     ACPI_EXD_OFFSET (Region.Node),                  "Parent Node"},
28030082d0cSmyers     {ACPI_EXD_ADDRESS,  ACPI_EXD_OFFSET (Region.Address),               "Address"},
28130082d0cSmyers     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Region.Length),                "Length"},
2827b1019a6SJerry Jelinek     {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (Region.Handler),               "Handler"},
28330082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Region.Next),                  "Next"}
28430082d0cSmyers };
28530082d0cSmyers 
2867b1019a6SJerry Jelinek static ACPI_EXDUMP_INFO     AcpiExDumpPower[6] =
28730082d0cSmyers {
28830082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpPower),          NULL},
28930082d0cSmyers     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (PowerResource.SystemLevel),    "System Level"},
29030082d0cSmyers     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (PowerResource.ResourceOrder),  "Resource Order"},
2917b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (PowerResource.NotifyList[0]),  "System Notify"},
2927b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (PowerResource.NotifyList[1]),  "Device Notify"},
2937b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (PowerResource.Handler),        "Handler"}
29430082d0cSmyers };
29530082d0cSmyers 
29630082d0cSmyers static ACPI_EXDUMP_INFO     AcpiExDumpProcessor[7] =
29730082d0cSmyers {
29830082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpProcessor),      NULL},
299db2bae30SDana Myers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Processor.ProcId),             "Processor ID"},
300db2bae30SDana Myers     {ACPI_EXD_UINT8 ,   ACPI_EXD_OFFSET (Processor.Length),             "Length"},
30130082d0cSmyers     {ACPI_EXD_ADDRESS,  ACPI_EXD_OFFSET (Processor.Address),            "Address"},
3027b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Processor.NotifyList[0]),      "System Notify"},
3037b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Processor.NotifyList[1]),      "Device Notify"},
30430082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Processor.Handler),            "Handler"}
30530082d0cSmyers };
30630082d0cSmyers 
30730082d0cSmyers static ACPI_EXDUMP_INFO     AcpiExDumpThermal[4] =
30830082d0cSmyers {
30930082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpThermal),        NULL},
3107b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (ThermalZone.NotifyList[0]),    "System Notify"},
3117b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (ThermalZone.NotifyList[1]),    "Device Notify"},
31230082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (ThermalZone.Handler),          "Handler"}
31330082d0cSmyers };
31430082d0cSmyers 
31530082d0cSmyers static ACPI_EXDUMP_INFO     AcpiExDumpBufferField[3] =
31630082d0cSmyers {
31730082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpBufferField),    NULL},
31830082d0cSmyers     {ACPI_EXD_FIELD,    0,                                              NULL},
31930082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (BufferField.BufferObj),        "Buffer Object"}
32030082d0cSmyers };
32130082d0cSmyers 
3227b1019a6SJerry Jelinek static ACPI_EXDUMP_INFO     AcpiExDumpRegionField[5] =
32330082d0cSmyers {
32430082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpRegionField),    NULL},
32530082d0cSmyers     {ACPI_EXD_FIELD,    0,                                              NULL},
3267b1019a6SJerry Jelinek     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Field.AccessLength),           "AccessLength"},
3277b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Field.RegionObj),              "Region Object"},
3287b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Field.ResourceBuffer),         "ResourceBuffer"}
32930082d0cSmyers };
33030082d0cSmyers 
33130082d0cSmyers static ACPI_EXDUMP_INFO     AcpiExDumpBankField[5] =
33230082d0cSmyers {
33330082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField),      NULL},
33430082d0cSmyers     {ACPI_EXD_FIELD,    0,                                              NULL},
33530082d0cSmyers     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (BankField.Value),              "Value"},
33630082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (BankField.RegionObj),          "Region Object"},
33730082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (BankField.BankObj),            "Bank Object"}
33830082d0cSmyers };
33930082d0cSmyers 
34030082d0cSmyers static ACPI_EXDUMP_INFO     AcpiExDumpIndexField[5] =
34130082d0cSmyers {
34230082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField),      NULL},
34330082d0cSmyers     {ACPI_EXD_FIELD,    0,                                              NULL},
34430082d0cSmyers     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (IndexField.Value),             "Value"},
34530082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (IndexField.IndexObj),          "Index Object"},
34630082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (IndexField.DataObj),           "Data Object"}
34730082d0cSmyers };
34830082d0cSmyers 
3497b1019a6SJerry Jelinek static ACPI_EXDUMP_INFO     AcpiExDumpReference[9] =
35030082d0cSmyers {
35130082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpReference),       NULL},
352db2bae30SDana Myers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Reference.Class),              "Class"},
35330082d0cSmyers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Reference.TargetType),         "Target Type"},
354db2bae30SDana Myers     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Reference.Value),              "Value"},
35530082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Reference.Object),             "Object Desc"},
3567b1019a6SJerry Jelinek     {ACPI_EXD_NODE,     ACPI_EXD_OFFSET (Reference.Node),               "Node"},
35730082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Reference.Where),              "Where"},
3587b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Reference.IndexPointer),       "Index Pointer"},
35930082d0cSmyers     {ACPI_EXD_REFERENCE,0,                                              NULL}
36030082d0cSmyers };
36130082d0cSmyers 
36230082d0cSmyers static ACPI_EXDUMP_INFO     AcpiExDumpAddressHandler[6] =
36330082d0cSmyers {
36430082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpAddressHandler), NULL},
36530082d0cSmyers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (AddressSpace.SpaceId),         "Space Id"},
3667b1019a6SJerry Jelinek     {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (AddressSpace.Next),            "Next"},
3677b1019a6SJerry Jelinek     {ACPI_EXD_RGN_LIST, ACPI_EXD_OFFSET (AddressSpace.RegionList),      "Region List"},
3687b1019a6SJerry Jelinek     {ACPI_EXD_NODE,     ACPI_EXD_OFFSET (AddressSpace.Node),            "Node"},
36930082d0cSmyers     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (AddressSpace.Context),         "Context"}
37030082d0cSmyers };
37130082d0cSmyers 
3727b1019a6SJerry Jelinek static ACPI_EXDUMP_INFO     AcpiExDumpNotify[7] =
37330082d0cSmyers {
37430082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpNotify),         NULL},
3757b1019a6SJerry Jelinek     {ACPI_EXD_NODE,     ACPI_EXD_OFFSET (Notify.Node),                  "Node"},
3767b1019a6SJerry Jelinek     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Notify.HandlerType),           "Handler Type"},
3777b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Notify.Handler),               "Handler"},
3787b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Notify.Context),               "Context"},
3797b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Notify.Next[0]),               "Next System Notify"},
3807b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Notify.Next[1]),               "Next Device Notify"}
3817b1019a6SJerry Jelinek };
3827b1019a6SJerry Jelinek 
3837b1019a6SJerry Jelinek static ACPI_EXDUMP_INFO     AcpiExDumpExtra[6] =
3847b1019a6SJerry Jelinek {
3857b1019a6SJerry Jelinek     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpExtra),          NULL},
3867b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Extra.Method_REG),             "_REG Method"},
3877b1019a6SJerry Jelinek     {ACPI_EXD_NODE,     ACPI_EXD_OFFSET (Extra.ScopeNode),              "Scope Node"},
3887b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Extra.RegionContext),          "Region Context"},
3897b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Extra.AmlStart),               "Aml Start"},
3907b1019a6SJerry Jelinek     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (Extra.AmlLength),              "Aml Length"}
39130082d0cSmyers };
39230082d0cSmyers 
3937b1019a6SJerry Jelinek static ACPI_EXDUMP_INFO     AcpiExDumpData[3] =
3947b1019a6SJerry Jelinek {
3957b1019a6SJerry Jelinek     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpData),           NULL},
3967b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Data.Handler),                 "Handler"},
3977b1019a6SJerry Jelinek     {ACPI_EXD_POINTER,  ACPI_EXD_OFFSET (Data.Pointer),                 "Raw Data"}
3987b1019a6SJerry Jelinek };
39930082d0cSmyers 
40030082d0cSmyers /* Miscellaneous tables */
40130082d0cSmyers 
4027b1019a6SJerry Jelinek static ACPI_EXDUMP_INFO     AcpiExDumpCommon[5] =
40330082d0cSmyers {
40430082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpCommon),         NULL},
40530082d0cSmyers     {ACPI_EXD_TYPE ,    0,                                              NULL},
40630082d0cSmyers     {ACPI_EXD_UINT16,   ACPI_EXD_OFFSET (Common.ReferenceCount),        "Reference Count"},
4077b1019a6SJerry Jelinek     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (Common.Flags),                 "Flags"},
4087b1019a6SJerry Jelinek     {ACPI_EXD_LIST,     ACPI_EXD_OFFSET (Common.NextObject),            "Object List"}
40930082d0cSmyers };
41030082d0cSmyers 
41130082d0cSmyers static ACPI_EXDUMP_INFO     AcpiExDumpFieldCommon[7] =
41230082d0cSmyers {
41330082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpFieldCommon),    NULL},
41430082d0cSmyers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (CommonField.FieldFlags),       "Field Flags"},
41530082d0cSmyers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (CommonField.AccessByteWidth),  "Access Byte Width"},
41630082d0cSmyers     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (CommonField.BitLength),        "Bit Length"},
41730082d0cSmyers     {ACPI_EXD_UINT8,    ACPI_EXD_OFFSET (CommonField.StartFieldBitOffset),"Field Bit Offset"},
41830082d0cSmyers     {ACPI_EXD_UINT32,   ACPI_EXD_OFFSET (CommonField.BaseByteOffset),   "Base Byte Offset"},
4197b1019a6SJerry Jelinek     {ACPI_EXD_NODE,     ACPI_EXD_OFFSET (CommonField.Node),             "Parent Node"}
42030082d0cSmyers };
42130082d0cSmyers 
4227b1019a6SJerry Jelinek static ACPI_EXDUMP_INFO     AcpiExDumpNode[7] =
42330082d0cSmyers {
42430082d0cSmyers     {ACPI_EXD_INIT,     ACPI_EXD_TABLE_SIZE (AcpiExDumpNode),           NULL},
42530082d0cSmyers     {ACPI_EXD_UINT8,    ACPI_EXD_NSOFFSET (Flags),                      "Flags"},
42630082d0cSmyers     {ACPI_EXD_UINT8,    ACPI_EXD_NSOFFSET (OwnerId),                    "Owner Id"},
4277b1019a6SJerry Jelinek     {ACPI_EXD_LIST,     ACPI_EXD_NSOFFSET (Object),                     "Object List"},
4287b1019a6SJerry Jelinek     {ACPI_EXD_NODE,     ACPI_EXD_NSOFFSET (Parent),                     "Parent"},
4297b1019a6SJerry Jelinek     {ACPI_EXD_NODE,     ACPI_EXD_NSOFFSET (Child),                      "Child"},
4307b1019a6SJerry Jelinek     {ACPI_EXD_NODE,     ACPI_EXD_NSOFFSET (Peer),                       "Peer"}
43130082d0cSmyers };
43230082d0cSmyers 
43330082d0cSmyers 
43430082d0cSmyers /* Dispatch table, indexed by object type */
43530082d0cSmyers 
43630082d0cSmyers static ACPI_EXDUMP_INFO     *AcpiExDumpInfo[] =
43730082d0cSmyers {
43830082d0cSmyers     NULL,
43930082d0cSmyers     AcpiExDumpInteger,
44030082d0cSmyers     AcpiExDumpString,
44130082d0cSmyers     AcpiExDumpBuffer,
44230082d0cSmyers     AcpiExDumpPackage,
44330082d0cSmyers     NULL,
44430082d0cSmyers     AcpiExDumpDevice,
44530082d0cSmyers     AcpiExDumpEvent,
44630082d0cSmyers     AcpiExDumpMethod,
44730082d0cSmyers     AcpiExDumpMutex,
44830082d0cSmyers     AcpiExDumpRegion,
44930082d0cSmyers     AcpiExDumpPower,
45030082d0cSmyers     AcpiExDumpProcessor,
45130082d0cSmyers     AcpiExDumpThermal,
45230082d0cSmyers     AcpiExDumpBufferField,
45330082d0cSmyers     NULL,
45430082d0cSmyers     NULL,
45530082d0cSmyers     AcpiExDumpRegionField,
45630082d0cSmyers     AcpiExDumpBankField,
45730082d0cSmyers     AcpiExDumpIndexField,
45830082d0cSmyers     AcpiExDumpReference,
45930082d0cSmyers     NULL,
46030082d0cSmyers     NULL,
46130082d0cSmyers     AcpiExDumpNotify,
46230082d0cSmyers     AcpiExDumpAddressHandler,
46330082d0cSmyers     NULL,
46430082d0cSmyers     NULL,
4657b1019a6SJerry Jelinek     NULL,
4667b1019a6SJerry Jelinek     AcpiExDumpExtra,
4677b1019a6SJerry Jelinek     AcpiExDumpData
46830082d0cSmyers };
46930082d0cSmyers 
47030082d0cSmyers 
47130082d0cSmyers /*******************************************************************************
47230082d0cSmyers  *
47330082d0cSmyers  * FUNCTION:    AcpiExDumpObject
47430082d0cSmyers  *
47530082d0cSmyers  * PARAMETERS:  ObjDesc             - Descriptor to dump
47630082d0cSmyers  *              Info                - Info table corresponding to this object
47730082d0cSmyers  *                                    type
47830082d0cSmyers  *
47930082d0cSmyers  * RETURN:      None
48030082d0cSmyers  *
48130082d0cSmyers  * DESCRIPTION: Walk the info table for this object
48230082d0cSmyers  *
48330082d0cSmyers  ******************************************************************************/
48430082d0cSmyers 
48530082d0cSmyers static void
AcpiExDumpObject(ACPI_OPERAND_OBJECT * ObjDesc,ACPI_EXDUMP_INFO * Info)48630082d0cSmyers AcpiExDumpObject (
48730082d0cSmyers     ACPI_OPERAND_OBJECT     *ObjDesc,
48830082d0cSmyers     ACPI_EXDUMP_INFO        *Info)
48930082d0cSmyers {
49030082d0cSmyers     UINT8                   *Target;
4917b1019a6SJerry Jelinek     const char              *Name;
49230082d0cSmyers     UINT8                   Count;
4937b1019a6SJerry Jelinek     ACPI_OPERAND_OBJECT     *Start;
4947b1019a6SJerry Jelinek     ACPI_OPERAND_OBJECT     *Data = NULL;
4957b1019a6SJerry Jelinek     ACPI_OPERAND_OBJECT     *Next;
4967b1019a6SJerry Jelinek     ACPI_NAMESPACE_NODE     *Node;
49730082d0cSmyers 
49830082d0cSmyers 
49930082d0cSmyers     if (!Info)
50030082d0cSmyers     {
50130082d0cSmyers         AcpiOsPrintf (
50230082d0cSmyers             "ExDumpObject: Display not implemented for object type %s\n",
50330082d0cSmyers             AcpiUtGetObjectTypeName (ObjDesc));
50430082d0cSmyers         return;
50530082d0cSmyers     }
50630082d0cSmyers 
50730082d0cSmyers     /* First table entry must contain the table length (# of table entries) */
50830082d0cSmyers 
50930082d0cSmyers     Count = Info->Offset;
51030082d0cSmyers 
51130082d0cSmyers     while (Count)
51230082d0cSmyers     {
513*35786f68SRobert Mustacchi         if (!ObjDesc)
514*35786f68SRobert Mustacchi         {
515*35786f68SRobert Mustacchi             return;
516*35786f68SRobert Mustacchi         }
517*35786f68SRobert Mustacchi 
51830082d0cSmyers         Target = ACPI_ADD_PTR (UINT8, ObjDesc, Info->Offset);
51930082d0cSmyers         Name = Info->Name;
52030082d0cSmyers 
52130082d0cSmyers         switch (Info->Opcode)
52230082d0cSmyers         {
52330082d0cSmyers         case ACPI_EXD_INIT:
5247b1019a6SJerry Jelinek 
52530082d0cSmyers             break;
52630082d0cSmyers 
52730082d0cSmyers         case ACPI_EXD_TYPE:
528aa2aa9a6SDana Myers 
5297b1019a6SJerry Jelinek             AcpiOsPrintf ("%20s : %2.2X [%s]\n", "Type",
530*35786f68SRobert Mustacchi                 ObjDesc->Common.Type,
531*35786f68SRobert Mustacchi                 AcpiUtGetObjectTypeName (ObjDesc));
53230082d0cSmyers             break;
53330082d0cSmyers 
53430082d0cSmyers         case ACPI_EXD_UINT8:
53530082d0cSmyers 
53630082d0cSmyers             AcpiOsPrintf ("%20s : %2.2X\n", Name, *Target);
53730082d0cSmyers             break;
53830082d0cSmyers 
53930082d0cSmyers         case ACPI_EXD_UINT16:
54030082d0cSmyers 
54130082d0cSmyers             AcpiOsPrintf ("%20s : %4.4X\n", Name, ACPI_GET16 (Target));
54230082d0cSmyers             break;
54330082d0cSmyers 
54430082d0cSmyers         case ACPI_EXD_UINT32:
54530082d0cSmyers 
54630082d0cSmyers             AcpiOsPrintf ("%20s : %8.8X\n", Name, ACPI_GET32 (Target));
54730082d0cSmyers             break;
54830082d0cSmyers 
54930082d0cSmyers         case ACPI_EXD_UINT64:
55030082d0cSmyers 
55130082d0cSmyers             AcpiOsPrintf ("%20s : %8.8X%8.8X\n", "Value",
552aa2aa9a6SDana Myers                 ACPI_FORMAT_UINT64 (ACPI_GET64 (Target)));
55330082d0cSmyers             break;
55430082d0cSmyers 
55530082d0cSmyers         case ACPI_EXD_POINTER:
55630082d0cSmyers         case ACPI_EXD_ADDRESS:
55730082d0cSmyers 
558db2bae30SDana Myers             AcpiExOutPointer (Name, *ACPI_CAST_PTR (void *, Target));
55930082d0cSmyers             break;
56030082d0cSmyers 
56130082d0cSmyers         case ACPI_EXD_STRING:
56230082d0cSmyers 
56330082d0cSmyers             AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
56430082d0cSmyers             AcpiOsPrintf ("\n");
56530082d0cSmyers             break;
56630082d0cSmyers 
56730082d0cSmyers         case ACPI_EXD_BUFFER:
56830082d0cSmyers 
5697b1019a6SJerry Jelinek             ACPI_DUMP_BUFFER (
5707b1019a6SJerry Jelinek                 ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length);
57130082d0cSmyers             break;
57230082d0cSmyers 
57330082d0cSmyers         case ACPI_EXD_PACKAGE:
57430082d0cSmyers 
57530082d0cSmyers             /* Dump the package contents */
57630082d0cSmyers 
57730082d0cSmyers             AcpiOsPrintf ("\nPackage Contents:\n");
57830082d0cSmyers             AcpiExDumpPackageObj (ObjDesc, 0, 0);
57930082d0cSmyers             break;
58030082d0cSmyers 
58130082d0cSmyers         case ACPI_EXD_FIELD:
58230082d0cSmyers 
58330082d0cSmyers             AcpiExDumpObject (ObjDesc, AcpiExDumpFieldCommon);
58430082d0cSmyers             break;
58530082d0cSmyers 
58630082d0cSmyers         case ACPI_EXD_REFERENCE:
58730082d0cSmyers 
5887b1019a6SJerry Jelinek             AcpiExOutString ("Class Name", AcpiUtGetReferenceName (ObjDesc));
58930082d0cSmyers             AcpiExDumpReferenceObj (ObjDesc);
59030082d0cSmyers             break;
59130082d0cSmyers 
5927b1019a6SJerry Jelinek         case ACPI_EXD_LIST:
5937b1019a6SJerry Jelinek 
5947b1019a6SJerry Jelinek             Start = *ACPI_CAST_PTR (void *, Target);
5957b1019a6SJerry Jelinek             Next = Start;
5967b1019a6SJerry Jelinek 
597*35786f68SRobert Mustacchi             AcpiOsPrintf ("%20s : %p ", Name, Next);
5987b1019a6SJerry Jelinek             if (Next)
5997b1019a6SJerry Jelinek             {
600*35786f68SRobert Mustacchi                 AcpiOsPrintf ("%s (Type %2.2X)",
6017b1019a6SJerry Jelinek                     AcpiUtGetObjectTypeName (Next), Next->Common.Type);
6027b1019a6SJerry Jelinek 
6037b1019a6SJerry Jelinek                 while (Next->Common.NextObject)
6047b1019a6SJerry Jelinek                 {
6057b1019a6SJerry Jelinek                     if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
6067b1019a6SJerry Jelinek                         !Data)
6077b1019a6SJerry Jelinek                     {
6087b1019a6SJerry Jelinek                         Data = Next;
6097b1019a6SJerry Jelinek                     }
6107b1019a6SJerry Jelinek 
6117b1019a6SJerry Jelinek                     Next = Next->Common.NextObject;
6127b1019a6SJerry Jelinek                     AcpiOsPrintf ("->%p(%s %2.2X)", Next,
6137b1019a6SJerry Jelinek                         AcpiUtGetObjectTypeName (Next), Next->Common.Type);
6147b1019a6SJerry Jelinek 
6157b1019a6SJerry Jelinek                     if ((Next == Start) || (Next == Data))
6167b1019a6SJerry Jelinek                     {
6177b1019a6SJerry Jelinek                         AcpiOsPrintf (
6187b1019a6SJerry Jelinek                             "\n**** Error: Object list appears to be circular linked");
6197b1019a6SJerry Jelinek                         break;
6207b1019a6SJerry Jelinek                     }
6217b1019a6SJerry Jelinek                 }
6227b1019a6SJerry Jelinek             }
623*35786f68SRobert Mustacchi             else
624*35786f68SRobert Mustacchi             {
625*35786f68SRobert Mustacchi                 AcpiOsPrintf ("- No attached objects");
626*35786f68SRobert Mustacchi             }
6277b1019a6SJerry Jelinek 
6287b1019a6SJerry Jelinek             AcpiOsPrintf ("\n");
6297b1019a6SJerry Jelinek             break;
6307b1019a6SJerry Jelinek 
6317b1019a6SJerry Jelinek         case ACPI_EXD_HDLR_LIST:
6327b1019a6SJerry Jelinek 
6337b1019a6SJerry Jelinek             Start = *ACPI_CAST_PTR (void *, Target);
6347b1019a6SJerry Jelinek             Next = Start;
6357b1019a6SJerry Jelinek 
6367b1019a6SJerry Jelinek             AcpiOsPrintf ("%20s : %p", Name, Next);
6377b1019a6SJerry Jelinek             if (Next)
6387b1019a6SJerry Jelinek             {
6397b1019a6SJerry Jelinek                 AcpiOsPrintf ("(%s %2.2X)",
6407b1019a6SJerry Jelinek                     AcpiUtGetObjectTypeName (Next),
6417b1019a6SJerry Jelinek                     Next->AddressSpace.SpaceId);
6427b1019a6SJerry Jelinek 
6437b1019a6SJerry Jelinek                 while (Next->AddressSpace.Next)
6447b1019a6SJerry Jelinek                 {
6457b1019a6SJerry Jelinek                     if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
6467b1019a6SJerry Jelinek                         !Data)
6477b1019a6SJerry Jelinek                     {
6487b1019a6SJerry Jelinek                         Data = Next;
6497b1019a6SJerry Jelinek                     }
6507b1019a6SJerry Jelinek 
6517b1019a6SJerry Jelinek                     Next = Next->AddressSpace.Next;
6527b1019a6SJerry Jelinek                     AcpiOsPrintf ("->%p(%s %2.2X)", Next,
6537b1019a6SJerry Jelinek                         AcpiUtGetObjectTypeName (Next),
6547b1019a6SJerry Jelinek                         Next->AddressSpace.SpaceId);
6557b1019a6SJerry Jelinek 
6567b1019a6SJerry Jelinek                     if ((Next == Start) || (Next == Data))
6577b1019a6SJerry Jelinek                     {
6587b1019a6SJerry Jelinek                         AcpiOsPrintf (
6597b1019a6SJerry Jelinek                             "\n**** Error: Handler list appears to be circular linked");
6607b1019a6SJerry Jelinek                         break;
6617b1019a6SJerry Jelinek                     }
6627b1019a6SJerry Jelinek                 }
6637b1019a6SJerry Jelinek             }
6647b1019a6SJerry Jelinek 
6657b1019a6SJerry Jelinek             AcpiOsPrintf ("\n");
6667b1019a6SJerry Jelinek             break;
6677b1019a6SJerry Jelinek 
6687b1019a6SJerry Jelinek         case ACPI_EXD_RGN_LIST:
6697b1019a6SJerry Jelinek 
6707b1019a6SJerry Jelinek             Start = *ACPI_CAST_PTR (void *, Target);
6717b1019a6SJerry Jelinek             Next = Start;
6727b1019a6SJerry Jelinek 
6737b1019a6SJerry Jelinek             AcpiOsPrintf ("%20s : %p", Name, Next);
6747b1019a6SJerry Jelinek             if (Next)
6757b1019a6SJerry Jelinek             {
6767b1019a6SJerry Jelinek                 AcpiOsPrintf ("(%s %2.2X)",
6777b1019a6SJerry Jelinek                     AcpiUtGetObjectTypeName (Next), Next->Common.Type);
6787b1019a6SJerry Jelinek 
6797b1019a6SJerry Jelinek                 while (Next->Region.Next)
6807b1019a6SJerry Jelinek                 {
6817b1019a6SJerry Jelinek                     if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
6827b1019a6SJerry Jelinek                         !Data)
6837b1019a6SJerry Jelinek                     {
6847b1019a6SJerry Jelinek                         Data = Next;
6857b1019a6SJerry Jelinek                     }
6867b1019a6SJerry Jelinek 
6877b1019a6SJerry Jelinek                     Next = Next->Region.Next;
6887b1019a6SJerry Jelinek                     AcpiOsPrintf ("->%p(%s %2.2X)", Next,
6897b1019a6SJerry Jelinek                         AcpiUtGetObjectTypeName (Next), Next->Common.Type);
6907b1019a6SJerry Jelinek 
6917b1019a6SJerry Jelinek                     if ((Next == Start) || (Next == Data))
6927b1019a6SJerry Jelinek                     {
6937b1019a6SJerry Jelinek                         AcpiOsPrintf (
6947b1019a6SJerry Jelinek                             "\n**** Error: Region list appears to be circular linked");
6957b1019a6SJerry Jelinek                         break;
6967b1019a6SJerry Jelinek                     }
6977b1019a6SJerry Jelinek                 }
6987b1019a6SJerry Jelinek             }
6997b1019a6SJerry Jelinek 
7007b1019a6SJerry Jelinek             AcpiOsPrintf ("\n");
7017b1019a6SJerry Jelinek             break;
7027b1019a6SJerry Jelinek 
7037b1019a6SJerry Jelinek         case ACPI_EXD_NODE:
7047b1019a6SJerry Jelinek 
7057b1019a6SJerry Jelinek             Node = *ACPI_CAST_PTR (ACPI_NAMESPACE_NODE *, Target);
7067b1019a6SJerry Jelinek 
7077b1019a6SJerry Jelinek             AcpiOsPrintf ("%20s : %p", Name, Node);
7087b1019a6SJerry Jelinek             if (Node)
7097b1019a6SJerry Jelinek             {
7107b1019a6SJerry Jelinek                 AcpiOsPrintf (" [%4.4s]", Node->Name.Ascii);
7117b1019a6SJerry Jelinek             }
7127b1019a6SJerry Jelinek             AcpiOsPrintf ("\n");
7137b1019a6SJerry Jelinek             break;
7147b1019a6SJerry Jelinek 
71530082d0cSmyers         default:
716aa2aa9a6SDana Myers 
717aa2aa9a6SDana Myers             AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n",
718aa2aa9a6SDana Myers                 Info->Opcode);
71930082d0cSmyers             return;
72030082d0cSmyers         }
72130082d0cSmyers 
72230082d0cSmyers         Info++;
72330082d0cSmyers         Count--;
72430082d0cSmyers     }
72530082d0cSmyers }
72630082d0cSmyers 
72730082d0cSmyers 
7287c478bd9Sstevel@tonic-gate /*******************************************************************************
7297c478bd9Sstevel@tonic-gate  *
7307c478bd9Sstevel@tonic-gate  * FUNCTION:    AcpiExDumpOperand
7317c478bd9Sstevel@tonic-gate  *
7327c478bd9Sstevel@tonic-gate  * PARAMETERS:  *ObjDesc        - Pointer to entry to be dumped
7337c478bd9Sstevel@tonic-gate  *              Depth           - Current nesting depth
7347c478bd9Sstevel@tonic-gate  *
7357c478bd9Sstevel@tonic-gate  * RETURN:      None
7367c478bd9Sstevel@tonic-gate  *
7377c478bd9Sstevel@tonic-gate  * DESCRIPTION: Dump an operand object
7387c478bd9Sstevel@tonic-gate  *
7397c478bd9Sstevel@tonic-gate  ******************************************************************************/
7407c478bd9Sstevel@tonic-gate 
7417c478bd9Sstevel@tonic-gate void
AcpiExDumpOperand(ACPI_OPERAND_OBJECT * ObjDesc,UINT32 Depth)7427c478bd9Sstevel@tonic-gate AcpiExDumpOperand (
7437c478bd9Sstevel@tonic-gate     ACPI_OPERAND_OBJECT     *ObjDesc,
7447c478bd9Sstevel@tonic-gate     UINT32                  Depth)
7457c478bd9Sstevel@tonic-gate {
7467c478bd9Sstevel@tonic-gate     UINT32                  Length;
7477c478bd9Sstevel@tonic-gate     UINT32                  Index;
7487c478bd9Sstevel@tonic-gate 
7497c478bd9Sstevel@tonic-gate 
750*35786f68SRobert Mustacchi     ACPI_FUNCTION_NAME (ExDumpOperand);
7517c478bd9Sstevel@tonic-gate 
7527c478bd9Sstevel@tonic-gate 
7537b1019a6SJerry Jelinek     /* Check if debug output enabled */
7547b1019a6SJerry Jelinek 
7557b1019a6SJerry Jelinek     if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_EXEC, _COMPONENT))
7567c478bd9Sstevel@tonic-gate     {
7577c478bd9Sstevel@tonic-gate         return;
7587c478bd9Sstevel@tonic-gate     }
7597c478bd9Sstevel@tonic-gate 
7607c478bd9Sstevel@tonic-gate     if (!ObjDesc)
7617c478bd9Sstevel@tonic-gate     {
7627c478bd9Sstevel@tonic-gate         /* This could be a null element of a package */
7637c478bd9Sstevel@tonic-gate 
7647c478bd9Sstevel@tonic-gate         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Null Object Descriptor\n"));
7657c478bd9Sstevel@tonic-gate         return;
7667c478bd9Sstevel@tonic-gate     }
7677c478bd9Sstevel@tonic-gate 
7687c478bd9Sstevel@tonic-gate     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
7697c478bd9Sstevel@tonic-gate     {
770450d6964Smyers         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p Namespace Node: ", ObjDesc));
7717c478bd9Sstevel@tonic-gate         ACPI_DUMP_ENTRY (ObjDesc, ACPI_LV_EXEC);
7727c478bd9Sstevel@tonic-gate         return;
7737c478bd9Sstevel@tonic-gate     }
7747c478bd9Sstevel@tonic-gate 
7757c478bd9Sstevel@tonic-gate     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
7767c478bd9Sstevel@tonic-gate     {
7777c478bd9Sstevel@tonic-gate         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
7787c478bd9Sstevel@tonic-gate             "%p is not a node or operand object: [%s]\n",
7797c478bd9Sstevel@tonic-gate             ObjDesc, AcpiUtGetDescriptorName (ObjDesc)));
7807c478bd9Sstevel@tonic-gate         ACPI_DUMP_BUFFER (ObjDesc, sizeof (ACPI_OPERAND_OBJECT));
7817c478bd9Sstevel@tonic-gate         return;
7827c478bd9Sstevel@tonic-gate     }
7837c478bd9Sstevel@tonic-gate 
7847c478bd9Sstevel@tonic-gate     /* ObjDesc is a valid object */
7857c478bd9Sstevel@tonic-gate 
7867c478bd9Sstevel@tonic-gate     if (Depth > 0)
7877c478bd9Sstevel@tonic-gate     {
788*35786f68SRobert Mustacchi         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%*s[%u] %p Refs=%u ",
789*35786f68SRobert Mustacchi             Depth, " ", Depth, ObjDesc, ObjDesc->Common.ReferenceCount));
7907c478bd9Sstevel@tonic-gate     }
7917c478bd9Sstevel@tonic-gate     else
7927c478bd9Sstevel@tonic-gate     {
793*35786f68SRobert Mustacchi         ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p Refs=%u ",
794*35786f68SRobert Mustacchi             ObjDesc, ObjDesc->Common.ReferenceCount));
7957c478bd9Sstevel@tonic-gate     }
7967c478bd9Sstevel@tonic-gate 
7977c478bd9Sstevel@tonic-gate     /* Decode object type */
7987c478bd9Sstevel@tonic-gate 
799aa2aa9a6SDana Myers     switch (ObjDesc->Common.Type)
8007c478bd9Sstevel@tonic-gate     {
8017c478bd9Sstevel@tonic-gate     case ACPI_TYPE_LOCAL_REFERENCE:
8027c478bd9Sstevel@tonic-gate 
8037b1019a6SJerry Jelinek         AcpiOsPrintf ("Reference: [%s] ",
8047b1019a6SJerry Jelinek             AcpiUtGetReferenceName (ObjDesc));
805db2bae30SDana Myers 
806db2bae30SDana Myers         switch (ObjDesc->Reference.Class)
8077c478bd9Sstevel@tonic-gate         {
808db2bae30SDana Myers         case ACPI_REFCLASS_DEBUG:
8097c478bd9Sstevel@tonic-gate 
810db2bae30SDana Myers             AcpiOsPrintf ("\n");
8117c478bd9Sstevel@tonic-gate             break;
8127c478bd9Sstevel@tonic-gate 
813db2bae30SDana Myers         case ACPI_REFCLASS_INDEX:
8147c478bd9Sstevel@tonic-gate 
815db2bae30SDana Myers             AcpiOsPrintf ("%p\n", ObjDesc->Reference.Object);
8167c478bd9Sstevel@tonic-gate             break;
8177c478bd9Sstevel@tonic-gate 
818db2bae30SDana Myers         case ACPI_REFCLASS_TABLE:
8197c478bd9Sstevel@tonic-gate 
820db2bae30SDana Myers             AcpiOsPrintf ("Table Index %X\n", ObjDesc->Reference.Value);
8217c478bd9Sstevel@tonic-gate             break;
8227c478bd9Sstevel@tonic-gate 
823db2bae30SDana Myers         case ACPI_REFCLASS_REFOF:
8247c478bd9Sstevel@tonic-gate 
825db2bae30SDana Myers             AcpiOsPrintf ("%p [%s]\n", ObjDesc->Reference.Object,
826db2bae30SDana Myers                 AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
827db2bae30SDana Myers                     ObjDesc->Reference.Object)->Common.Type));
8287c478bd9Sstevel@tonic-gate             break;
8297c478bd9Sstevel@tonic-gate 
830aa2aa9a6SDana Myers         case ACPI_REFCLASS_NAME:
8317c478bd9Sstevel@tonic-gate 
832*35786f68SRobert Mustacchi             AcpiUtRepairName (ObjDesc->Reference.Node->Name.Ascii);
833*35786f68SRobert Mustacchi             AcpiOsPrintf ("- [%4.4s] (Node %p)\n",
834*35786f68SRobert Mustacchi                 ObjDesc->Reference.Node->Name.Ascii,
835*35786f68SRobert Mustacchi                 ObjDesc->Reference.Node);
8367c478bd9Sstevel@tonic-gate             break;
8377c478bd9Sstevel@tonic-gate 
838aa2aa9a6SDana Myers         case ACPI_REFCLASS_ARG:
839db2bae30SDana Myers         case ACPI_REFCLASS_LOCAL:
8407c478bd9Sstevel@tonic-gate 
841aa2aa9a6SDana Myers             AcpiOsPrintf ("%X\n", ObjDesc->Reference.Value);
8427c478bd9Sstevel@tonic-gate             break;
8437c478bd9Sstevel@tonic-gate 
844db2bae30SDana Myers         default:    /* Unknown reference class */
8457c478bd9Sstevel@tonic-gate 
846db2bae30SDana Myers             AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class);
8477c478bd9Sstevel@tonic-gate             break;
8487c478bd9Sstevel@tonic-gate         }
8497c478bd9Sstevel@tonic-gate         break;
8507c478bd9Sstevel@tonic-gate 
8517c478bd9Sstevel@tonic-gate     case ACPI_TYPE_BUFFER:
8527c478bd9Sstevel@tonic-gate 
853db2bae30SDana Myers         AcpiOsPrintf ("Buffer length %.2X @ %p\n",
8547c478bd9Sstevel@tonic-gate             ObjDesc->Buffer.Length, ObjDesc->Buffer.Pointer);
8557c478bd9Sstevel@tonic-gate 
8567c478bd9Sstevel@tonic-gate         /* Debug only -- dump the buffer contents */
8577c478bd9Sstevel@tonic-gate 
8587c478bd9Sstevel@tonic-gate         if (ObjDesc->Buffer.Pointer)
8597c478bd9Sstevel@tonic-gate         {
860db2bae30SDana Myers             Length = ObjDesc->Buffer.Length;
861db2bae30SDana Myers             if (Length > 128)
8627c478bd9Sstevel@tonic-gate             {
863db2bae30SDana Myers                 Length = 128;
8647c478bd9Sstevel@tonic-gate             }
865db2bae30SDana Myers 
8667b1019a6SJerry Jelinek             AcpiOsPrintf (
8677b1019a6SJerry Jelinek                 "Buffer Contents: (displaying length 0x%.2X)\n", Length);
868db2bae30SDana Myers             ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, Length);
8697c478bd9Sstevel@tonic-gate         }
8707c478bd9Sstevel@tonic-gate         break;
8717c478bd9Sstevel@tonic-gate 
8727c478bd9Sstevel@tonic-gate     case ACPI_TYPE_INTEGER:
8737c478bd9Sstevel@tonic-gate 
8747c478bd9Sstevel@tonic-gate         AcpiOsPrintf ("Integer %8.8X%8.8X\n",
8757c478bd9Sstevel@tonic-gate             ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
8767c478bd9Sstevel@tonic-gate         break;
8777c478bd9Sstevel@tonic-gate 
8787c478bd9Sstevel@tonic-gate     case ACPI_TYPE_PACKAGE:
8797c478bd9Sstevel@tonic-gate 
8807c478bd9Sstevel@tonic-gate         AcpiOsPrintf ("Package [Len %X] ElementArray %p\n",
8817c478bd9Sstevel@tonic-gate             ObjDesc->Package.Count, ObjDesc->Package.Elements);
8827c478bd9Sstevel@tonic-gate 
8837c478bd9Sstevel@tonic-gate         /*
8847c478bd9Sstevel@tonic-gate          * If elements exist, package element pointer is valid,
8857c478bd9Sstevel@tonic-gate          * and debug_level exceeds 1, dump package's elements.
8867c478bd9Sstevel@tonic-gate          */
8877c478bd9Sstevel@tonic-gate         if (ObjDesc->Package.Count &&
8887c478bd9Sstevel@tonic-gate             ObjDesc->Package.Elements &&
8897c478bd9Sstevel@tonic-gate             AcpiDbgLevel > 1)
8907c478bd9Sstevel@tonic-gate         {
8917c478bd9Sstevel@tonic-gate             for (Index = 0; Index < ObjDesc->Package.Count; Index++)
8927c478bd9Sstevel@tonic-gate             {
8937b1019a6SJerry Jelinek                 AcpiExDumpOperand (
8947b1019a6SJerry Jelinek                     ObjDesc->Package.Elements[Index], Depth + 1);
8957c478bd9Sstevel@tonic-gate             }
8967c478bd9Sstevel@tonic-gate         }
8977c478bd9Sstevel@tonic-gate         break;
8987c478bd9Sstevel@tonic-gate 
8997c478bd9Sstevel@tonic-gate     case ACPI_TYPE_REGION:
9007c478bd9Sstevel@tonic-gate 
9017c478bd9Sstevel@tonic-gate         AcpiOsPrintf ("Region %s (%X)",
9027c478bd9Sstevel@tonic-gate             AcpiUtGetRegionName (ObjDesc->Region.SpaceId),
9037c478bd9Sstevel@tonic-gate             ObjDesc->Region.SpaceId);
9047c478bd9Sstevel@tonic-gate 
9057c478bd9Sstevel@tonic-gate         /*
9067c478bd9Sstevel@tonic-gate          * If the address and length have not been evaluated,
9077c478bd9Sstevel@tonic-gate          * don't print them.
9087c478bd9Sstevel@tonic-gate          */
9097c478bd9Sstevel@tonic-gate         if (!(ObjDesc->Region.Flags & AOPOBJ_DATA_VALID))
9107c478bd9Sstevel@tonic-gate         {
9117c478bd9Sstevel@tonic-gate             AcpiOsPrintf ("\n");
9127c478bd9Sstevel@tonic-gate         }
9137c478bd9Sstevel@tonic-gate         else
9147c478bd9Sstevel@tonic-gate         {
9157c478bd9Sstevel@tonic-gate             AcpiOsPrintf (" base %8.8X%8.8X Length %X\n",
9167b1019a6SJerry Jelinek                 ACPI_FORMAT_UINT64 (ObjDesc->Region.Address),
9177c478bd9Sstevel@tonic-gate                 ObjDesc->Region.Length);
9187c478bd9Sstevel@tonic-gate         }
9197c478bd9Sstevel@tonic-gate         break;
9207c478bd9Sstevel@tonic-gate 
9217c478bd9Sstevel@tonic-gate     case ACPI_TYPE_STRING:
9227c478bd9Sstevel@tonic-gate 
9237c478bd9Sstevel@tonic-gate         AcpiOsPrintf ("String length %X @ %p ",
9247c478bd9Sstevel@tonic-gate             ObjDesc->String.Length,
9257c478bd9Sstevel@tonic-gate             ObjDesc->String.Pointer);
9267c478bd9Sstevel@tonic-gate 
9277c478bd9Sstevel@tonic-gate         AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
9287c478bd9Sstevel@tonic-gate         AcpiOsPrintf ("\n");
9297c478bd9Sstevel@tonic-gate         break;
9307c478bd9Sstevel@tonic-gate 
9317c478bd9Sstevel@tonic-gate     case ACPI_TYPE_LOCAL_BANK_FIELD:
9327c478bd9Sstevel@tonic-gate 
9337c478bd9Sstevel@tonic-gate         AcpiOsPrintf ("BankField\n");
9347c478bd9Sstevel@tonic-gate         break;
9357c478bd9Sstevel@tonic-gate 
9367c478bd9Sstevel@tonic-gate     case ACPI_TYPE_LOCAL_REGION_FIELD:
9377c478bd9Sstevel@tonic-gate 
938aa2aa9a6SDana Myers         AcpiOsPrintf ("RegionField: Bits=%X AccWidth=%X Lock=%X Update=%X at "
939aa2aa9a6SDana Myers             "byte=%X bit=%X of below:\n",
9407c478bd9Sstevel@tonic-gate             ObjDesc->Field.BitLength,
9417c478bd9Sstevel@tonic-gate             ObjDesc->Field.AccessByteWidth,
9427c478bd9Sstevel@tonic-gate             ObjDesc->Field.FieldFlags & AML_FIELD_LOCK_RULE_MASK,
9437c478bd9Sstevel@tonic-gate             ObjDesc->Field.FieldFlags & AML_FIELD_UPDATE_RULE_MASK,
9447c478bd9Sstevel@tonic-gate             ObjDesc->Field.BaseByteOffset,
9457c478bd9Sstevel@tonic-gate             ObjDesc->Field.StartFieldBitOffset);
9467c478bd9Sstevel@tonic-gate 
9477b1019a6SJerry Jelinek         AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth + 1);
9487c478bd9Sstevel@tonic-gate         break;
9497c478bd9Sstevel@tonic-gate 
9507c478bd9Sstevel@tonic-gate     case ACPI_TYPE_LOCAL_INDEX_FIELD:
9517c478bd9Sstevel@tonic-gate 
9527c478bd9Sstevel@tonic-gate         AcpiOsPrintf ("IndexField\n");
9537c478bd9Sstevel@tonic-gate         break;
9547c478bd9Sstevel@tonic-gate 
9557c478bd9Sstevel@tonic-gate     case ACPI_TYPE_BUFFER_FIELD:
9567c478bd9Sstevel@tonic-gate 
957aa2aa9a6SDana Myers         AcpiOsPrintf ("BufferField: %X bits at byte %X bit %X of\n",
9587c478bd9Sstevel@tonic-gate             ObjDesc->BufferField.BitLength,
9597c478bd9Sstevel@tonic-gate             ObjDesc->BufferField.BaseByteOffset,
9607c478bd9Sstevel@tonic-gate             ObjDesc->BufferField.StartFieldBitOffset);
9617c478bd9Sstevel@tonic-gate 
9627c478bd9Sstevel@tonic-gate         if (!ObjDesc->BufferField.BufferObj)
9637c478bd9Sstevel@tonic-gate         {
964186507a7Smyers             ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*NULL*\n"));
9657c478bd9Sstevel@tonic-gate         }
966aa2aa9a6SDana Myers         else if ((ObjDesc->BufferField.BufferObj)->Common.Type !=
9677b1019a6SJerry Jelinek             ACPI_TYPE_BUFFER)
9687c478bd9Sstevel@tonic-gate         {
969186507a7Smyers             AcpiOsPrintf ("*not a Buffer*\n");
9707c478bd9Sstevel@tonic-gate         }
9717c478bd9Sstevel@tonic-gate         else
9727c478bd9Sstevel@tonic-gate         {
9737b1019a6SJerry Jelinek             AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth + 1);
9747c478bd9Sstevel@tonic-gate         }
9757c478bd9Sstevel@tonic-gate         break;
9767c478bd9Sstevel@tonic-gate 
9777c478bd9Sstevel@tonic-gate     case ACPI_TYPE_EVENT:
9787c478bd9Sstevel@tonic-gate 
9797c478bd9Sstevel@tonic-gate         AcpiOsPrintf ("Event\n");
9807c478bd9Sstevel@tonic-gate         break;
9817c478bd9Sstevel@tonic-gate 
9827c478bd9Sstevel@tonic-gate     case ACPI_TYPE_METHOD:
9837c478bd9Sstevel@tonic-gate 
9847c478bd9Sstevel@tonic-gate         AcpiOsPrintf ("Method(%X) @ %p:%X\n",
9857c478bd9Sstevel@tonic-gate             ObjDesc->Method.ParamCount,
9867c478bd9Sstevel@tonic-gate             ObjDesc->Method.AmlStart,
9877c478bd9Sstevel@tonic-gate             ObjDesc->Method.AmlLength);
9887c478bd9Sstevel@tonic-gate         break;
9897c478bd9Sstevel@tonic-gate 
9907c478bd9Sstevel@tonic-gate     case ACPI_TYPE_MUTEX:
9917c478bd9Sstevel@tonic-gate 
9927c478bd9Sstevel@tonic-gate         AcpiOsPrintf ("Mutex\n");
9937c478bd9Sstevel@tonic-gate         break;
9947c478bd9Sstevel@tonic-gate 
9957c478bd9Sstevel@tonic-gate     case ACPI_TYPE_DEVICE:
9967c478bd9Sstevel@tonic-gate 
9977c478bd9Sstevel@tonic-gate         AcpiOsPrintf ("Device\n");
9987c478bd9Sstevel@tonic-gate         break;
9997c478bd9Sstevel@tonic-gate 
10007c478bd9Sstevel@tonic-gate     case ACPI_TYPE_POWER:
10017c478bd9Sstevel@tonic-gate 
10027c478bd9Sstevel@tonic-gate         AcpiOsPrintf ("Power\n");
10037c478bd9Sstevel@tonic-gate         break;
10047c478bd9Sstevel@tonic-gate 
10057c478bd9Sstevel@tonic-gate     case ACPI_TYPE_PROCESSOR:
10067c478bd9Sstevel@tonic-gate 
10077c478bd9Sstevel@tonic-gate         AcpiOsPrintf ("Processor\n");
10087c478bd9Sstevel@tonic-gate         break;
10097c478bd9Sstevel@tonic-gate 
10107c478bd9Sstevel@tonic-gate     case ACPI_TYPE_THERMAL:
10117c478bd9Sstevel@tonic-gate 
10127c478bd9Sstevel@tonic-gate         AcpiOsPrintf ("Thermal\n");
10137c478bd9Sstevel@tonic-gate         break;
10147c478bd9Sstevel@tonic-gate 
10157c478bd9Sstevel@tonic-gate     default:
10167b1019a6SJerry Jelinek 
10177c478bd9Sstevel@tonic-gate         /* Unknown Type */
10187c478bd9Sstevel@tonic-gate 
1019aa2aa9a6SDana Myers         AcpiOsPrintf ("Unknown Type %X\n", ObjDesc->Common.Type);
10207c478bd9Sstevel@tonic-gate         break;
10217c478bd9Sstevel@tonic-gate     }
10227c478bd9Sstevel@tonic-gate 
10237c478bd9Sstevel@tonic-gate     return;
10247c478bd9Sstevel@tonic-gate }
10257c478bd9Sstevel@tonic-gate 
10267c478bd9Sstevel@tonic-gate 
10277c478bd9Sstevel@tonic-gate /*******************************************************************************
10287c478bd9Sstevel@tonic-gate  *
10297c478bd9Sstevel@tonic-gate  * FUNCTION:    AcpiExDumpOperands
10307c478bd9Sstevel@tonic-gate  *
1031db2bae30SDana Myers  * PARAMETERS:  Operands            - A list of Operand objects
1032db2bae30SDana Myers  *              OpcodeName          - AML opcode name
1033db2bae30SDana Myers  *              NumOperands         - Operand count for this opcode
10347c478bd9Sstevel@tonic-gate  *
1035db2bae30SDana Myers  * DESCRIPTION: Dump the operands associated with the opcode
10367c478bd9Sstevel@tonic-gate  *
10377c478bd9Sstevel@tonic-gate  ******************************************************************************/
10387c478bd9Sstevel@tonic-gate 
10397c478bd9Sstevel@tonic-gate void
AcpiExDumpOperands(ACPI_OPERAND_OBJECT ** Operands,const char * OpcodeName,UINT32 NumOperands)10407c478bd9Sstevel@tonic-gate AcpiExDumpOperands (
10417c478bd9Sstevel@tonic-gate     ACPI_OPERAND_OBJECT     **Operands,
1042db2bae30SDana Myers     const char              *OpcodeName,
1043db2bae30SDana Myers     UINT32                  NumOperands)
10447c478bd9Sstevel@tonic-gate {
1045*35786f68SRobert Mustacchi     ACPI_FUNCTION_TRACE (ExDumpOperands);
10467c478bd9Sstevel@tonic-gate 
10477c478bd9Sstevel@tonic-gate 
1048db2bae30SDana Myers     if (!OpcodeName)
10497c478bd9Sstevel@tonic-gate     {
1050db2bae30SDana Myers         OpcodeName = "UNKNOWN";
10517c478bd9Sstevel@tonic-gate     }
10527c478bd9Sstevel@tonic-gate 
10537c478bd9Sstevel@tonic-gate     ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
105426f3cdf0SGordon Ross         "**** Start operand dump for opcode [%s], %u operands\n",
1055db2bae30SDana Myers         OpcodeName, NumOperands));
10567c478bd9Sstevel@tonic-gate 
1057db2bae30SDana Myers     if (NumOperands == 0)
10587c478bd9Sstevel@tonic-gate     {
1059db2bae30SDana Myers         NumOperands = 1;
10607c478bd9Sstevel@tonic-gate     }
10617c478bd9Sstevel@tonic-gate 
1062db2bae30SDana Myers     /* Dump the individual operands */
10637c478bd9Sstevel@tonic-gate 
1064db2bae30SDana Myers     while (NumOperands)
10657c478bd9Sstevel@tonic-gate     {
1066db2bae30SDana Myers         AcpiExDumpOperand (*Operands, 0);
1067db2bae30SDana Myers         Operands++;
1068db2bae30SDana Myers         NumOperands--;
10697c478bd9Sstevel@tonic-gate     }
10707c478bd9Sstevel@tonic-gate 
10717c478bd9Sstevel@tonic-gate     ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
1072db2bae30SDana Myers         "**** End operand dump for [%s]\n", OpcodeName));
1073*35786f68SRobert Mustacchi     return_VOID;
10747c478bd9Sstevel@tonic-gate }
10757c478bd9Sstevel@tonic-gate 
10767c478bd9Sstevel@tonic-gate 
10777c478bd9Sstevel@tonic-gate /*******************************************************************************
10787c478bd9Sstevel@tonic-gate  *
10797c478bd9Sstevel@tonic-gate  * FUNCTION:    AcpiExOut* functions
10807c478bd9Sstevel@tonic-gate  *
10817c478bd9Sstevel@tonic-gate  * PARAMETERS:  Title               - Descriptive text
10827c478bd9Sstevel@tonic-gate  *              Value               - Value to be displayed
10837c478bd9Sstevel@tonic-gate  *
10847b1019a6SJerry Jelinek  * DESCRIPTION: Object dump output formatting functions. These functions
10857c478bd9Sstevel@tonic-gate  *              reduce the number of format strings required and keeps them
10867c478bd9Sstevel@tonic-gate  *              all in one place for easy modification.
10877c478bd9Sstevel@tonic-gate  *
10887c478bd9Sstevel@tonic-gate  ******************************************************************************/
10897c478bd9Sstevel@tonic-gate 
10907c478bd9Sstevel@tonic-gate static void
AcpiExOutString(const char * Title,const char * Value)10917c478bd9Sstevel@tonic-gate AcpiExOutString (
10927b1019a6SJerry Jelinek     const char              *Title,
10937b1019a6SJerry Jelinek     const char              *Value)
10947c478bd9Sstevel@tonic-gate {
10957c478bd9Sstevel@tonic-gate     AcpiOsPrintf ("%20s : %s\n", Title, Value);
10967c478bd9Sstevel@tonic-gate }
10977c478bd9Sstevel@tonic-gate 
10987c478bd9Sstevel@tonic-gate static void
AcpiExOutPointer(const char * Title,const void * Value)10997c478bd9Sstevel@tonic-gate AcpiExOutPointer (
11007b1019a6SJerry Jelinek     const char              *Title,
11017b1019a6SJerry Jelinek     const void              *Value)
11027c478bd9Sstevel@tonic-gate {
11037c478bd9Sstevel@tonic-gate     AcpiOsPrintf ("%20s : %p\n", Title, Value);
11047c478bd9Sstevel@tonic-gate }
11057c478bd9Sstevel@tonic-gate 
11067c478bd9Sstevel@tonic-gate 
11077c478bd9Sstevel@tonic-gate /*******************************************************************************
11087c478bd9Sstevel@tonic-gate  *
110930082d0cSmyers  * FUNCTION:    AcpiExDumpNamespaceNode
11107c478bd9Sstevel@tonic-gate  *
111130082d0cSmyers  * PARAMETERS:  Node                - Descriptor to dump
11127c478bd9Sstevel@tonic-gate  *              Flags               - Force display if TRUE
11137c478bd9Sstevel@tonic-gate  *
11147c478bd9Sstevel@tonic-gate  * DESCRIPTION: Dumps the members of the given.Node
11157c478bd9Sstevel@tonic-gate  *
11167c478bd9Sstevel@tonic-gate  ******************************************************************************/
11177c478bd9Sstevel@tonic-gate 
11187c478bd9Sstevel@tonic-gate void
AcpiExDumpNamespaceNode(ACPI_NAMESPACE_NODE * Node,UINT32 Flags)111930082d0cSmyers AcpiExDumpNamespaceNode (
11207c478bd9Sstevel@tonic-gate     ACPI_NAMESPACE_NODE     *Node,
11217c478bd9Sstevel@tonic-gate     UINT32                  Flags)
11227c478bd9Sstevel@tonic-gate {
11237c478bd9Sstevel@tonic-gate 
11247c478bd9Sstevel@tonic-gate     ACPI_FUNCTION_ENTRY ();
11257c478bd9Sstevel@tonic-gate 
11267c478bd9Sstevel@tonic-gate 
11277c478bd9Sstevel@tonic-gate     if (!Flags)
11287c478bd9Sstevel@tonic-gate     {
11297b1019a6SJerry Jelinek         /* Check if debug output enabled */
11307b1019a6SJerry Jelinek 
11317b1019a6SJerry Jelinek         if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_OBJECTS, _COMPONENT))
11327c478bd9Sstevel@tonic-gate         {
11337c478bd9Sstevel@tonic-gate             return;
11347c478bd9Sstevel@tonic-gate         }
11357c478bd9Sstevel@tonic-gate     }
11367c478bd9Sstevel@tonic-gate 
1137aa2aa9a6SDana Myers     AcpiOsPrintf ("%20s : %4.4s\n", "Name", AcpiUtGetNodeName (Node));
11387b1019a6SJerry Jelinek     AcpiOsPrintf ("%20s : %2.2X [%s]\n", "Type",
11397b1019a6SJerry Jelinek         Node->Type, AcpiUtGetTypeName (Node->Type));
114030082d0cSmyers 
114130082d0cSmyers     AcpiExDumpObject (ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node),
114230082d0cSmyers         AcpiExDumpNode);
11437c478bd9Sstevel@tonic-gate }
11447c478bd9Sstevel@tonic-gate 
11457c478bd9Sstevel@tonic-gate 
1146450d6964Smyers /*******************************************************************************
1147450d6964Smyers  *
114830082d0cSmyers  * FUNCTION:    AcpiExDumpReferenceObj
1149450d6964Smyers  *
1150450d6964Smyers  * PARAMETERS:  Object              - Descriptor to dump
1151450d6964Smyers  *
1152450d6964Smyers  * DESCRIPTION: Dumps a reference object
1153450d6964Smyers  *
1154450d6964Smyers  ******************************************************************************/
1155450d6964Smyers 
1156450d6964Smyers static void
AcpiExDumpReferenceObj(ACPI_OPERAND_OBJECT * ObjDesc)115730082d0cSmyers AcpiExDumpReferenceObj (
1158450d6964Smyers     ACPI_OPERAND_OBJECT     *ObjDesc)
1159450d6964Smyers {
1160450d6964Smyers     ACPI_BUFFER             RetBuf;
1161450d6964Smyers     ACPI_STATUS             Status;
1162450d6964Smyers 
1163450d6964Smyers 
116430082d0cSmyers     RetBuf.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
116530082d0cSmyers 
1166db2bae30SDana Myers     if (ObjDesc->Reference.Class == ACPI_REFCLASS_NAME)
1167450d6964Smyers     {
1168db2bae30SDana Myers         AcpiOsPrintf (" %p ", ObjDesc->Reference.Node);
116930082d0cSmyers 
11707b1019a6SJerry Jelinek         Status = AcpiNsHandleToPathname (ObjDesc->Reference.Node,
11717b1019a6SJerry Jelinek             &RetBuf, TRUE);
1172450d6964Smyers         if (ACPI_FAILURE (Status))
1173450d6964Smyers         {
1174*35786f68SRobert Mustacchi             AcpiOsPrintf (" Could not convert name to pathname: %s\n",
1175*35786f68SRobert Mustacchi                 AcpiFormatException (Status));
1176450d6964Smyers         }
1177450d6964Smyers         else
1178450d6964Smyers         {
1179*35786f68SRobert Mustacchi             AcpiOsPrintf ("%s: %s\n",
1180*35786f68SRobert Mustacchi                 AcpiUtGetTypeName (ObjDesc->Reference.Node->Type),
1181*35786f68SRobert Mustacchi                 (char *) RetBuf.Pointer);
1182*35786f68SRobert Mustacchi             ACPI_FREE (RetBuf.Pointer);
1183450d6964Smyers         }
1184450d6964Smyers     }
1185450d6964Smyers     else if (ObjDesc->Reference.Object)
1186450d6964Smyers     {
1187db2bae30SDana Myers         if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND)
1188db2bae30SDana Myers         {
11897b1019a6SJerry Jelinek             AcpiOsPrintf ("%22s %p", "Target :",
11907b1019a6SJerry Jelinek                 ObjDesc->Reference.Object);
1191db2bae30SDana Myers             if (ObjDesc->Reference.Class == ACPI_REFCLASS_TABLE)
1192db2bae30SDana Myers             {
11937b1019a6SJerry Jelinek                 AcpiOsPrintf (" Table Index: %X\n",
11947b1019a6SJerry Jelinek                     ObjDesc->Reference.Value);
1195db2bae30SDana Myers             }
1196db2bae30SDana Myers             else
1197db2bae30SDana Myers             {
11987b1019a6SJerry Jelinek                 AcpiOsPrintf (" [%s]\n",
1199db2bae30SDana Myers                     AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
12007b1019a6SJerry Jelinek                     ObjDesc->Reference.Object)->Common.Type));
1201db2bae30SDana Myers             }
1202db2bae30SDana Myers         }
1203db2bae30SDana Myers         else
1204db2bae30SDana Myers         {
1205aa2aa9a6SDana Myers             AcpiOsPrintf (" Target: %p\n", ObjDesc->Reference.Object);
1206db2bae30SDana Myers         }
1207450d6964Smyers     }
1208450d6964Smyers }
1209450d6964Smyers 
1210450d6964Smyers 
1211450d6964Smyers /*******************************************************************************
1212450d6964Smyers  *
121330082d0cSmyers  * FUNCTION:    AcpiExDumpPackageObj
1214450d6964Smyers  *
121530082d0cSmyers  * PARAMETERS:  ObjDesc             - Descriptor to dump
1216450d6964Smyers  *              Level               - Indentation Level
1217450d6964Smyers  *              Index               - Package index for this object
1218450d6964Smyers  *
1219450d6964Smyers  * DESCRIPTION: Dumps the elements of the package
1220450d6964Smyers  *
1221450d6964Smyers  ******************************************************************************/
1222450d6964Smyers 
1223450d6964Smyers static void
AcpiExDumpPackageObj(ACPI_OPERAND_OBJECT * ObjDesc,UINT32 Level,UINT32 Index)122430082d0cSmyers AcpiExDumpPackageObj (
1225450d6964Smyers     ACPI_OPERAND_OBJECT     *ObjDesc,
1226450d6964Smyers     UINT32                  Level,
1227450d6964Smyers     UINT32                  Index)
1228450d6964Smyers {
1229450d6964Smyers     UINT32                  i;
1230450d6964Smyers 
1231450d6964Smyers 
1232450d6964Smyers     /* Indentation and index output */
1233450d6964Smyers 
1234450d6964Smyers     if (Level > 0)
1235450d6964Smyers     {
1236450d6964Smyers         for (i = 0; i < Level; i++)
1237450d6964Smyers         {
1238450d6964Smyers             AcpiOsPrintf ("  ");
1239450d6964Smyers         }
1240450d6964Smyers 
1241450d6964Smyers         AcpiOsPrintf ("[%.2d] ", Index);
1242450d6964Smyers     }
1243450d6964Smyers 
1244450d6964Smyers     AcpiOsPrintf ("%p ", ObjDesc);
1245450d6964Smyers 
1246450d6964Smyers     /* Null package elements are allowed */
1247450d6964Smyers 
1248450d6964Smyers     if (!ObjDesc)
1249450d6964Smyers     {
1250450d6964Smyers         AcpiOsPrintf ("[Null Object]\n");
1251450d6964Smyers         return;
1252450d6964Smyers     }
1253450d6964Smyers 
1254450d6964Smyers     /* Packages may only contain a few object types */
1255450d6964Smyers 
1256aa2aa9a6SDana Myers     switch (ObjDesc->Common.Type)
1257450d6964Smyers     {
1258450d6964Smyers     case ACPI_TYPE_INTEGER:
1259450d6964Smyers 
1260450d6964Smyers         AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n",
1261aa2aa9a6SDana Myers             ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
1262450d6964Smyers         break;
1263450d6964Smyers 
1264450d6964Smyers     case ACPI_TYPE_STRING:
1265450d6964Smyers 
1266450d6964Smyers         AcpiOsPrintf ("[String]  Value: ");
12677b1019a6SJerry Jelinek         AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
1268450d6964Smyers         AcpiOsPrintf ("\n");
1269450d6964Smyers         break;
1270450d6964Smyers 
1271450d6964Smyers     case ACPI_TYPE_BUFFER:
1272450d6964Smyers 
1273450d6964Smyers         AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length);
1274450d6964Smyers         if (ObjDesc->Buffer.Length)
1275450d6964Smyers         {
12767b1019a6SJerry Jelinek             AcpiUtDebugDumpBuffer (
12777b1019a6SJerry Jelinek                 ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer),
1278aa2aa9a6SDana Myers                 ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT);
1279450d6964Smyers         }
1280450d6964Smyers         else
1281450d6964Smyers         {
1282450d6964Smyers             AcpiOsPrintf ("\n");
1283450d6964Smyers         }
1284450d6964Smyers         break;
1285450d6964Smyers 
1286450d6964Smyers     case ACPI_TYPE_PACKAGE:
1287450d6964Smyers 
128826f3cdf0SGordon Ross         AcpiOsPrintf ("[Package] Contains %u Elements:\n",
1289aa2aa9a6SDana Myers             ObjDesc->Package.Count);
1290450d6964Smyers 
1291450d6964Smyers         for (i = 0; i < ObjDesc->Package.Count; i++)
1292450d6964Smyers         {
12937b1019a6SJerry Jelinek             AcpiExDumpPackageObj (
12947b1019a6SJerry Jelinek                 ObjDesc->Package.Elements[i], Level + 1, i);
1295450d6964Smyers         }
1296450d6964Smyers         break;
1297450d6964Smyers 
1298450d6964Smyers     case ACPI_TYPE_LOCAL_REFERENCE:
1299450d6964Smyers 
1300*35786f68SRobert Mustacchi         AcpiOsPrintf ("[Object Reference] Class [%s]",
1301*35786f68SRobert Mustacchi             AcpiUtGetReferenceName (ObjDesc));
130230082d0cSmyers         AcpiExDumpReferenceObj (ObjDesc);
1303450d6964Smyers         break;
1304450d6964Smyers 
1305450d6964Smyers     default:
1306450d6964Smyers 
1307*35786f68SRobert Mustacchi         AcpiOsPrintf ("[%s] Type: %2.2X\n",
1308*35786f68SRobert Mustacchi             AcpiUtGetTypeName (ObjDesc->Common.Type), ObjDesc->Common.Type);
1309450d6964Smyers         break;
1310450d6964Smyers     }
1311450d6964Smyers }
1312450d6964Smyers 
1313450d6964Smyers 
13147c478bd9Sstevel@tonic-gate /*******************************************************************************
13157c478bd9Sstevel@tonic-gate  *
13167c478bd9Sstevel@tonic-gate  * FUNCTION:    AcpiExDumpObjectDescriptor
13177c478bd9Sstevel@tonic-gate  *
131830082d0cSmyers  * PARAMETERS:  ObjDesc             - Descriptor to dump
13197c478bd9Sstevel@tonic-gate  *              Flags               - Force display if TRUE
13207c478bd9Sstevel@tonic-gate  *
13217c478bd9Sstevel@tonic-gate  * DESCRIPTION: Dumps the members of the object descriptor given.
13227c478bd9Sstevel@tonic-gate  *
13237c478bd9Sstevel@tonic-gate  ******************************************************************************/
13247c478bd9Sstevel@tonic-gate 
13257c478bd9Sstevel@tonic-gate void
AcpiExDumpObjectDescriptor(ACPI_OPERAND_OBJECT * ObjDesc,UINT32 Flags)13267c478bd9Sstevel@tonic-gate AcpiExDumpObjectDescriptor (
13277c478bd9Sstevel@tonic-gate     ACPI_OPERAND_OBJECT     *ObjDesc,
13287c478bd9Sstevel@tonic-gate     UINT32                  Flags)
13297c478bd9Sstevel@tonic-gate {
133027f7c583Smyers     ACPI_FUNCTION_TRACE (ExDumpObjectDescriptor);
13317c478bd9Sstevel@tonic-gate 
13327c478bd9Sstevel@tonic-gate 
13337c478bd9Sstevel@tonic-gate     if (!ObjDesc)
13347c478bd9Sstevel@tonic-gate     {
13357c478bd9Sstevel@tonic-gate         return_VOID;
13367c478bd9Sstevel@tonic-gate     }
13377c478bd9Sstevel@tonic-gate 
13387c478bd9Sstevel@tonic-gate     if (!Flags)
13397c478bd9Sstevel@tonic-gate     {
13407b1019a6SJerry Jelinek         /* Check if debug output enabled */
13417b1019a6SJerry Jelinek 
13427b1019a6SJerry Jelinek         if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_OBJECTS, _COMPONENT))
13437c478bd9Sstevel@tonic-gate         {
13447c478bd9Sstevel@tonic-gate             return_VOID;
13457c478bd9Sstevel@tonic-gate         }
13467c478bd9Sstevel@tonic-gate     }
13477c478bd9Sstevel@tonic-gate 
13487c478bd9Sstevel@tonic-gate     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
13497c478bd9Sstevel@tonic-gate     {
135030082d0cSmyers         AcpiExDumpNamespaceNode ((ACPI_NAMESPACE_NODE *) ObjDesc, Flags);
135130082d0cSmyers 
13527b1019a6SJerry Jelinek         ObjDesc = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object;
1353*35786f68SRobert Mustacchi         if (!ObjDesc)
1354*35786f68SRobert Mustacchi         {
1355*35786f68SRobert Mustacchi             return_VOID;
1356*35786f68SRobert Mustacchi         }
1357*35786f68SRobert Mustacchi 
1358*35786f68SRobert Mustacchi         AcpiOsPrintf ("\nAttached Object %p", ObjDesc);
1359*35786f68SRobert Mustacchi         if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
1360*35786f68SRobert Mustacchi         {
1361*35786f68SRobert Mustacchi             AcpiOsPrintf (" - Namespace Node");
1362*35786f68SRobert Mustacchi         }
1363*35786f68SRobert Mustacchi 
1364*35786f68SRobert Mustacchi         AcpiOsPrintf (":\n");
13657b1019a6SJerry Jelinek         goto DumpObject;
13667c478bd9Sstevel@tonic-gate     }
13677c478bd9Sstevel@tonic-gate 
13687c478bd9Sstevel@tonic-gate     if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
13697c478bd9Sstevel@tonic-gate     {
13707c478bd9Sstevel@tonic-gate         AcpiOsPrintf (
13717b1019a6SJerry Jelinek             "%p is not an ACPI operand object: [%s]\n",
13727c478bd9Sstevel@tonic-gate             ObjDesc, AcpiUtGetDescriptorName (ObjDesc));
13737c478bd9Sstevel@tonic-gate         return_VOID;
13747c478bd9Sstevel@tonic-gate     }
13757c478bd9Sstevel@tonic-gate 
13767b1019a6SJerry Jelinek     /* Validate the object type */
13777b1019a6SJerry Jelinek 
13787b1019a6SJerry Jelinek     if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX)
13797c478bd9Sstevel@tonic-gate     {
13807b1019a6SJerry Jelinek         AcpiOsPrintf ("Not a known object type: %2.2X\n",
13817b1019a6SJerry Jelinek             ObjDesc->Common.Type);
138230082d0cSmyers         return_VOID;
138330082d0cSmyers     }
13847c478bd9Sstevel@tonic-gate 
13857b1019a6SJerry Jelinek 
13867b1019a6SJerry Jelinek DumpObject:
13877b1019a6SJerry Jelinek 
1388*35786f68SRobert Mustacchi     if (!ObjDesc)
1389*35786f68SRobert Mustacchi     {
1390*35786f68SRobert Mustacchi         return_VOID;
1391*35786f68SRobert Mustacchi     }
1392*35786f68SRobert Mustacchi 
139330082d0cSmyers     /* Common Fields */
13947c478bd9Sstevel@tonic-gate 
139530082d0cSmyers     AcpiExDumpObject (ObjDesc, AcpiExDumpCommon);
13967c478bd9Sstevel@tonic-gate 
139730082d0cSmyers     /* Object-specific fields */
13987c478bd9Sstevel@tonic-gate 
139930082d0cSmyers     AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]);
14007b1019a6SJerry Jelinek 
14017b1019a6SJerry Jelinek     if (ObjDesc->Common.Type == ACPI_TYPE_REGION)
14027b1019a6SJerry Jelinek     {
14037b1019a6SJerry Jelinek         ObjDesc = ObjDesc->Common.NextObject;
14047b1019a6SJerry Jelinek         if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX)
14057b1019a6SJerry Jelinek         {
14067b1019a6SJerry Jelinek             AcpiOsPrintf (
14077b1019a6SJerry Jelinek                 "Secondary object is not a known object type: %2.2X\n",
14087b1019a6SJerry Jelinek                 ObjDesc->Common.Type);
14097b1019a6SJerry Jelinek 
14107b1019a6SJerry Jelinek             return_VOID;
14117b1019a6SJerry Jelinek         }
14127b1019a6SJerry Jelinek 
14137b1019a6SJerry Jelinek         AcpiOsPrintf ("\nExtra attached Object (%p):\n", ObjDesc);
14147b1019a6SJerry Jelinek         AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]);
14157b1019a6SJerry Jelinek     }
14167b1019a6SJerry Jelinek 
14177c478bd9Sstevel@tonic-gate     return_VOID;
14187c478bd9Sstevel@tonic-gate }
14197c478bd9Sstevel@tonic-gate 
14207c478bd9Sstevel@tonic-gate #endif
1421