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