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