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