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