10d02842fSSascha Wildner /******************************************************************************
20d02842fSSascha Wildner *
30d02842fSSascha Wildner * Module Name: exdump - Interpreter debug output routines
40d02842fSSascha Wildner *
50d02842fSSascha Wildner *****************************************************************************/
60d02842fSSascha Wildner
7b4315fc7SSascha Wildner /******************************************************************************
8b4315fc7SSascha Wildner *
9b4315fc7SSascha Wildner * 1. Copyright Notice
10b4315fc7SSascha Wildner *
11*383048acSSascha Wildner * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
120d02842fSSascha Wildner * All rights reserved.
130d02842fSSascha Wildner *
14b4315fc7SSascha Wildner * 2. License
15b4315fc7SSascha Wildner *
16b4315fc7SSascha Wildner * 2.1. This is your license from Intel Corp. under its intellectual property
17b4315fc7SSascha Wildner * rights. You may have additional license terms from the party that provided
18b4315fc7SSascha Wildner * you this software, covering your right to use that party's intellectual
19b4315fc7SSascha Wildner * property rights.
20b4315fc7SSascha Wildner *
21b4315fc7SSascha Wildner * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22b4315fc7SSascha Wildner * copy of the source code appearing in this file ("Covered Code") an
23b4315fc7SSascha Wildner * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24b4315fc7SSascha Wildner * base code distributed originally by Intel ("Original Intel Code") to copy,
25b4315fc7SSascha Wildner * make derivatives, distribute, use and display any portion of the Covered
26b4315fc7SSascha Wildner * Code in any form, with the right to sublicense such rights; and
27b4315fc7SSascha Wildner *
28b4315fc7SSascha Wildner * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29b4315fc7SSascha Wildner * license (with the right to sublicense), under only those claims of Intel
30b4315fc7SSascha Wildner * patents that are infringed by the Original Intel Code, to make, use, sell,
31b4315fc7SSascha Wildner * offer to sell, and import the Covered Code and derivative works thereof
32b4315fc7SSascha Wildner * solely to the minimum extent necessary to exercise the above copyright
33b4315fc7SSascha Wildner * license, and in no event shall the patent license extend to any additions
34b4315fc7SSascha Wildner * to or modifications of the Original Intel Code. No other license or right
35b4315fc7SSascha Wildner * is granted directly or by implication, estoppel or otherwise;
36b4315fc7SSascha Wildner *
37b4315fc7SSascha Wildner * The above copyright and patent license is granted only if the following
38b4315fc7SSascha Wildner * conditions are met:
39b4315fc7SSascha Wildner *
40b4315fc7SSascha Wildner * 3. Conditions
41b4315fc7SSascha Wildner *
42b4315fc7SSascha Wildner * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43b4315fc7SSascha Wildner * Redistribution of source code of any substantial portion of the Covered
44b4315fc7SSascha Wildner * Code or modification with rights to further distribute source must include
45b4315fc7SSascha Wildner * the above Copyright Notice, the above License, this list of Conditions,
46b4315fc7SSascha Wildner * and the following Disclaimer and Export Compliance provision. In addition,
47b4315fc7SSascha Wildner * Licensee must cause all Covered Code to which Licensee contributes to
48b4315fc7SSascha Wildner * contain a file documenting the changes Licensee made to create that Covered
49b4315fc7SSascha Wildner * Code and the date of any change. Licensee must include in that file the
50b4315fc7SSascha Wildner * documentation of any changes made by any predecessor Licensee. Licensee
51b4315fc7SSascha Wildner * must include a prominent statement that the modification is derived,
52b4315fc7SSascha Wildner * directly or indirectly, from Original Intel Code.
53b4315fc7SSascha Wildner *
54b4315fc7SSascha Wildner * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55b4315fc7SSascha Wildner * Redistribution of source code of any substantial portion of the Covered
56b4315fc7SSascha Wildner * Code or modification without rights to further distribute source must
57b4315fc7SSascha Wildner * include the following Disclaimer and Export Compliance provision in the
58b4315fc7SSascha Wildner * documentation and/or other materials provided with distribution. In
59b4315fc7SSascha Wildner * addition, Licensee may not authorize further sublicense of source of any
60b4315fc7SSascha Wildner * portion of the Covered Code, and must include terms to the effect that the
61b4315fc7SSascha Wildner * license from Licensee to its licensee is limited to the intellectual
62b4315fc7SSascha Wildner * property embodied in the software Licensee provides to its licensee, and
63b4315fc7SSascha Wildner * not to intellectual property embodied in modifications its licensee may
64b4315fc7SSascha Wildner * make.
65b4315fc7SSascha Wildner *
66b4315fc7SSascha Wildner * 3.3. Redistribution of Executable. Redistribution in executable form of any
67b4315fc7SSascha Wildner * substantial portion of the Covered Code or modification must reproduce the
68b4315fc7SSascha Wildner * above Copyright Notice, and the following Disclaimer and Export Compliance
69b4315fc7SSascha Wildner * provision in the documentation and/or other materials provided with the
70b4315fc7SSascha Wildner * distribution.
71b4315fc7SSascha Wildner *
72b4315fc7SSascha Wildner * 3.4. Intel retains all right, title, and interest in and to the Original
73b4315fc7SSascha Wildner * Intel Code.
74b4315fc7SSascha Wildner *
75b4315fc7SSascha Wildner * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76b4315fc7SSascha Wildner * Intel shall be used in advertising or otherwise to promote the sale, use or
77b4315fc7SSascha Wildner * other dealings in products derived from or relating to the Covered Code
78b4315fc7SSascha Wildner * without prior written authorization from Intel.
79b4315fc7SSascha Wildner *
80b4315fc7SSascha Wildner * 4. Disclaimer and Export Compliance
81b4315fc7SSascha Wildner *
82b4315fc7SSascha Wildner * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83b4315fc7SSascha Wildner * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84b4315fc7SSascha Wildner * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
85b4315fc7SSascha Wildner * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
86b4315fc7SSascha Wildner * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
87b4315fc7SSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
88b4315fc7SSascha Wildner * PARTICULAR PURPOSE.
89b4315fc7SSascha Wildner *
90b4315fc7SSascha Wildner * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91b4315fc7SSascha Wildner * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92b4315fc7SSascha Wildner * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93b4315fc7SSascha Wildner * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94b4315fc7SSascha Wildner * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95b4315fc7SSascha Wildner * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
96b4315fc7SSascha Wildner * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
97b4315fc7SSascha Wildner * LIMITED REMEDY.
98b4315fc7SSascha Wildner *
99b4315fc7SSascha Wildner * 4.3. Licensee shall not export, either directly or indirectly, any of this
100b4315fc7SSascha Wildner * software or system incorporating such software without first obtaining any
101b4315fc7SSascha Wildner * required license or other approval from the U. S. Department of Commerce or
102b4315fc7SSascha Wildner * any other agency or department of the United States Government. In the
103b4315fc7SSascha Wildner * event Licensee exports any such software from the United States or
104b4315fc7SSascha Wildner * re-exports any such software from a foreign destination, Licensee shall
105b4315fc7SSascha Wildner * ensure that the distribution and export/re-export of the software is in
106b4315fc7SSascha Wildner * compliance with all laws, regulations, orders, or other restrictions of the
107b4315fc7SSascha Wildner * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108b4315fc7SSascha Wildner * any of its subsidiaries will export/re-export any technical data, process,
109b4315fc7SSascha Wildner * software, or service, directly or indirectly, to any country for which the
110b4315fc7SSascha Wildner * United States government or any agency thereof requires an export license,
111b4315fc7SSascha Wildner * other governmental approval, or letter of assurance, without first obtaining
112b4315fc7SSascha Wildner * such license, approval or letter.
113b4315fc7SSascha Wildner *
114b4315fc7SSascha Wildner *****************************************************************************
115b4315fc7SSascha Wildner *
116b4315fc7SSascha Wildner * Alternatively, you may choose to be licensed under the terms of the
117b4315fc7SSascha Wildner * following license:
118b4315fc7SSascha Wildner *
1190d02842fSSascha Wildner * Redistribution and use in source and binary forms, with or without
1200d02842fSSascha Wildner * modification, are permitted provided that the following conditions
1210d02842fSSascha Wildner * are met:
1220d02842fSSascha Wildner * 1. Redistributions of source code must retain the above copyright
1230d02842fSSascha Wildner * notice, this list of conditions, and the following disclaimer,
1240d02842fSSascha Wildner * without modification.
1250d02842fSSascha Wildner * 2. Redistributions in binary form must reproduce at minimum a disclaimer
1260d02842fSSascha Wildner * substantially similar to the "NO WARRANTY" disclaimer below
1270d02842fSSascha Wildner * ("Disclaimer") and any redistribution must be conditioned upon
1280d02842fSSascha Wildner * including a substantially similar Disclaimer requirement for further
1290d02842fSSascha Wildner * binary redistribution.
1300d02842fSSascha Wildner * 3. Neither the names of the above-listed copyright holders nor the names
1310d02842fSSascha Wildner * of any contributors may be used to endorse or promote products derived
1320d02842fSSascha Wildner * from this software without specific prior written permission.
1330d02842fSSascha Wildner *
134b4315fc7SSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
135b4315fc7SSascha Wildner * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
136b4315fc7SSascha Wildner * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
137b4315fc7SSascha Wildner * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
138b4315fc7SSascha Wildner * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
139b4315fc7SSascha Wildner * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
140b4315fc7SSascha Wildner * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
141b4315fc7SSascha Wildner * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
142b4315fc7SSascha Wildner * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
143b4315fc7SSascha Wildner * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
144b4315fc7SSascha Wildner * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
145b4315fc7SSascha Wildner *
146b4315fc7SSascha Wildner * Alternatively, you may choose to be licensed under the terms of the
1470d02842fSSascha Wildner * GNU General Public License ("GPL") version 2 as published by the Free
1480d02842fSSascha Wildner * Software Foundation.
1490d02842fSSascha Wildner *
150b4315fc7SSascha Wildner *****************************************************************************/
1510d02842fSSascha Wildner
1520d02842fSSascha Wildner #include "acpi.h"
1530d02842fSSascha Wildner #include "accommon.h"
1540d02842fSSascha Wildner #include "acinterp.h"
1550d02842fSSascha Wildner #include "amlcode.h"
1560d02842fSSascha Wildner #include "acnamesp.h"
1570d02842fSSascha Wildner
1580d02842fSSascha Wildner
1590d02842fSSascha Wildner #define _COMPONENT ACPI_EXECUTER
1600d02842fSSascha Wildner ACPI_MODULE_NAME ("exdump")
1610d02842fSSascha Wildner
1620d02842fSSascha Wildner /*
1630d02842fSSascha Wildner * The following routines are used for debug output only
1640d02842fSSascha Wildner */
1650d02842fSSascha Wildner #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
1660d02842fSSascha Wildner
1670d02842fSSascha Wildner /* Local prototypes */
1680d02842fSSascha Wildner
1690d02842fSSascha Wildner static void
1700d02842fSSascha Wildner AcpiExOutString (
1712ffe9f16SSascha Wildner const char *Title,
1722ffe9f16SSascha Wildner const char *Value);
1730d02842fSSascha Wildner
1740d02842fSSascha Wildner static void
1750d02842fSSascha Wildner AcpiExOutPointer (
1762ffe9f16SSascha Wildner const char *Title,
1772ffe9f16SSascha Wildner const void *Value);
1780d02842fSSascha Wildner
1790d02842fSSascha Wildner static void
1800d02842fSSascha Wildner AcpiExDumpObject (
1810d02842fSSascha Wildner ACPI_OPERAND_OBJECT *ObjDesc,
1820d02842fSSascha Wildner ACPI_EXDUMP_INFO *Info);
1830d02842fSSascha Wildner
1840d02842fSSascha Wildner static void
1850d02842fSSascha Wildner AcpiExDumpReferenceObj (
1860d02842fSSascha Wildner ACPI_OPERAND_OBJECT *ObjDesc);
1870d02842fSSascha Wildner
1880d02842fSSascha Wildner static void
1890d02842fSSascha Wildner AcpiExDumpPackageObj (
1900d02842fSSascha Wildner ACPI_OPERAND_OBJECT *ObjDesc,
1910d02842fSSascha Wildner UINT32 Level,
1920d02842fSSascha Wildner UINT32 Index);
1930d02842fSSascha Wildner
1940d02842fSSascha Wildner
1950d02842fSSascha Wildner /*******************************************************************************
1960d02842fSSascha Wildner *
1970d02842fSSascha Wildner * Object Descriptor info tables
1980d02842fSSascha Wildner *
1990d02842fSSascha Wildner * Note: The first table entry must be an INIT opcode and must contain
2000d02842fSSascha Wildner * the table length (number of table entries)
2010d02842fSSascha Wildner *
2020d02842fSSascha Wildner ******************************************************************************/
2030d02842fSSascha Wildner
2040d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpInteger[2] =
2050d02842fSSascha Wildner {
2060d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpInteger), NULL},
2070d02842fSSascha Wildner {ACPI_EXD_UINT64, ACPI_EXD_OFFSET (Integer.Value), "Value"}
2080d02842fSSascha Wildner };
2090d02842fSSascha Wildner
2100d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpString[4] =
2110d02842fSSascha Wildner {
2120d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpString), NULL},
2130d02842fSSascha Wildner {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (String.Length), "Length"},
2140d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (String.Pointer), "Pointer"},
2150d02842fSSascha Wildner {ACPI_EXD_STRING, 0, NULL}
2160d02842fSSascha Wildner };
2170d02842fSSascha Wildner
2180d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpBuffer[5] =
2190d02842fSSascha Wildner {
2200d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBuffer), NULL},
2210d02842fSSascha Wildner {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Buffer.Length), "Length"},
2220d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Buffer.Pointer), "Pointer"},
2236a0135c2SSascha Wildner {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Buffer.Node), "Parent Node"},
2240d02842fSSascha Wildner {ACPI_EXD_BUFFER, 0, NULL}
2250d02842fSSascha Wildner };
2260d02842fSSascha Wildner
2276a0135c2SSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpPackage[6] =
2280d02842fSSascha Wildner {
2290d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpPackage), NULL},
2306a0135c2SSascha Wildner {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Package.Node), "Parent Node"},
2310d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Package.Flags), "Flags"},
2323c639e0cSSascha Wildner {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Package.Count), "Element Count"},
2330d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Package.Elements), "Element List"},
2340d02842fSSascha Wildner {ACPI_EXD_PACKAGE, 0, NULL}
2350d02842fSSascha Wildner };
2360d02842fSSascha Wildner
2370d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpDevice[4] =
2380d02842fSSascha Wildner {
2390d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpDevice), NULL},
2400d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Device.NotifyList[0]), "System Notify"},
2416a0135c2SSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Device.NotifyList[1]), "Device Notify"},
2426a0135c2SSascha Wildner {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (Device.Handler), "Handler"}
2430d02842fSSascha Wildner };
2440d02842fSSascha Wildner
2450d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpEvent[2] =
2460d02842fSSascha Wildner {
2470d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpEvent), NULL},
2480d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Event.OsSemaphore), "OsSemaphore"}
2490d02842fSSascha Wildner };
2500d02842fSSascha Wildner
2510d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpMethod[9] =
2520d02842fSSascha Wildner {
2530d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpMethod), NULL},
2540d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.InfoFlags), "Info Flags"},
2550d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.ParamCount), "Parameter Count"},
2560d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.SyncLevel), "Sync Level"},
2570d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Method.Mutex), "Mutex"},
258e5412f1eSSascha Wildner {ACPI_EXD_UINT16, ACPI_EXD_OFFSET (Method.OwnerId), "Owner Id"},
2590d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.ThreadCount), "Thread Count"},
2600d02842fSSascha Wildner {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Method.AmlLength), "Aml Length"},
2610d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Method.AmlStart), "Aml Start"}
2620d02842fSSascha Wildner };
2630d02842fSSascha Wildner
264d4972a9cSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpMutex[6] =
2650d02842fSSascha Wildner {
2660d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpMutex), NULL},
2670d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Mutex.SyncLevel), "Sync Level"},
268d4972a9cSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Mutex.OriginalSyncLevel), "Original Sync Level"},
2690d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Mutex.OwnerThread), "Owner Thread"},
2700d02842fSSascha Wildner {ACPI_EXD_UINT16, ACPI_EXD_OFFSET (Mutex.AcquisitionDepth), "Acquire Depth"},
2710d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Mutex.OsMutex), "OsMutex"}
2720d02842fSSascha Wildner };
2730d02842fSSascha Wildner
2746a0135c2SSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpRegion[8] =
2750d02842fSSascha Wildner {
2760d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpRegion), NULL},
2770d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Region.SpaceId), "Space Id"},
2780d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Region.Flags), "Flags"},
2796a0135c2SSascha Wildner {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Region.Node), "Parent Node"},
2800d02842fSSascha Wildner {ACPI_EXD_ADDRESS, ACPI_EXD_OFFSET (Region.Address), "Address"},
2810d02842fSSascha Wildner {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Region.Length), "Length"},
2826a0135c2SSascha Wildner {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (Region.Handler), "Handler"},
2830d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Region.Next), "Next"}
2840d02842fSSascha Wildner };
2850d02842fSSascha Wildner
2866a0135c2SSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpPower[6] =
2870d02842fSSascha Wildner {
2880d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpPower), NULL},
2890d02842fSSascha Wildner {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (PowerResource.SystemLevel), "System Level"},
2900d02842fSSascha Wildner {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (PowerResource.ResourceOrder), "Resource Order"},
2910d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.NotifyList[0]), "System Notify"},
2926a0135c2SSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.NotifyList[1]), "Device Notify"},
2936a0135c2SSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.Handler), "Handler"}
2940d02842fSSascha Wildner };
2950d02842fSSascha Wildner
2960d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpProcessor[7] =
2970d02842fSSascha Wildner {
2980d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpProcessor), NULL},
2990d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Processor.ProcId), "Processor ID"},
3000d02842fSSascha Wildner {ACPI_EXD_UINT8 , ACPI_EXD_OFFSET (Processor.Length), "Length"},
3010d02842fSSascha Wildner {ACPI_EXD_ADDRESS, ACPI_EXD_OFFSET (Processor.Address), "Address"},
3020d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Processor.NotifyList[0]), "System Notify"},
3030d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Processor.NotifyList[1]), "Device Notify"},
3040d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Processor.Handler), "Handler"}
3050d02842fSSascha Wildner };
3060d02842fSSascha Wildner
3070d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpThermal[4] =
3080d02842fSSascha Wildner {
3090d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpThermal), NULL},
3100d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (ThermalZone.NotifyList[0]), "System Notify"},
3110d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (ThermalZone.NotifyList[1]), "Device Notify"},
3120d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (ThermalZone.Handler), "Handler"}
3130d02842fSSascha Wildner };
3140d02842fSSascha Wildner
3150d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpBufferField[3] =
3160d02842fSSascha Wildner {
3170d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBufferField), NULL},
3180d02842fSSascha Wildner {ACPI_EXD_FIELD, 0, NULL},
3190d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (BufferField.BufferObj), "Buffer Object"}
3200d02842fSSascha Wildner };
3210d02842fSSascha Wildner
3220d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpRegionField[5] =
3230d02842fSSascha Wildner {
3240d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpRegionField), NULL},
3250d02842fSSascha Wildner {ACPI_EXD_FIELD, 0, NULL},
3260d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Field.AccessLength), "AccessLength"},
3270d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Field.RegionObj), "Region Object"},
3280d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Field.ResourceBuffer), "ResourceBuffer"}
3290d02842fSSascha Wildner };
3300d02842fSSascha Wildner
3310d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpBankField[5] =
3320d02842fSSascha Wildner {
3330d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField), NULL},
3340d02842fSSascha Wildner {ACPI_EXD_FIELD, 0, NULL},
3350d02842fSSascha Wildner {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (BankField.Value), "Value"},
3360d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (BankField.RegionObj), "Region Object"},
3370d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (BankField.BankObj), "Bank Object"}
3380d02842fSSascha Wildner };
3390d02842fSSascha Wildner
3400d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpIndexField[5] =
3410d02842fSSascha Wildner {
3420d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField), NULL},
3430d02842fSSascha Wildner {ACPI_EXD_FIELD, 0, NULL},
3440d02842fSSascha Wildner {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (IndexField.Value), "Value"},
3450d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (IndexField.IndexObj), "Index Object"},
3460d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (IndexField.DataObj), "Data Object"}
3470d02842fSSascha Wildner };
3480d02842fSSascha Wildner
34925ca8c79SSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpReference[9] =
3500d02842fSSascha Wildner {
3510d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpReference), NULL},
3520d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Reference.Class), "Class"},
3530d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Reference.TargetType), "Target Type"},
3540d02842fSSascha Wildner {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Reference.Value), "Value"},
3550d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.Object), "Object Desc"},
3566a0135c2SSascha Wildner {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Reference.Node), "Node"},
3570d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.Where), "Where"},
35825ca8c79SSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.IndexPointer), "Index Pointer"},
3590d02842fSSascha Wildner {ACPI_EXD_REFERENCE,0, NULL}
3600d02842fSSascha Wildner };
3610d02842fSSascha Wildner
3620d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpAddressHandler[6] =
3630d02842fSSascha Wildner {
3640d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpAddressHandler), NULL},
3650d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (AddressSpace.SpaceId), "Space Id"},
3666a0135c2SSascha Wildner {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (AddressSpace.Next), "Next"},
3676a0135c2SSascha Wildner {ACPI_EXD_RGN_LIST, ACPI_EXD_OFFSET (AddressSpace.RegionList), "Region List"},
3686a0135c2SSascha Wildner {ACPI_EXD_NODE, ACPI_EXD_OFFSET (AddressSpace.Node), "Node"},
3690d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (AddressSpace.Context), "Context"}
3700d02842fSSascha Wildner };
3710d02842fSSascha Wildner
3720d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpNotify[7] =
3730d02842fSSascha Wildner {
3740d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpNotify), NULL},
3756a0135c2SSascha Wildner {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Notify.Node), "Node"},
3760d02842fSSascha Wildner {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Notify.HandlerType), "Handler Type"},
3770d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Handler), "Handler"},
3780d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Context), "Context"},
3790d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Next[0]), "Next System Notify"},
3800d02842fSSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Next[1]), "Next Device Notify"}
3810d02842fSSascha Wildner };
3820d02842fSSascha Wildner
3836a0135c2SSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpExtra[6] =
3846a0135c2SSascha Wildner {
3856a0135c2SSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpExtra), NULL},
3866a0135c2SSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Extra.Method_REG), "_REG Method"},
3876a0135c2SSascha Wildner {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Extra.ScopeNode), "Scope Node"},
3886a0135c2SSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Extra.RegionContext), "Region Context"},
3896a0135c2SSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Extra.AmlStart), "Aml Start"},
3906a0135c2SSascha Wildner {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Extra.AmlLength), "Aml Length"}
3916a0135c2SSascha Wildner };
3926a0135c2SSascha Wildner
3936a0135c2SSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpData[3] =
3946a0135c2SSascha Wildner {
3956a0135c2SSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpData), NULL},
3966a0135c2SSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Data.Handler), "Handler"},
3976a0135c2SSascha Wildner {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Data.Pointer), "Raw Data"}
3986a0135c2SSascha Wildner };
3990d02842fSSascha Wildner
4000d02842fSSascha Wildner /* Miscellaneous tables */
4010d02842fSSascha Wildner
4026a0135c2SSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpCommon[5] =
4030d02842fSSascha Wildner {
4040d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpCommon), NULL},
4050d02842fSSascha Wildner {ACPI_EXD_TYPE , 0, NULL},
4060d02842fSSascha Wildner {ACPI_EXD_UINT16, ACPI_EXD_OFFSET (Common.ReferenceCount), "Reference Count"},
4076a0135c2SSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Common.Flags), "Flags"},
4086a0135c2SSascha Wildner {ACPI_EXD_LIST, ACPI_EXD_OFFSET (Common.NextObject), "Object List"}
4090d02842fSSascha Wildner };
4100d02842fSSascha Wildner
4110d02842fSSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpFieldCommon[7] =
4120d02842fSSascha Wildner {
4130d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpFieldCommon), NULL},
4140d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (CommonField.FieldFlags), "Field Flags"},
4150d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (CommonField.AccessByteWidth), "Access Byte Width"},
4160d02842fSSascha Wildner {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (CommonField.BitLength), "Bit Length"},
4170d02842fSSascha Wildner {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (CommonField.StartFieldBitOffset),"Field Bit Offset"},
4180d02842fSSascha Wildner {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (CommonField.BaseByteOffset), "Base Byte Offset"},
4196a0135c2SSascha Wildner {ACPI_EXD_NODE, ACPI_EXD_OFFSET (CommonField.Node), "Parent Node"}
4200d02842fSSascha Wildner };
4210d02842fSSascha Wildner
4226a0135c2SSascha Wildner static ACPI_EXDUMP_INFO AcpiExDumpNode[7] =
4230d02842fSSascha Wildner {
4240d02842fSSascha Wildner {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpNode), NULL},
425e5412f1eSSascha Wildner {ACPI_EXD_UINT16, ACPI_EXD_NSOFFSET (Flags), "Flags"},
426e5412f1eSSascha Wildner {ACPI_EXD_UINT16, ACPI_EXD_NSOFFSET (OwnerId), "Owner Id"},
4276a0135c2SSascha Wildner {ACPI_EXD_LIST, ACPI_EXD_NSOFFSET (Object), "Object List"},
4286a0135c2SSascha Wildner {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET (Parent), "Parent"},
4296a0135c2SSascha Wildner {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET (Child), "Child"},
4306a0135c2SSascha Wildner {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET (Peer), "Peer"}
4310d02842fSSascha Wildner };
4320d02842fSSascha Wildner
4330d02842fSSascha Wildner
4340d02842fSSascha Wildner /* Dispatch table, indexed by object type */
4350d02842fSSascha Wildner
4360d02842fSSascha Wildner static ACPI_EXDUMP_INFO *AcpiExDumpInfo[] =
4370d02842fSSascha Wildner {
4380d02842fSSascha Wildner NULL,
4390d02842fSSascha Wildner AcpiExDumpInteger,
4400d02842fSSascha Wildner AcpiExDumpString,
4410d02842fSSascha Wildner AcpiExDumpBuffer,
4420d02842fSSascha Wildner AcpiExDumpPackage,
4430d02842fSSascha Wildner NULL,
4440d02842fSSascha Wildner AcpiExDumpDevice,
4450d02842fSSascha Wildner AcpiExDumpEvent,
4460d02842fSSascha Wildner AcpiExDumpMethod,
4470d02842fSSascha Wildner AcpiExDumpMutex,
4480d02842fSSascha Wildner AcpiExDumpRegion,
4490d02842fSSascha Wildner AcpiExDumpPower,
4500d02842fSSascha Wildner AcpiExDumpProcessor,
4510d02842fSSascha Wildner AcpiExDumpThermal,
4520d02842fSSascha Wildner AcpiExDumpBufferField,
4530d02842fSSascha Wildner NULL,
4540d02842fSSascha Wildner NULL,
4550d02842fSSascha Wildner AcpiExDumpRegionField,
4560d02842fSSascha Wildner AcpiExDumpBankField,
4570d02842fSSascha Wildner AcpiExDumpIndexField,
4580d02842fSSascha Wildner AcpiExDumpReference,
4590d02842fSSascha Wildner NULL,
4600d02842fSSascha Wildner NULL,
4610d02842fSSascha Wildner AcpiExDumpNotify,
4620d02842fSSascha Wildner AcpiExDumpAddressHandler,
4630d02842fSSascha Wildner NULL,
4640d02842fSSascha Wildner NULL,
4656a0135c2SSascha Wildner NULL,
4666a0135c2SSascha Wildner AcpiExDumpExtra,
4676a0135c2SSascha Wildner AcpiExDumpData
4680d02842fSSascha Wildner };
4690d02842fSSascha Wildner
4700d02842fSSascha Wildner
4710d02842fSSascha Wildner /*******************************************************************************
4720d02842fSSascha Wildner *
4730d02842fSSascha Wildner * FUNCTION: AcpiExDumpObject
4740d02842fSSascha Wildner *
4750d02842fSSascha Wildner * PARAMETERS: ObjDesc - Descriptor to dump
4760d02842fSSascha Wildner * Info - Info table corresponding to this object
4770d02842fSSascha Wildner * type
4780d02842fSSascha Wildner *
4790d02842fSSascha Wildner * RETURN: None
4800d02842fSSascha Wildner *
4810d02842fSSascha Wildner * DESCRIPTION: Walk the info table for this object
4820d02842fSSascha Wildner *
4830d02842fSSascha Wildner ******************************************************************************/
4840d02842fSSascha Wildner
4850d02842fSSascha Wildner static void
AcpiExDumpObject(ACPI_OPERAND_OBJECT * ObjDesc,ACPI_EXDUMP_INFO * Info)4860d02842fSSascha Wildner AcpiExDumpObject (
4870d02842fSSascha Wildner ACPI_OPERAND_OBJECT *ObjDesc,
4880d02842fSSascha Wildner ACPI_EXDUMP_INFO *Info)
4890d02842fSSascha Wildner {
4900d02842fSSascha Wildner UINT8 *Target;
4912ffe9f16SSascha Wildner const char *Name;
4920d02842fSSascha Wildner UINT8 Count;
4936a0135c2SSascha Wildner ACPI_OPERAND_OBJECT *Start;
4946a0135c2SSascha Wildner ACPI_OPERAND_OBJECT *Data = NULL;
4956a0135c2SSascha Wildner ACPI_OPERAND_OBJECT *Next;
4966a0135c2SSascha Wildner ACPI_NAMESPACE_NODE *Node;
4970d02842fSSascha Wildner
4980d02842fSSascha Wildner
4990d02842fSSascha Wildner if (!Info)
5000d02842fSSascha Wildner {
5010d02842fSSascha Wildner AcpiOsPrintf (
5020d02842fSSascha Wildner "ExDumpObject: Display not implemented for object type %s\n",
5030d02842fSSascha Wildner AcpiUtGetObjectTypeName (ObjDesc));
5040d02842fSSascha Wildner return;
5050d02842fSSascha Wildner }
5060d02842fSSascha Wildner
5070d02842fSSascha Wildner /* First table entry must contain the table length (# of table entries) */
5080d02842fSSascha Wildner
5090d02842fSSascha Wildner Count = Info->Offset;
5100d02842fSSascha Wildner
5110d02842fSSascha Wildner while (Count)
5120d02842fSSascha Wildner {
5133c639e0cSSascha Wildner if (!ObjDesc)
5143c639e0cSSascha Wildner {
5153c639e0cSSascha Wildner return;
5163c639e0cSSascha Wildner }
5173c639e0cSSascha Wildner
5180d02842fSSascha Wildner Target = ACPI_ADD_PTR (UINT8, ObjDesc, Info->Offset);
5190d02842fSSascha Wildner Name = Info->Name;
5200d02842fSSascha Wildner
5210d02842fSSascha Wildner switch (Info->Opcode)
5220d02842fSSascha Wildner {
5230d02842fSSascha Wildner case ACPI_EXD_INIT:
5240d02842fSSascha Wildner
5250d02842fSSascha Wildner break;
5260d02842fSSascha Wildner
5270d02842fSSascha Wildner case ACPI_EXD_TYPE:
5280d02842fSSascha Wildner
5296a0135c2SSascha Wildner AcpiOsPrintf ("%20s : %2.2X [%s]\n", "Type",
5303c639e0cSSascha Wildner ObjDesc->Common.Type,
5313c639e0cSSascha Wildner AcpiUtGetObjectTypeName (ObjDesc));
5320d02842fSSascha Wildner break;
5330d02842fSSascha Wildner
5340d02842fSSascha Wildner case ACPI_EXD_UINT8:
5350d02842fSSascha Wildner
5360d02842fSSascha Wildner AcpiOsPrintf ("%20s : %2.2X\n", Name, *Target);
5370d02842fSSascha Wildner break;
5380d02842fSSascha Wildner
5390d02842fSSascha Wildner case ACPI_EXD_UINT16:
5400d02842fSSascha Wildner
5410d02842fSSascha Wildner AcpiOsPrintf ("%20s : %4.4X\n", Name, ACPI_GET16 (Target));
5420d02842fSSascha Wildner break;
5430d02842fSSascha Wildner
5440d02842fSSascha Wildner case ACPI_EXD_UINT32:
5450d02842fSSascha Wildner
5460d02842fSSascha Wildner AcpiOsPrintf ("%20s : %8.8X\n", Name, ACPI_GET32 (Target));
5470d02842fSSascha Wildner break;
5480d02842fSSascha Wildner
5490d02842fSSascha Wildner case ACPI_EXD_UINT64:
5500d02842fSSascha Wildner
5510d02842fSSascha Wildner AcpiOsPrintf ("%20s : %8.8X%8.8X\n", "Value",
5520d02842fSSascha Wildner ACPI_FORMAT_UINT64 (ACPI_GET64 (Target)));
5530d02842fSSascha Wildner break;
5540d02842fSSascha Wildner
5550d02842fSSascha Wildner case ACPI_EXD_POINTER:
5560d02842fSSascha Wildner case ACPI_EXD_ADDRESS:
5570d02842fSSascha Wildner
5580d02842fSSascha Wildner AcpiExOutPointer (Name, *ACPI_CAST_PTR (void *, Target));
5590d02842fSSascha Wildner break;
5600d02842fSSascha Wildner
5610d02842fSSascha Wildner case ACPI_EXD_STRING:
5620d02842fSSascha Wildner
5630d02842fSSascha Wildner AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
5640d02842fSSascha Wildner AcpiOsPrintf ("\n");
5650d02842fSSascha Wildner break;
5660d02842fSSascha Wildner
5670d02842fSSascha Wildner case ACPI_EXD_BUFFER:
5680d02842fSSascha Wildner
569820c5b08SSascha Wildner ACPI_DUMP_BUFFER (
570820c5b08SSascha Wildner ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length);
5710d02842fSSascha Wildner break;
5720d02842fSSascha Wildner
5730d02842fSSascha Wildner case ACPI_EXD_PACKAGE:
5740d02842fSSascha Wildner
5750d02842fSSascha Wildner /* Dump the package contents */
5760d02842fSSascha Wildner
5770d02842fSSascha Wildner AcpiOsPrintf ("\nPackage Contents:\n");
5780d02842fSSascha Wildner AcpiExDumpPackageObj (ObjDesc, 0, 0);
5790d02842fSSascha Wildner break;
5800d02842fSSascha Wildner
5810d02842fSSascha Wildner case ACPI_EXD_FIELD:
5820d02842fSSascha Wildner
5830d02842fSSascha Wildner AcpiExDumpObject (ObjDesc, AcpiExDumpFieldCommon);
5840d02842fSSascha Wildner break;
5850d02842fSSascha Wildner
5860d02842fSSascha Wildner case ACPI_EXD_REFERENCE:
5870d02842fSSascha Wildner
5882ffe9f16SSascha Wildner AcpiExOutString ("Class Name", AcpiUtGetReferenceName (ObjDesc));
5890d02842fSSascha Wildner AcpiExDumpReferenceObj (ObjDesc);
5900d02842fSSascha Wildner break;
5910d02842fSSascha Wildner
5926a0135c2SSascha Wildner case ACPI_EXD_LIST:
5936a0135c2SSascha Wildner
5946a0135c2SSascha Wildner Start = *ACPI_CAST_PTR (void *, Target);
5956a0135c2SSascha Wildner Next = Start;
5966a0135c2SSascha Wildner
5976a0135c2SSascha Wildner AcpiOsPrintf ("%20s : %p ", Name, Next);
5986a0135c2SSascha Wildner if (Next)
5996a0135c2SSascha Wildner {
6003c639e0cSSascha Wildner AcpiOsPrintf ("%s (Type %2.2X)",
6016a0135c2SSascha Wildner AcpiUtGetObjectTypeName (Next), Next->Common.Type);
6026a0135c2SSascha Wildner
6036a0135c2SSascha Wildner while (Next->Common.NextObject)
6046a0135c2SSascha Wildner {
6056a0135c2SSascha Wildner if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
6066a0135c2SSascha Wildner !Data)
6076a0135c2SSascha Wildner {
6086a0135c2SSascha Wildner Data = Next;
6096a0135c2SSascha Wildner }
6106a0135c2SSascha Wildner
6116a0135c2SSascha Wildner Next = Next->Common.NextObject;
6126a0135c2SSascha Wildner AcpiOsPrintf ("->%p(%s %2.2X)", Next,
6136a0135c2SSascha Wildner AcpiUtGetObjectTypeName (Next), Next->Common.Type);
6146a0135c2SSascha Wildner
6156a0135c2SSascha Wildner if ((Next == Start) || (Next == Data))
6166a0135c2SSascha Wildner {
617820c5b08SSascha Wildner AcpiOsPrintf (
618820c5b08SSascha Wildner "\n**** Error: Object list appears to be circular linked");
6196a0135c2SSascha Wildner break;
6206a0135c2SSascha Wildner }
6216a0135c2SSascha Wildner }
6226a0135c2SSascha Wildner }
6233c639e0cSSascha Wildner else
6243c639e0cSSascha Wildner {
6253c639e0cSSascha Wildner AcpiOsPrintf ("- No attached objects");
6263c639e0cSSascha Wildner }
6276a0135c2SSascha Wildner
628066b6da2SSascha Wildner AcpiOsPrintf ("\n");
6296a0135c2SSascha Wildner break;
6306a0135c2SSascha Wildner
6316a0135c2SSascha Wildner case ACPI_EXD_HDLR_LIST:
6326a0135c2SSascha Wildner
6336a0135c2SSascha Wildner Start = *ACPI_CAST_PTR (void *, Target);
6346a0135c2SSascha Wildner Next = Start;
6356a0135c2SSascha Wildner
6366a0135c2SSascha Wildner AcpiOsPrintf ("%20s : %p", Name, Next);
6376a0135c2SSascha Wildner if (Next)
6386a0135c2SSascha Wildner {
6396a0135c2SSascha Wildner AcpiOsPrintf ("(%s %2.2X)",
640f5f76cf2SSascha Wildner AcpiUtGetObjectTypeName (Next),
641f5f76cf2SSascha Wildner Next->AddressSpace.SpaceId);
6426a0135c2SSascha Wildner
6436a0135c2SSascha Wildner while (Next->AddressSpace.Next)
6446a0135c2SSascha Wildner {
6456a0135c2SSascha Wildner if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
6466a0135c2SSascha Wildner !Data)
6476a0135c2SSascha Wildner {
6486a0135c2SSascha Wildner Data = Next;
6496a0135c2SSascha Wildner }
6506a0135c2SSascha Wildner
6516a0135c2SSascha Wildner Next = Next->AddressSpace.Next;
6526a0135c2SSascha Wildner AcpiOsPrintf ("->%p(%s %2.2X)", Next,
653f5f76cf2SSascha Wildner AcpiUtGetObjectTypeName (Next),
654f5f76cf2SSascha Wildner Next->AddressSpace.SpaceId);
6556a0135c2SSascha Wildner
6566a0135c2SSascha Wildner if ((Next == Start) || (Next == Data))
6576a0135c2SSascha Wildner {
658820c5b08SSascha Wildner AcpiOsPrintf (
659820c5b08SSascha Wildner "\n**** Error: Handler list appears to be circular linked");
6606a0135c2SSascha Wildner break;
6616a0135c2SSascha Wildner }
6626a0135c2SSascha Wildner }
6636a0135c2SSascha Wildner }
6646a0135c2SSascha Wildner
665066b6da2SSascha Wildner AcpiOsPrintf ("\n");
6666a0135c2SSascha Wildner break;
6676a0135c2SSascha Wildner
6686a0135c2SSascha Wildner case ACPI_EXD_RGN_LIST:
6696a0135c2SSascha Wildner
6706a0135c2SSascha Wildner Start = *ACPI_CAST_PTR (void *, Target);
6716a0135c2SSascha Wildner Next = Start;
6726a0135c2SSascha Wildner
6736a0135c2SSascha Wildner AcpiOsPrintf ("%20s : %p", Name, Next);
6746a0135c2SSascha Wildner if (Next)
6756a0135c2SSascha Wildner {
6766a0135c2SSascha Wildner AcpiOsPrintf ("(%s %2.2X)",
6776a0135c2SSascha Wildner AcpiUtGetObjectTypeName (Next), Next->Common.Type);
6786a0135c2SSascha Wildner
6796a0135c2SSascha Wildner while (Next->Region.Next)
6806a0135c2SSascha Wildner {
6816a0135c2SSascha Wildner if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
6826a0135c2SSascha Wildner !Data)
6836a0135c2SSascha Wildner {
6846a0135c2SSascha Wildner Data = Next;
6856a0135c2SSascha Wildner }
6866a0135c2SSascha Wildner
6876a0135c2SSascha Wildner Next = Next->Region.Next;
6886a0135c2SSascha Wildner AcpiOsPrintf ("->%p(%s %2.2X)", Next,
6896a0135c2SSascha Wildner AcpiUtGetObjectTypeName (Next), Next->Common.Type);
6906a0135c2SSascha Wildner
6916a0135c2SSascha Wildner if ((Next == Start) || (Next == Data))
6926a0135c2SSascha Wildner {
693820c5b08SSascha Wildner AcpiOsPrintf (
694820c5b08SSascha Wildner "\n**** Error: Region list appears to be circular linked");
6956a0135c2SSascha Wildner break;
6966a0135c2SSascha Wildner }
6976a0135c2SSascha Wildner }
6986a0135c2SSascha Wildner }
6996a0135c2SSascha Wildner
700066b6da2SSascha Wildner AcpiOsPrintf ("\n");
7016a0135c2SSascha Wildner break;
7026a0135c2SSascha Wildner
7036a0135c2SSascha Wildner case ACPI_EXD_NODE:
7046a0135c2SSascha Wildner
7056a0135c2SSascha Wildner Node = *ACPI_CAST_PTR (ACPI_NAMESPACE_NODE *, Target);
7066a0135c2SSascha Wildner
7076a0135c2SSascha Wildner AcpiOsPrintf ("%20s : %p", Name, Node);
7086a0135c2SSascha Wildner if (Node)
7096a0135c2SSascha Wildner {
7106a0135c2SSascha Wildner AcpiOsPrintf (" [%4.4s]", Node->Name.Ascii);
7116a0135c2SSascha Wildner }
7126a0135c2SSascha Wildner AcpiOsPrintf ("\n");
7136a0135c2SSascha Wildner break;
7146a0135c2SSascha Wildner
7150d02842fSSascha Wildner default:
7160d02842fSSascha Wildner
7170d02842fSSascha Wildner AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n",
7180d02842fSSascha Wildner Info->Opcode);
7190d02842fSSascha Wildner return;
7200d02842fSSascha Wildner }
7210d02842fSSascha Wildner
7220d02842fSSascha Wildner Info++;
7230d02842fSSascha Wildner Count--;
7240d02842fSSascha Wildner }
7250d02842fSSascha Wildner }
7260d02842fSSascha Wildner
7270d02842fSSascha Wildner
7280d02842fSSascha Wildner /*******************************************************************************
7290d02842fSSascha Wildner *
7300d02842fSSascha Wildner * FUNCTION: AcpiExDumpOperand
7310d02842fSSascha Wildner *
7320d02842fSSascha Wildner * PARAMETERS: *ObjDesc - Pointer to entry to be dumped
7330d02842fSSascha Wildner * Depth - Current nesting depth
7340d02842fSSascha Wildner *
7350d02842fSSascha Wildner * RETURN: None
7360d02842fSSascha Wildner *
7370d02842fSSascha Wildner * DESCRIPTION: Dump an operand object
7380d02842fSSascha Wildner *
7390d02842fSSascha Wildner ******************************************************************************/
7400d02842fSSascha Wildner
7410d02842fSSascha Wildner void
AcpiExDumpOperand(ACPI_OPERAND_OBJECT * ObjDesc,UINT32 Depth)7420d02842fSSascha Wildner AcpiExDumpOperand (
7430d02842fSSascha Wildner ACPI_OPERAND_OBJECT *ObjDesc,
7440d02842fSSascha Wildner UINT32 Depth)
7450d02842fSSascha Wildner {
7460d02842fSSascha Wildner UINT32 Length;
7470d02842fSSascha Wildner UINT32 Index;
7480d02842fSSascha Wildner
7490d02842fSSascha Wildner
7507bcb6cafSSascha Wildner ACPI_FUNCTION_NAME (ExDumpOperand);
7510d02842fSSascha Wildner
7520d02842fSSascha Wildner
7530d02842fSSascha Wildner /* Check if debug output enabled */
7540d02842fSSascha Wildner
7550d02842fSSascha Wildner if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_EXEC, _COMPONENT))
7560d02842fSSascha Wildner {
7570d02842fSSascha Wildner return;
7580d02842fSSascha Wildner }
7590d02842fSSascha Wildner
7600d02842fSSascha Wildner if (!ObjDesc)
7610d02842fSSascha Wildner {
7620d02842fSSascha Wildner /* This could be a null element of a package */
7630d02842fSSascha Wildner
7640d02842fSSascha Wildner ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Null Object Descriptor\n"));
7650d02842fSSascha Wildner return;
7660d02842fSSascha Wildner }
7670d02842fSSascha Wildner
7680d02842fSSascha Wildner if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
7690d02842fSSascha Wildner {
7700d02842fSSascha Wildner ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p Namespace Node: ", ObjDesc));
7710d02842fSSascha Wildner ACPI_DUMP_ENTRY (ObjDesc, ACPI_LV_EXEC);
7720d02842fSSascha Wildner return;
7730d02842fSSascha Wildner }
7740d02842fSSascha Wildner
7750d02842fSSascha Wildner if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
7760d02842fSSascha Wildner {
7770d02842fSSascha Wildner ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
7780d02842fSSascha Wildner "%p is not a node or operand object: [%s]\n",
7790d02842fSSascha Wildner ObjDesc, AcpiUtGetDescriptorName (ObjDesc)));
7800d02842fSSascha Wildner ACPI_DUMP_BUFFER (ObjDesc, sizeof (ACPI_OPERAND_OBJECT));
7810d02842fSSascha Wildner return;
7820d02842fSSascha Wildner }
7830d02842fSSascha Wildner
7840d02842fSSascha Wildner /* ObjDesc is a valid object */
7850d02842fSSascha Wildner
7860d02842fSSascha Wildner if (Depth > 0)
7870d02842fSSascha Wildner {
7881093ca81SSascha Wildner ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%*s[%u] %p Refs=%u ",
7891093ca81SSascha Wildner Depth, " ", Depth, ObjDesc, ObjDesc->Common.ReferenceCount));
7900d02842fSSascha Wildner }
7910d02842fSSascha Wildner else
7920d02842fSSascha Wildner {
7931093ca81SSascha Wildner ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p Refs=%u ",
7941093ca81SSascha Wildner ObjDesc, ObjDesc->Common.ReferenceCount));
7950d02842fSSascha Wildner }
7960d02842fSSascha Wildner
7970d02842fSSascha Wildner /* Decode object type */
7980d02842fSSascha Wildner
7990d02842fSSascha Wildner switch (ObjDesc->Common.Type)
8000d02842fSSascha Wildner {
8010d02842fSSascha Wildner case ACPI_TYPE_LOCAL_REFERENCE:
8020d02842fSSascha Wildner
803820c5b08SSascha Wildner AcpiOsPrintf ("Reference: [%s] ",
804820c5b08SSascha Wildner AcpiUtGetReferenceName (ObjDesc));
8050d02842fSSascha Wildner
8060d02842fSSascha Wildner switch (ObjDesc->Reference.Class)
8070d02842fSSascha Wildner {
8080d02842fSSascha Wildner case ACPI_REFCLASS_DEBUG:
8090d02842fSSascha Wildner
8100d02842fSSascha Wildner AcpiOsPrintf ("\n");
8110d02842fSSascha Wildner break;
8120d02842fSSascha Wildner
8130d02842fSSascha Wildner case ACPI_REFCLASS_INDEX:
8140d02842fSSascha Wildner
8150d02842fSSascha Wildner AcpiOsPrintf ("%p\n", ObjDesc->Reference.Object);
8160d02842fSSascha Wildner break;
8170d02842fSSascha Wildner
8180d02842fSSascha Wildner case ACPI_REFCLASS_TABLE:
8190d02842fSSascha Wildner
8200d02842fSSascha Wildner AcpiOsPrintf ("Table Index %X\n", ObjDesc->Reference.Value);
8210d02842fSSascha Wildner break;
8220d02842fSSascha Wildner
8230d02842fSSascha Wildner case ACPI_REFCLASS_REFOF:
8240d02842fSSascha Wildner
8250d02842fSSascha Wildner AcpiOsPrintf ("%p [%s]\n", ObjDesc->Reference.Object,
8260d02842fSSascha Wildner AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
8270d02842fSSascha Wildner ObjDesc->Reference.Object)->Common.Type));
8280d02842fSSascha Wildner break;
8290d02842fSSascha Wildner
8300d02842fSSascha Wildner case ACPI_REFCLASS_NAME:
8310d02842fSSascha Wildner
8321093ca81SSascha Wildner AcpiUtRepairName (ObjDesc->Reference.Node->Name.Ascii);
8331093ca81SSascha Wildner AcpiOsPrintf ("- [%4.4s] (Node %p)\n",
8341093ca81SSascha Wildner ObjDesc->Reference.Node->Name.Ascii,
8351093ca81SSascha Wildner ObjDesc->Reference.Node);
8360d02842fSSascha Wildner break;
8370d02842fSSascha Wildner
8380d02842fSSascha Wildner case ACPI_REFCLASS_ARG:
8390d02842fSSascha Wildner case ACPI_REFCLASS_LOCAL:
8400d02842fSSascha Wildner
8410d02842fSSascha Wildner AcpiOsPrintf ("%X\n", ObjDesc->Reference.Value);
8420d02842fSSascha Wildner break;
8430d02842fSSascha Wildner
8440d02842fSSascha Wildner default: /* Unknown reference class */
8450d02842fSSascha Wildner
8460d02842fSSascha Wildner AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class);
8470d02842fSSascha Wildner break;
8480d02842fSSascha Wildner }
8490d02842fSSascha Wildner break;
8500d02842fSSascha Wildner
8510d02842fSSascha Wildner case ACPI_TYPE_BUFFER:
8520d02842fSSascha Wildner
8530d02842fSSascha Wildner AcpiOsPrintf ("Buffer length %.2X @ %p\n",
8540d02842fSSascha Wildner ObjDesc->Buffer.Length, ObjDesc->Buffer.Pointer);
8550d02842fSSascha Wildner
8560d02842fSSascha Wildner /* Debug only -- dump the buffer contents */
8570d02842fSSascha Wildner
8580d02842fSSascha Wildner if (ObjDesc->Buffer.Pointer)
8590d02842fSSascha Wildner {
8600d02842fSSascha Wildner Length = ObjDesc->Buffer.Length;
8610d02842fSSascha Wildner if (Length > 128)
8620d02842fSSascha Wildner {
8630d02842fSSascha Wildner Length = 128;
8640d02842fSSascha Wildner }
8650d02842fSSascha Wildner
866820c5b08SSascha Wildner AcpiOsPrintf (
867820c5b08SSascha Wildner "Buffer Contents: (displaying length 0x%.2X)\n", Length);
8680d02842fSSascha Wildner ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, Length);
8690d02842fSSascha Wildner }
8700d02842fSSascha Wildner break;
8710d02842fSSascha Wildner
8720d02842fSSascha Wildner case ACPI_TYPE_INTEGER:
8730d02842fSSascha Wildner
8740d02842fSSascha Wildner AcpiOsPrintf ("Integer %8.8X%8.8X\n",
8750d02842fSSascha Wildner ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
8760d02842fSSascha Wildner break;
8770d02842fSSascha Wildner
8780d02842fSSascha Wildner case ACPI_TYPE_PACKAGE:
8790d02842fSSascha Wildner
8800d02842fSSascha Wildner AcpiOsPrintf ("Package [Len %X] ElementArray %p\n",
8810d02842fSSascha Wildner ObjDesc->Package.Count, ObjDesc->Package.Elements);
8820d02842fSSascha Wildner
8830d02842fSSascha Wildner /*
8840d02842fSSascha Wildner * If elements exist, package element pointer is valid,
8850d02842fSSascha Wildner * and debug_level exceeds 1, dump package's elements.
8860d02842fSSascha Wildner */
8870d02842fSSascha Wildner if (ObjDesc->Package.Count &&
8880d02842fSSascha Wildner ObjDesc->Package.Elements &&
8890d02842fSSascha Wildner AcpiDbgLevel > 1)
8900d02842fSSascha Wildner {
8910d02842fSSascha Wildner for (Index = 0; Index < ObjDesc->Package.Count; Index++)
8920d02842fSSascha Wildner {
893820c5b08SSascha Wildner AcpiExDumpOperand (
894820c5b08SSascha Wildner ObjDesc->Package.Elements[Index], Depth + 1);
8950d02842fSSascha Wildner }
8960d02842fSSascha Wildner }
8970d02842fSSascha Wildner break;
8980d02842fSSascha Wildner
8990d02842fSSascha Wildner case ACPI_TYPE_REGION:
9000d02842fSSascha Wildner
9010d02842fSSascha Wildner AcpiOsPrintf ("Region %s (%X)",
9020d02842fSSascha Wildner AcpiUtGetRegionName (ObjDesc->Region.SpaceId),
9030d02842fSSascha Wildner ObjDesc->Region.SpaceId);
9040d02842fSSascha Wildner
9050d02842fSSascha Wildner /*
9060d02842fSSascha Wildner * If the address and length have not been evaluated,
9070d02842fSSascha Wildner * don't print them.
9080d02842fSSascha Wildner */
9090d02842fSSascha Wildner if (!(ObjDesc->Region.Flags & AOPOBJ_DATA_VALID))
9100d02842fSSascha Wildner {
9110d02842fSSascha Wildner AcpiOsPrintf ("\n");
9120d02842fSSascha Wildner }
9130d02842fSSascha Wildner else
9140d02842fSSascha Wildner {
9150d02842fSSascha Wildner AcpiOsPrintf (" base %8.8X%8.8X Length %X\n",
9165943f66cSSascha Wildner ACPI_FORMAT_UINT64 (ObjDesc->Region.Address),
9170d02842fSSascha Wildner ObjDesc->Region.Length);
9180d02842fSSascha Wildner }
9190d02842fSSascha Wildner break;
9200d02842fSSascha Wildner
9210d02842fSSascha Wildner case ACPI_TYPE_STRING:
9220d02842fSSascha Wildner
9230d02842fSSascha Wildner AcpiOsPrintf ("String length %X @ %p ",
9240d02842fSSascha Wildner ObjDesc->String.Length,
9250d02842fSSascha Wildner ObjDesc->String.Pointer);
9260d02842fSSascha Wildner
9270d02842fSSascha Wildner AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
9280d02842fSSascha Wildner AcpiOsPrintf ("\n");
9290d02842fSSascha Wildner break;
9300d02842fSSascha Wildner
9310d02842fSSascha Wildner case ACPI_TYPE_LOCAL_BANK_FIELD:
9320d02842fSSascha Wildner
9330d02842fSSascha Wildner AcpiOsPrintf ("BankField\n");
9340d02842fSSascha Wildner break;
9350d02842fSSascha Wildner
9360d02842fSSascha Wildner case ACPI_TYPE_LOCAL_REGION_FIELD:
9370d02842fSSascha Wildner
9380d02842fSSascha Wildner AcpiOsPrintf ("RegionField: Bits=%X AccWidth=%X Lock=%X Update=%X at "
9390d02842fSSascha Wildner "byte=%X bit=%X of below:\n",
9400d02842fSSascha Wildner ObjDesc->Field.BitLength,
9410d02842fSSascha Wildner ObjDesc->Field.AccessByteWidth,
9420d02842fSSascha Wildner ObjDesc->Field.FieldFlags & AML_FIELD_LOCK_RULE_MASK,
9430d02842fSSascha Wildner ObjDesc->Field.FieldFlags & AML_FIELD_UPDATE_RULE_MASK,
9440d02842fSSascha Wildner ObjDesc->Field.BaseByteOffset,
9450d02842fSSascha Wildner ObjDesc->Field.StartFieldBitOffset);
9460d02842fSSascha Wildner
9470d02842fSSascha Wildner AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth + 1);
9480d02842fSSascha Wildner break;
9490d02842fSSascha Wildner
9500d02842fSSascha Wildner case ACPI_TYPE_LOCAL_INDEX_FIELD:
9510d02842fSSascha Wildner
9520d02842fSSascha Wildner AcpiOsPrintf ("IndexField\n");
9530d02842fSSascha Wildner break;
9540d02842fSSascha Wildner
9550d02842fSSascha Wildner case ACPI_TYPE_BUFFER_FIELD:
9560d02842fSSascha Wildner
9570d02842fSSascha Wildner AcpiOsPrintf ("BufferField: %X bits at byte %X bit %X of\n",
9580d02842fSSascha Wildner ObjDesc->BufferField.BitLength,
9590d02842fSSascha Wildner ObjDesc->BufferField.BaseByteOffset,
9600d02842fSSascha Wildner ObjDesc->BufferField.StartFieldBitOffset);
9610d02842fSSascha Wildner
9620d02842fSSascha Wildner if (!ObjDesc->BufferField.BufferObj)
9630d02842fSSascha Wildner {
9640d02842fSSascha Wildner ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*NULL*\n"));
9650d02842fSSascha Wildner }
9660d02842fSSascha Wildner else if ((ObjDesc->BufferField.BufferObj)->Common.Type !=
9670d02842fSSascha Wildner ACPI_TYPE_BUFFER)
9680d02842fSSascha Wildner {
9690d02842fSSascha Wildner AcpiOsPrintf ("*not a Buffer*\n");
9700d02842fSSascha Wildner }
9710d02842fSSascha Wildner else
9720d02842fSSascha Wildner {
9730d02842fSSascha Wildner AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth + 1);
9740d02842fSSascha Wildner }
9750d02842fSSascha Wildner break;
9760d02842fSSascha Wildner
9770d02842fSSascha Wildner case ACPI_TYPE_EVENT:
9780d02842fSSascha Wildner
9790d02842fSSascha Wildner AcpiOsPrintf ("Event\n");
9800d02842fSSascha Wildner break;
9810d02842fSSascha Wildner
9820d02842fSSascha Wildner case ACPI_TYPE_METHOD:
9830d02842fSSascha Wildner
9840d02842fSSascha Wildner AcpiOsPrintf ("Method(%X) @ %p:%X\n",
9850d02842fSSascha Wildner ObjDesc->Method.ParamCount,
9860d02842fSSascha Wildner ObjDesc->Method.AmlStart,
9870d02842fSSascha Wildner ObjDesc->Method.AmlLength);
9880d02842fSSascha Wildner break;
9890d02842fSSascha Wildner
9900d02842fSSascha Wildner case ACPI_TYPE_MUTEX:
9910d02842fSSascha Wildner
9920d02842fSSascha Wildner AcpiOsPrintf ("Mutex\n");
9930d02842fSSascha Wildner break;
9940d02842fSSascha Wildner
9950d02842fSSascha Wildner case ACPI_TYPE_DEVICE:
9960d02842fSSascha Wildner
9970d02842fSSascha Wildner AcpiOsPrintf ("Device\n");
9980d02842fSSascha Wildner break;
9990d02842fSSascha Wildner
10000d02842fSSascha Wildner case ACPI_TYPE_POWER:
10010d02842fSSascha Wildner
10020d02842fSSascha Wildner AcpiOsPrintf ("Power\n");
10030d02842fSSascha Wildner break;
10040d02842fSSascha Wildner
10050d02842fSSascha Wildner case ACPI_TYPE_PROCESSOR:
10060d02842fSSascha Wildner
10070d02842fSSascha Wildner AcpiOsPrintf ("Processor\n");
10080d02842fSSascha Wildner break;
10090d02842fSSascha Wildner
10100d02842fSSascha Wildner case ACPI_TYPE_THERMAL:
10110d02842fSSascha Wildner
10120d02842fSSascha Wildner AcpiOsPrintf ("Thermal\n");
10130d02842fSSascha Wildner break;
10140d02842fSSascha Wildner
10150d02842fSSascha Wildner default:
10160d02842fSSascha Wildner
10170d02842fSSascha Wildner /* Unknown Type */
10180d02842fSSascha Wildner
10190d02842fSSascha Wildner AcpiOsPrintf ("Unknown Type %X\n", ObjDesc->Common.Type);
10200d02842fSSascha Wildner break;
10210d02842fSSascha Wildner }
10220d02842fSSascha Wildner
10230d02842fSSascha Wildner return;
10240d02842fSSascha Wildner }
10250d02842fSSascha Wildner
10260d02842fSSascha Wildner
10270d02842fSSascha Wildner /*******************************************************************************
10280d02842fSSascha Wildner *
10290d02842fSSascha Wildner * FUNCTION: AcpiExDumpOperands
10300d02842fSSascha Wildner *
10310d02842fSSascha Wildner * PARAMETERS: Operands - A list of Operand objects
10320d02842fSSascha Wildner * OpcodeName - AML opcode name
10330d02842fSSascha Wildner * NumOperands - Operand count for this opcode
10340d02842fSSascha Wildner *
10350d02842fSSascha Wildner * DESCRIPTION: Dump the operands associated with the opcode
10360d02842fSSascha Wildner *
10370d02842fSSascha Wildner ******************************************************************************/
10380d02842fSSascha Wildner
10390d02842fSSascha Wildner void
AcpiExDumpOperands(ACPI_OPERAND_OBJECT ** Operands,const char * OpcodeName,UINT32 NumOperands)10400d02842fSSascha Wildner AcpiExDumpOperands (
10410d02842fSSascha Wildner ACPI_OPERAND_OBJECT **Operands,
10420d02842fSSascha Wildner const char *OpcodeName,
10430d02842fSSascha Wildner UINT32 NumOperands)
10440d02842fSSascha Wildner {
10457bcb6cafSSascha Wildner ACPI_FUNCTION_TRACE (ExDumpOperands);
10460d02842fSSascha Wildner
10470d02842fSSascha Wildner
10480d02842fSSascha Wildner if (!OpcodeName)
10490d02842fSSascha Wildner {
10500d02842fSSascha Wildner OpcodeName = "UNKNOWN";
10510d02842fSSascha Wildner }
10520d02842fSSascha Wildner
10530d02842fSSascha Wildner ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
10540d02842fSSascha Wildner "**** Start operand dump for opcode [%s], %u operands\n",
10550d02842fSSascha Wildner OpcodeName, NumOperands));
10560d02842fSSascha Wildner
10570d02842fSSascha Wildner if (NumOperands == 0)
10580d02842fSSascha Wildner {
10590d02842fSSascha Wildner NumOperands = 1;
10600d02842fSSascha Wildner }
10610d02842fSSascha Wildner
10620d02842fSSascha Wildner /* Dump the individual operands */
10630d02842fSSascha Wildner
10640d02842fSSascha Wildner while (NumOperands)
10650d02842fSSascha Wildner {
10660d02842fSSascha Wildner AcpiExDumpOperand (*Operands, 0);
10670d02842fSSascha Wildner Operands++;
10680d02842fSSascha Wildner NumOperands--;
10690d02842fSSascha Wildner }
10700d02842fSSascha Wildner
10710d02842fSSascha Wildner ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
10720d02842fSSascha Wildner "**** End operand dump for [%s]\n", OpcodeName));
10737bcb6cafSSascha Wildner return_VOID;
10740d02842fSSascha Wildner }
10750d02842fSSascha Wildner
10760d02842fSSascha Wildner
10770d02842fSSascha Wildner /*******************************************************************************
10780d02842fSSascha Wildner *
10790d02842fSSascha Wildner * FUNCTION: AcpiExOut* functions
10800d02842fSSascha Wildner *
10810d02842fSSascha Wildner * PARAMETERS: Title - Descriptive text
10820d02842fSSascha Wildner * Value - Value to be displayed
10830d02842fSSascha Wildner *
10840d02842fSSascha Wildner * DESCRIPTION: Object dump output formatting functions. These functions
10850d02842fSSascha Wildner * reduce the number of format strings required and keeps them
10860d02842fSSascha Wildner * all in one place for easy modification.
10870d02842fSSascha Wildner *
10880d02842fSSascha Wildner ******************************************************************************/
10890d02842fSSascha Wildner
10900d02842fSSascha Wildner static void
AcpiExOutString(const char * Title,const char * Value)10910d02842fSSascha Wildner AcpiExOutString (
10922ffe9f16SSascha Wildner const char *Title,
10932ffe9f16SSascha Wildner const char *Value)
10940d02842fSSascha Wildner {
10950d02842fSSascha Wildner AcpiOsPrintf ("%20s : %s\n", Title, Value);
10960d02842fSSascha Wildner }
10970d02842fSSascha Wildner
10980d02842fSSascha Wildner static void
AcpiExOutPointer(const char * Title,const void * Value)10990d02842fSSascha Wildner AcpiExOutPointer (
11002ffe9f16SSascha Wildner const char *Title,
11012ffe9f16SSascha Wildner const void *Value)
11020d02842fSSascha Wildner {
11030d02842fSSascha Wildner AcpiOsPrintf ("%20s : %p\n", Title, Value);
11040d02842fSSascha Wildner }
11050d02842fSSascha Wildner
11060d02842fSSascha Wildner
11070d02842fSSascha Wildner /*******************************************************************************
11080d02842fSSascha Wildner *
11090d02842fSSascha Wildner * FUNCTION: AcpiExDumpNamespaceNode
11100d02842fSSascha Wildner *
11110d02842fSSascha Wildner * PARAMETERS: Node - Descriptor to dump
11120d02842fSSascha Wildner * Flags - Force display if TRUE
11130d02842fSSascha Wildner *
11140d02842fSSascha Wildner * DESCRIPTION: Dumps the members of the given.Node
11150d02842fSSascha Wildner *
11160d02842fSSascha Wildner ******************************************************************************/
11170d02842fSSascha Wildner
11180d02842fSSascha Wildner void
AcpiExDumpNamespaceNode(ACPI_NAMESPACE_NODE * Node,UINT32 Flags)11190d02842fSSascha Wildner AcpiExDumpNamespaceNode (
11200d02842fSSascha Wildner ACPI_NAMESPACE_NODE *Node,
11210d02842fSSascha Wildner UINT32 Flags)
11220d02842fSSascha Wildner {
11230d02842fSSascha Wildner
11240d02842fSSascha Wildner ACPI_FUNCTION_ENTRY ();
11250d02842fSSascha Wildner
11260d02842fSSascha Wildner
11270d02842fSSascha Wildner if (!Flags)
11280d02842fSSascha Wildner {
11290d02842fSSascha Wildner /* Check if debug output enabled */
11300d02842fSSascha Wildner
11310d02842fSSascha Wildner if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_OBJECTS, _COMPONENT))
11320d02842fSSascha Wildner {
11330d02842fSSascha Wildner return;
11340d02842fSSascha Wildner }
11350d02842fSSascha Wildner }
11360d02842fSSascha Wildner
11370d02842fSSascha Wildner AcpiOsPrintf ("%20s : %4.4s\n", "Name", AcpiUtGetNodeName (Node));
11386a0135c2SSascha Wildner AcpiOsPrintf ("%20s : %2.2X [%s]\n", "Type",
11396a0135c2SSascha Wildner Node->Type, AcpiUtGetTypeName (Node->Type));
11400d02842fSSascha Wildner
11410d02842fSSascha Wildner AcpiExDumpObject (ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node),
11420d02842fSSascha Wildner AcpiExDumpNode);
11430d02842fSSascha Wildner }
11440d02842fSSascha Wildner
11450d02842fSSascha Wildner
11460d02842fSSascha Wildner /*******************************************************************************
11470d02842fSSascha Wildner *
11480d02842fSSascha Wildner * FUNCTION: AcpiExDumpReferenceObj
11490d02842fSSascha Wildner *
11500d02842fSSascha Wildner * PARAMETERS: Object - Descriptor to dump
11510d02842fSSascha Wildner *
11520d02842fSSascha Wildner * DESCRIPTION: Dumps a reference object
11530d02842fSSascha Wildner *
11540d02842fSSascha Wildner ******************************************************************************/
11550d02842fSSascha Wildner
11560d02842fSSascha Wildner static void
AcpiExDumpReferenceObj(ACPI_OPERAND_OBJECT * ObjDesc)11570d02842fSSascha Wildner AcpiExDumpReferenceObj (
11580d02842fSSascha Wildner ACPI_OPERAND_OBJECT *ObjDesc)
11590d02842fSSascha Wildner {
11600d02842fSSascha Wildner ACPI_BUFFER RetBuf;
11610d02842fSSascha Wildner ACPI_STATUS Status;
11620d02842fSSascha Wildner
11630d02842fSSascha Wildner
11640d02842fSSascha Wildner RetBuf.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
11650d02842fSSascha Wildner
11660d02842fSSascha Wildner if (ObjDesc->Reference.Class == ACPI_REFCLASS_NAME)
11670d02842fSSascha Wildner {
11680d02842fSSascha Wildner AcpiOsPrintf (" %p ", ObjDesc->Reference.Node);
11690d02842fSSascha Wildner
1170267c04fdSSascha Wildner Status = AcpiNsHandleToPathname (ObjDesc->Reference.Node,
11713cc0afc6SSascha Wildner &RetBuf, TRUE);
11720d02842fSSascha Wildner if (ACPI_FAILURE (Status))
11730d02842fSSascha Wildner {
11741093ca81SSascha Wildner AcpiOsPrintf (" Could not convert name to pathname: %s\n",
11751093ca81SSascha Wildner AcpiFormatException (Status));
11760d02842fSSascha Wildner }
11770d02842fSSascha Wildner else
11780d02842fSSascha Wildner {
11791093ca81SSascha Wildner AcpiOsPrintf ("%s: %s\n",
11801093ca81SSascha Wildner AcpiUtGetTypeName (ObjDesc->Reference.Node->Type),
11811093ca81SSascha Wildner (char *) RetBuf.Pointer);
11820d02842fSSascha Wildner ACPI_FREE (RetBuf.Pointer);
11830d02842fSSascha Wildner }
11840d02842fSSascha Wildner }
11850d02842fSSascha Wildner else if (ObjDesc->Reference.Object)
11860d02842fSSascha Wildner {
11870d02842fSSascha Wildner if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND)
11880d02842fSSascha Wildner {
118925ca8c79SSascha Wildner AcpiOsPrintf ("%22s %p", "Target :",
119025ca8c79SSascha Wildner ObjDesc->Reference.Object);
11910d02842fSSascha Wildner if (ObjDesc->Reference.Class == ACPI_REFCLASS_TABLE)
11920d02842fSSascha Wildner {
119325ca8c79SSascha Wildner AcpiOsPrintf (" Table Index: %X\n",
119425ca8c79SSascha Wildner ObjDesc->Reference.Value);
11950d02842fSSascha Wildner }
11960d02842fSSascha Wildner else
11970d02842fSSascha Wildner {
119825ca8c79SSascha Wildner AcpiOsPrintf (" [%s]\n",
11990d02842fSSascha Wildner AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
12000d02842fSSascha Wildner ObjDesc->Reference.Object)->Common.Type));
12010d02842fSSascha Wildner }
12020d02842fSSascha Wildner }
12030d02842fSSascha Wildner else
12040d02842fSSascha Wildner {
12050d02842fSSascha Wildner AcpiOsPrintf (" Target: %p\n", ObjDesc->Reference.Object);
12060d02842fSSascha Wildner }
12070d02842fSSascha Wildner }
12080d02842fSSascha Wildner }
12090d02842fSSascha Wildner
12100d02842fSSascha Wildner
12110d02842fSSascha Wildner /*******************************************************************************
12120d02842fSSascha Wildner *
12130d02842fSSascha Wildner * FUNCTION: AcpiExDumpPackageObj
12140d02842fSSascha Wildner *
12150d02842fSSascha Wildner * PARAMETERS: ObjDesc - Descriptor to dump
12160d02842fSSascha Wildner * Level - Indentation Level
12170d02842fSSascha Wildner * Index - Package index for this object
12180d02842fSSascha Wildner *
12190d02842fSSascha Wildner * DESCRIPTION: Dumps the elements of the package
12200d02842fSSascha Wildner *
12210d02842fSSascha Wildner ******************************************************************************/
12220d02842fSSascha Wildner
12230d02842fSSascha Wildner static void
AcpiExDumpPackageObj(ACPI_OPERAND_OBJECT * ObjDesc,UINT32 Level,UINT32 Index)12240d02842fSSascha Wildner AcpiExDumpPackageObj (
12250d02842fSSascha Wildner ACPI_OPERAND_OBJECT *ObjDesc,
12260d02842fSSascha Wildner UINT32 Level,
12270d02842fSSascha Wildner UINT32 Index)
12280d02842fSSascha Wildner {
12290d02842fSSascha Wildner UINT32 i;
12300d02842fSSascha Wildner
12310d02842fSSascha Wildner
12320d02842fSSascha Wildner /* Indentation and index output */
12330d02842fSSascha Wildner
12340d02842fSSascha Wildner if (Level > 0)
12350d02842fSSascha Wildner {
12360d02842fSSascha Wildner for (i = 0; i < Level; i++)
12370d02842fSSascha Wildner {
12380d02842fSSascha Wildner AcpiOsPrintf (" ");
12390d02842fSSascha Wildner }
12400d02842fSSascha Wildner
12410d02842fSSascha Wildner AcpiOsPrintf ("[%.2d] ", Index);
12420d02842fSSascha Wildner }
12430d02842fSSascha Wildner
12440d02842fSSascha Wildner AcpiOsPrintf ("%p ", ObjDesc);
12450d02842fSSascha Wildner
12460d02842fSSascha Wildner /* Null package elements are allowed */
12470d02842fSSascha Wildner
12480d02842fSSascha Wildner if (!ObjDesc)
12490d02842fSSascha Wildner {
12500d02842fSSascha Wildner AcpiOsPrintf ("[Null Object]\n");
12510d02842fSSascha Wildner return;
12520d02842fSSascha Wildner }
12530d02842fSSascha Wildner
12540d02842fSSascha Wildner /* Packages may only contain a few object types */
12550d02842fSSascha Wildner
12560d02842fSSascha Wildner switch (ObjDesc->Common.Type)
12570d02842fSSascha Wildner {
12580d02842fSSascha Wildner case ACPI_TYPE_INTEGER:
12590d02842fSSascha Wildner
12600d02842fSSascha Wildner AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n",
12610d02842fSSascha Wildner ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
12620d02842fSSascha Wildner break;
12630d02842fSSascha Wildner
12640d02842fSSascha Wildner case ACPI_TYPE_STRING:
12650d02842fSSascha Wildner
12660d02842fSSascha Wildner AcpiOsPrintf ("[String] Value: ");
12670d02842fSSascha Wildner AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
12680d02842fSSascha Wildner AcpiOsPrintf ("\n");
12690d02842fSSascha Wildner break;
12700d02842fSSascha Wildner
12710d02842fSSascha Wildner case ACPI_TYPE_BUFFER:
12720d02842fSSascha Wildner
12730d02842fSSascha Wildner AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length);
12740d02842fSSascha Wildner if (ObjDesc->Buffer.Length)
12750d02842fSSascha Wildner {
1276820c5b08SSascha Wildner AcpiUtDebugDumpBuffer (
1277820c5b08SSascha Wildner ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer),
12780d02842fSSascha Wildner ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT);
12790d02842fSSascha Wildner }
12800d02842fSSascha Wildner else
12810d02842fSSascha Wildner {
12820d02842fSSascha Wildner AcpiOsPrintf ("\n");
12830d02842fSSascha Wildner }
12840d02842fSSascha Wildner break;
12850d02842fSSascha Wildner
12860d02842fSSascha Wildner case ACPI_TYPE_PACKAGE:
12870d02842fSSascha Wildner
12880d02842fSSascha Wildner AcpiOsPrintf ("[Package] Contains %u Elements:\n",
12890d02842fSSascha Wildner ObjDesc->Package.Count);
12900d02842fSSascha Wildner
12910d02842fSSascha Wildner for (i = 0; i < ObjDesc->Package.Count; i++)
12920d02842fSSascha Wildner {
1293820c5b08SSascha Wildner AcpiExDumpPackageObj (
1294820c5b08SSascha Wildner ObjDesc->Package.Elements[i], Level + 1, i);
12950d02842fSSascha Wildner }
12960d02842fSSascha Wildner break;
12970d02842fSSascha Wildner
12980d02842fSSascha Wildner case ACPI_TYPE_LOCAL_REFERENCE:
12990d02842fSSascha Wildner
13001093ca81SSascha Wildner AcpiOsPrintf ("[Object Reference] Class [%s]",
13011093ca81SSascha Wildner AcpiUtGetReferenceName (ObjDesc));
13020d02842fSSascha Wildner AcpiExDumpReferenceObj (ObjDesc);
13030d02842fSSascha Wildner break;
13040d02842fSSascha Wildner
13050d02842fSSascha Wildner default:
13060d02842fSSascha Wildner
13073c639e0cSSascha Wildner AcpiOsPrintf ("[%s] Type: %2.2X\n",
13083c639e0cSSascha Wildner AcpiUtGetTypeName (ObjDesc->Common.Type), ObjDesc->Common.Type);
13090d02842fSSascha Wildner break;
13100d02842fSSascha Wildner }
13110d02842fSSascha Wildner }
13120d02842fSSascha Wildner
13130d02842fSSascha Wildner
13140d02842fSSascha Wildner /*******************************************************************************
13150d02842fSSascha Wildner *
13160d02842fSSascha Wildner * FUNCTION: AcpiExDumpObjectDescriptor
13170d02842fSSascha Wildner *
13180d02842fSSascha Wildner * PARAMETERS: ObjDesc - Descriptor to dump
13190d02842fSSascha Wildner * Flags - Force display if TRUE
13200d02842fSSascha Wildner *
13210d02842fSSascha Wildner * DESCRIPTION: Dumps the members of the object descriptor given.
13220d02842fSSascha Wildner *
13230d02842fSSascha Wildner ******************************************************************************/
13240d02842fSSascha Wildner
13250d02842fSSascha Wildner void
AcpiExDumpObjectDescriptor(ACPI_OPERAND_OBJECT * ObjDesc,UINT32 Flags)13260d02842fSSascha Wildner AcpiExDumpObjectDescriptor (
13270d02842fSSascha Wildner ACPI_OPERAND_OBJECT *ObjDesc,
13280d02842fSSascha Wildner UINT32 Flags)
13290d02842fSSascha Wildner {
13300d02842fSSascha Wildner ACPI_FUNCTION_TRACE (ExDumpObjectDescriptor);
13310d02842fSSascha Wildner
13320d02842fSSascha Wildner
13330d02842fSSascha Wildner if (!ObjDesc)
13340d02842fSSascha Wildner {
13350d02842fSSascha Wildner return_VOID;
13360d02842fSSascha Wildner }
13370d02842fSSascha Wildner
13380d02842fSSascha Wildner if (!Flags)
13390d02842fSSascha Wildner {
13400d02842fSSascha Wildner /* Check if debug output enabled */
13410d02842fSSascha Wildner
13420d02842fSSascha Wildner if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_OBJECTS, _COMPONENT))
13430d02842fSSascha Wildner {
13440d02842fSSascha Wildner return_VOID;
13450d02842fSSascha Wildner }
13460d02842fSSascha Wildner }
13470d02842fSSascha Wildner
13480d02842fSSascha Wildner if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
13490d02842fSSascha Wildner {
13500d02842fSSascha Wildner AcpiExDumpNamespaceNode ((ACPI_NAMESPACE_NODE *) ObjDesc, Flags);
13510d02842fSSascha Wildner
13526a0135c2SSascha Wildner ObjDesc = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object;
13533c639e0cSSascha Wildner if (!ObjDesc)
13543c639e0cSSascha Wildner {
13553c639e0cSSascha Wildner return_VOID;
13563c639e0cSSascha Wildner }
13573c639e0cSSascha Wildner
13583c639e0cSSascha Wildner AcpiOsPrintf ("\nAttached Object %p", ObjDesc);
13593c639e0cSSascha Wildner if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
13603c639e0cSSascha Wildner {
13613c639e0cSSascha Wildner AcpiOsPrintf (" - Namespace Node");
13623c639e0cSSascha Wildner }
13633c639e0cSSascha Wildner
13643c639e0cSSascha Wildner AcpiOsPrintf (":\n");
13656a0135c2SSascha Wildner goto DumpObject;
13660d02842fSSascha Wildner }
13670d02842fSSascha Wildner
13680d02842fSSascha Wildner if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
13690d02842fSSascha Wildner {
13700d02842fSSascha Wildner AcpiOsPrintf (
13716a0135c2SSascha Wildner "%p is not an ACPI operand object: [%s]\n",
13720d02842fSSascha Wildner ObjDesc, AcpiUtGetDescriptorName (ObjDesc));
13730d02842fSSascha Wildner return_VOID;
13740d02842fSSascha Wildner }
13750d02842fSSascha Wildner
13766a0135c2SSascha Wildner /* Validate the object type */
13776a0135c2SSascha Wildner
13786a0135c2SSascha Wildner if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX)
13790d02842fSSascha Wildner {
13806a0135c2SSascha Wildner AcpiOsPrintf ("Not a known object type: %2.2X\n",
13816a0135c2SSascha Wildner ObjDesc->Common.Type);
13820d02842fSSascha Wildner return_VOID;
13830d02842fSSascha Wildner }
13840d02842fSSascha Wildner
13856a0135c2SSascha Wildner
13866a0135c2SSascha Wildner DumpObject:
13876a0135c2SSascha Wildner
13883c639e0cSSascha Wildner if (!ObjDesc)
13893c639e0cSSascha Wildner {
13903c639e0cSSascha Wildner return_VOID;
13913c639e0cSSascha Wildner }
13923c639e0cSSascha Wildner
13930d02842fSSascha Wildner /* Common Fields */
13940d02842fSSascha Wildner
13950d02842fSSascha Wildner AcpiExDumpObject (ObjDesc, AcpiExDumpCommon);
13960d02842fSSascha Wildner
13970d02842fSSascha Wildner /* Object-specific fields */
13980d02842fSSascha Wildner
13990d02842fSSascha Wildner AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]);
14006a0135c2SSascha Wildner
14016a0135c2SSascha Wildner if (ObjDesc->Common.Type == ACPI_TYPE_REGION)
14026a0135c2SSascha Wildner {
14036a0135c2SSascha Wildner ObjDesc = ObjDesc->Common.NextObject;
14046a0135c2SSascha Wildner if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX)
14056a0135c2SSascha Wildner {
1406820c5b08SSascha Wildner AcpiOsPrintf (
1407820c5b08SSascha Wildner "Secondary object is not a known object type: %2.2X\n",
14086a0135c2SSascha Wildner ObjDesc->Common.Type);
14096a0135c2SSascha Wildner
14106a0135c2SSascha Wildner return_VOID;
14116a0135c2SSascha Wildner }
14126a0135c2SSascha Wildner
14136a0135c2SSascha Wildner AcpiOsPrintf ("\nExtra attached Object (%p):\n", ObjDesc);
14146a0135c2SSascha Wildner AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]);
14156a0135c2SSascha Wildner }
14166a0135c2SSascha Wildner
14170d02842fSSascha Wildner return_VOID;
14180d02842fSSascha Wildner }
14190d02842fSSascha Wildner
14200d02842fSSascha Wildner #endif
1421