exdump.c revision 1.7 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.6 christos * Copyright (C) 2000 - 2015, 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.1 jruoho 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.1 jruoho char *Name;
384 1.4 christos const char *ReferenceName;
385 1.1 jruoho UINT8 Count;
386 1.5 christos ACPI_OPERAND_OBJECT *Start;
387 1.5 christos ACPI_OPERAND_OBJECT *Data = NULL;
388 1.5 christos ACPI_OPERAND_OBJECT *Next;
389 1.5 christos ACPI_NAMESPACE_NODE *Node;
390 1.1 jruoho
391 1.1 jruoho
392 1.1 jruoho if (!Info)
393 1.1 jruoho {
394 1.1 jruoho AcpiOsPrintf (
395 1.1 jruoho "ExDumpObject: Display not implemented for object type %s\n",
396 1.1 jruoho AcpiUtGetObjectTypeName (ObjDesc));
397 1.1 jruoho return;
398 1.1 jruoho }
399 1.1 jruoho
400 1.1 jruoho /* First table entry must contain the table length (# of table entries) */
401 1.1 jruoho
402 1.1 jruoho Count = Info->Offset;
403 1.1 jruoho
404 1.1 jruoho while (Count)
405 1.1 jruoho {
406 1.1 jruoho Target = ACPI_ADD_PTR (UINT8, ObjDesc, Info->Offset);
407 1.2 jruoho Name = __UNCONST(Info->Name);
408 1.1 jruoho
409 1.1 jruoho switch (Info->Opcode)
410 1.1 jruoho {
411 1.1 jruoho case ACPI_EXD_INIT:
412 1.4 christos
413 1.1 jruoho break;
414 1.1 jruoho
415 1.1 jruoho case ACPI_EXD_TYPE:
416 1.1 jruoho
417 1.5 christos AcpiOsPrintf ("%20s : %2.2X [%s]\n", "Type",
418 1.5 christos ObjDesc->Common.Type, AcpiUtGetObjectTypeName (ObjDesc));
419 1.1 jruoho break;
420 1.1 jruoho
421 1.1 jruoho case ACPI_EXD_UINT8:
422 1.1 jruoho
423 1.1 jruoho AcpiOsPrintf ("%20s : %2.2X\n", Name, *Target);
424 1.1 jruoho break;
425 1.1 jruoho
426 1.1 jruoho case ACPI_EXD_UINT16:
427 1.1 jruoho
428 1.1 jruoho AcpiOsPrintf ("%20s : %4.4X\n", Name, ACPI_GET16 (Target));
429 1.1 jruoho break;
430 1.1 jruoho
431 1.1 jruoho case ACPI_EXD_UINT32:
432 1.1 jruoho
433 1.1 jruoho AcpiOsPrintf ("%20s : %8.8X\n", Name, ACPI_GET32 (Target));
434 1.1 jruoho break;
435 1.1 jruoho
436 1.1 jruoho case ACPI_EXD_UINT64:
437 1.1 jruoho
438 1.1 jruoho AcpiOsPrintf ("%20s : %8.8X%8.8X\n", "Value",
439 1.1 jruoho ACPI_FORMAT_UINT64 (ACPI_GET64 (Target)));
440 1.1 jruoho break;
441 1.1 jruoho
442 1.1 jruoho case ACPI_EXD_POINTER:
443 1.1 jruoho case ACPI_EXD_ADDRESS:
444 1.1 jruoho
445 1.1 jruoho AcpiExOutPointer (Name, *ACPI_CAST_PTR (void *, Target));
446 1.1 jruoho break;
447 1.1 jruoho
448 1.1 jruoho case ACPI_EXD_STRING:
449 1.1 jruoho
450 1.1 jruoho AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
451 1.1 jruoho AcpiOsPrintf ("\n");
452 1.1 jruoho break;
453 1.1 jruoho
454 1.1 jruoho case ACPI_EXD_BUFFER:
455 1.1 jruoho
456 1.1 jruoho ACPI_DUMP_BUFFER (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.4 christos ReferenceName = AcpiUtGetReferenceName (ObjDesc);
475 1.4 christos AcpiExOutString ("Class Name", ACPI_CAST_PTR (char, ReferenceName));
476 1.1 jruoho AcpiExDumpReferenceObj (ObjDesc);
477 1.1 jruoho break;
478 1.1 jruoho
479 1.5 christos case ACPI_EXD_LIST:
480 1.5 christos
481 1.5 christos Start = *ACPI_CAST_PTR (void *, Target);
482 1.5 christos Next = Start;
483 1.5 christos
484 1.5 christos AcpiOsPrintf ("%20s : %p", Name, Next);
485 1.5 christos if (Next)
486 1.5 christos {
487 1.5 christos AcpiOsPrintf ("(%s %2.2X)",
488 1.5 christos AcpiUtGetObjectTypeName (Next), Next->Common.Type);
489 1.5 christos
490 1.5 christos while (Next->Common.NextObject)
491 1.5 christos {
492 1.5 christos if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
493 1.5 christos !Data)
494 1.5 christos {
495 1.5 christos Data = Next;
496 1.5 christos }
497 1.5 christos
498 1.5 christos Next = Next->Common.NextObject;
499 1.5 christos AcpiOsPrintf ("->%p(%s %2.2X)", Next,
500 1.5 christos AcpiUtGetObjectTypeName (Next), Next->Common.Type);
501 1.5 christos
502 1.5 christos if ((Next == Start) || (Next == Data))
503 1.5 christos {
504 1.5 christos AcpiOsPrintf ("\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.5 christos AcpiUtGetObjectTypeName (Next), Next->Common.Type);
523 1.5 christos
524 1.5 christos while (Next->AddressSpace.Next)
525 1.5 christos {
526 1.5 christos if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
527 1.5 christos !Data)
528 1.5 christos {
529 1.5 christos Data = Next;
530 1.5 christos }
531 1.5 christos
532 1.5 christos Next = Next->AddressSpace.Next;
533 1.5 christos AcpiOsPrintf ("->%p(%s %2.2X)", Next,
534 1.5 christos AcpiUtGetObjectTypeName (Next), Next->Common.Type);
535 1.5 christos
536 1.5 christos if ((Next == Start) || (Next == Data))
537 1.5 christos {
538 1.5 christos AcpiOsPrintf ("\n**** Error: Handler list appears to be circular linked");
539 1.5 christos break;
540 1.5 christos }
541 1.5 christos }
542 1.5 christos }
543 1.5 christos
544 1.5 christos AcpiOsPrintf ("\n");
545 1.5 christos break;
546 1.5 christos
547 1.5 christos case ACPI_EXD_RGN_LIST:
548 1.5 christos
549 1.5 christos Start = *ACPI_CAST_PTR (void *, Target);
550 1.5 christos Next = Start;
551 1.5 christos
552 1.5 christos AcpiOsPrintf ("%20s : %p", Name, Next);
553 1.5 christos if (Next)
554 1.5 christos {
555 1.5 christos AcpiOsPrintf ("(%s %2.2X)",
556 1.5 christos AcpiUtGetObjectTypeName (Next), Next->Common.Type);
557 1.5 christos
558 1.5 christos while (Next->Region.Next)
559 1.5 christos {
560 1.5 christos if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) &&
561 1.5 christos !Data)
562 1.5 christos {
563 1.5 christos Data = Next;
564 1.5 christos }
565 1.5 christos
566 1.5 christos Next = Next->Region.Next;
567 1.5 christos AcpiOsPrintf ("->%p(%s %2.2X)", Next,
568 1.5 christos AcpiUtGetObjectTypeName (Next), Next->Common.Type);
569 1.5 christos
570 1.5 christos if ((Next == Start) || (Next == Data))
571 1.5 christos {
572 1.5 christos AcpiOsPrintf ("\n**** Error: Region list appears to be circular linked");
573 1.5 christos break;
574 1.5 christos }
575 1.5 christos }
576 1.5 christos }
577 1.5 christos
578 1.5 christos AcpiOsPrintf ("\n");
579 1.5 christos break;
580 1.5 christos
581 1.5 christos case ACPI_EXD_NODE:
582 1.5 christos
583 1.5 christos Node = *ACPI_CAST_PTR (ACPI_NAMESPACE_NODE *, Target);
584 1.5 christos
585 1.5 christos AcpiOsPrintf ("%20s : %p", Name, Node);
586 1.5 christos if (Node)
587 1.5 christos {
588 1.5 christos AcpiOsPrintf (" [%4.4s]", Node->Name.Ascii);
589 1.5 christos }
590 1.5 christos AcpiOsPrintf ("\n");
591 1.5 christos break;
592 1.5 christos
593 1.1 jruoho default:
594 1.1 jruoho
595 1.1 jruoho AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n",
596 1.1 jruoho Info->Opcode);
597 1.1 jruoho return;
598 1.1 jruoho }
599 1.1 jruoho
600 1.1 jruoho Info++;
601 1.1 jruoho Count--;
602 1.1 jruoho }
603 1.1 jruoho }
604 1.1 jruoho
605 1.1 jruoho
606 1.1 jruoho /*******************************************************************************
607 1.1 jruoho *
608 1.1 jruoho * FUNCTION: AcpiExDumpOperand
609 1.1 jruoho *
610 1.1 jruoho * PARAMETERS: *ObjDesc - Pointer to entry to be dumped
611 1.1 jruoho * Depth - Current nesting depth
612 1.1 jruoho *
613 1.1 jruoho * RETURN: None
614 1.1 jruoho *
615 1.1 jruoho * DESCRIPTION: Dump an operand object
616 1.1 jruoho *
617 1.1 jruoho ******************************************************************************/
618 1.1 jruoho
619 1.1 jruoho void
620 1.1 jruoho AcpiExDumpOperand (
621 1.1 jruoho ACPI_OPERAND_OBJECT *ObjDesc,
622 1.1 jruoho UINT32 Depth)
623 1.1 jruoho {
624 1.1 jruoho UINT32 Length;
625 1.1 jruoho UINT32 Index;
626 1.1 jruoho
627 1.1 jruoho
628 1.1 jruoho ACPI_FUNCTION_NAME (ExDumpOperand)
629 1.1 jruoho
630 1.1 jruoho
631 1.4 christos /* Check if debug output enabled */
632 1.4 christos
633 1.4 christos if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_EXEC, _COMPONENT))
634 1.1 jruoho {
635 1.1 jruoho return;
636 1.1 jruoho }
637 1.1 jruoho
638 1.1 jruoho if (!ObjDesc)
639 1.1 jruoho {
640 1.1 jruoho /* This could be a null element of a package */
641 1.1 jruoho
642 1.1 jruoho ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Null Object Descriptor\n"));
643 1.1 jruoho return;
644 1.1 jruoho }
645 1.1 jruoho
646 1.1 jruoho if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
647 1.1 jruoho {
648 1.1 jruoho ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p Namespace Node: ", ObjDesc));
649 1.1 jruoho ACPI_DUMP_ENTRY (ObjDesc, ACPI_LV_EXEC);
650 1.1 jruoho return;
651 1.1 jruoho }
652 1.1 jruoho
653 1.1 jruoho if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
654 1.1 jruoho {
655 1.1 jruoho ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
656 1.1 jruoho "%p is not a node or operand object: [%s]\n",
657 1.1 jruoho ObjDesc, AcpiUtGetDescriptorName (ObjDesc)));
658 1.1 jruoho ACPI_DUMP_BUFFER (ObjDesc, sizeof (ACPI_OPERAND_OBJECT));
659 1.1 jruoho return;
660 1.1 jruoho }
661 1.1 jruoho
662 1.1 jruoho /* ObjDesc is a valid object */
663 1.1 jruoho
664 1.1 jruoho if (Depth > 0)
665 1.1 jruoho {
666 1.1 jruoho ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%*s[%u] %p ",
667 1.1 jruoho Depth, " ", Depth, ObjDesc));
668 1.1 jruoho }
669 1.1 jruoho else
670 1.1 jruoho {
671 1.1 jruoho ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p ", ObjDesc));
672 1.1 jruoho }
673 1.1 jruoho
674 1.1 jruoho /* Decode object type */
675 1.1 jruoho
676 1.1 jruoho switch (ObjDesc->Common.Type)
677 1.1 jruoho {
678 1.1 jruoho case ACPI_TYPE_LOCAL_REFERENCE:
679 1.1 jruoho
680 1.1 jruoho AcpiOsPrintf ("Reference: [%s] ", AcpiUtGetReferenceName (ObjDesc));
681 1.1 jruoho
682 1.1 jruoho switch (ObjDesc->Reference.Class)
683 1.1 jruoho {
684 1.1 jruoho case ACPI_REFCLASS_DEBUG:
685 1.1 jruoho
686 1.1 jruoho AcpiOsPrintf ("\n");
687 1.1 jruoho break;
688 1.1 jruoho
689 1.1 jruoho case ACPI_REFCLASS_INDEX:
690 1.1 jruoho
691 1.1 jruoho AcpiOsPrintf ("%p\n", ObjDesc->Reference.Object);
692 1.1 jruoho break;
693 1.1 jruoho
694 1.1 jruoho case ACPI_REFCLASS_TABLE:
695 1.1 jruoho
696 1.1 jruoho AcpiOsPrintf ("Table Index %X\n", ObjDesc->Reference.Value);
697 1.1 jruoho break;
698 1.1 jruoho
699 1.1 jruoho case ACPI_REFCLASS_REFOF:
700 1.1 jruoho
701 1.1 jruoho AcpiOsPrintf ("%p [%s]\n", ObjDesc->Reference.Object,
702 1.1 jruoho AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
703 1.1 jruoho ObjDesc->Reference.Object)->Common.Type));
704 1.1 jruoho break;
705 1.1 jruoho
706 1.1 jruoho case ACPI_REFCLASS_NAME:
707 1.1 jruoho
708 1.1 jruoho AcpiOsPrintf ("- [%4.4s]\n", ObjDesc->Reference.Node->Name.Ascii);
709 1.1 jruoho break;
710 1.1 jruoho
711 1.1 jruoho case ACPI_REFCLASS_ARG:
712 1.1 jruoho case ACPI_REFCLASS_LOCAL:
713 1.1 jruoho
714 1.1 jruoho AcpiOsPrintf ("%X\n", ObjDesc->Reference.Value);
715 1.1 jruoho break;
716 1.1 jruoho
717 1.1 jruoho default: /* Unknown reference class */
718 1.1 jruoho
719 1.1 jruoho AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class);
720 1.1 jruoho break;
721 1.1 jruoho }
722 1.1 jruoho break;
723 1.1 jruoho
724 1.1 jruoho case ACPI_TYPE_BUFFER:
725 1.1 jruoho
726 1.1 jruoho AcpiOsPrintf ("Buffer length %.2X @ %p\n",
727 1.1 jruoho ObjDesc->Buffer.Length, ObjDesc->Buffer.Pointer);
728 1.1 jruoho
729 1.1 jruoho /* Debug only -- dump the buffer contents */
730 1.1 jruoho
731 1.1 jruoho if (ObjDesc->Buffer.Pointer)
732 1.1 jruoho {
733 1.1 jruoho Length = ObjDesc->Buffer.Length;
734 1.1 jruoho if (Length > 128)
735 1.1 jruoho {
736 1.1 jruoho Length = 128;
737 1.1 jruoho }
738 1.1 jruoho
739 1.1 jruoho AcpiOsPrintf ("Buffer Contents: (displaying length 0x%.2X)\n",
740 1.1 jruoho Length);
741 1.1 jruoho ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, Length);
742 1.1 jruoho }
743 1.1 jruoho break;
744 1.1 jruoho
745 1.1 jruoho case ACPI_TYPE_INTEGER:
746 1.1 jruoho
747 1.1 jruoho AcpiOsPrintf ("Integer %8.8X%8.8X\n",
748 1.1 jruoho ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
749 1.1 jruoho break;
750 1.1 jruoho
751 1.1 jruoho case ACPI_TYPE_PACKAGE:
752 1.1 jruoho
753 1.1 jruoho AcpiOsPrintf ("Package [Len %X] ElementArray %p\n",
754 1.1 jruoho ObjDesc->Package.Count, ObjDesc->Package.Elements);
755 1.1 jruoho
756 1.1 jruoho /*
757 1.1 jruoho * If elements exist, package element pointer is valid,
758 1.1 jruoho * and debug_level exceeds 1, dump package's elements.
759 1.1 jruoho */
760 1.1 jruoho if (ObjDesc->Package.Count &&
761 1.1 jruoho ObjDesc->Package.Elements &&
762 1.1 jruoho AcpiDbgLevel > 1)
763 1.1 jruoho {
764 1.1 jruoho for (Index = 0; Index < ObjDesc->Package.Count; Index++)
765 1.1 jruoho {
766 1.1 jruoho AcpiExDumpOperand (ObjDesc->Package.Elements[Index], Depth+1);
767 1.1 jruoho }
768 1.1 jruoho }
769 1.1 jruoho break;
770 1.1 jruoho
771 1.1 jruoho case ACPI_TYPE_REGION:
772 1.1 jruoho
773 1.1 jruoho AcpiOsPrintf ("Region %s (%X)",
774 1.1 jruoho AcpiUtGetRegionName (ObjDesc->Region.SpaceId),
775 1.1 jruoho ObjDesc->Region.SpaceId);
776 1.1 jruoho
777 1.1 jruoho /*
778 1.1 jruoho * If the address and length have not been evaluated,
779 1.1 jruoho * don't print them.
780 1.1 jruoho */
781 1.1 jruoho if (!(ObjDesc->Region.Flags & AOPOBJ_DATA_VALID))
782 1.1 jruoho {
783 1.1 jruoho AcpiOsPrintf ("\n");
784 1.1 jruoho }
785 1.1 jruoho else
786 1.1 jruoho {
787 1.1 jruoho AcpiOsPrintf (" base %8.8X%8.8X Length %X\n",
788 1.6 christos ACPI_FORMAT_UINT64 (ObjDesc->Region.Address),
789 1.1 jruoho ObjDesc->Region.Length);
790 1.1 jruoho }
791 1.1 jruoho break;
792 1.1 jruoho
793 1.1 jruoho case ACPI_TYPE_STRING:
794 1.1 jruoho
795 1.1 jruoho AcpiOsPrintf ("String length %X @ %p ",
796 1.1 jruoho ObjDesc->String.Length,
797 1.1 jruoho ObjDesc->String.Pointer);
798 1.1 jruoho
799 1.1 jruoho AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
800 1.1 jruoho AcpiOsPrintf ("\n");
801 1.1 jruoho break;
802 1.1 jruoho
803 1.1 jruoho case ACPI_TYPE_LOCAL_BANK_FIELD:
804 1.1 jruoho
805 1.1 jruoho AcpiOsPrintf ("BankField\n");
806 1.1 jruoho break;
807 1.1 jruoho
808 1.1 jruoho case ACPI_TYPE_LOCAL_REGION_FIELD:
809 1.1 jruoho
810 1.1 jruoho AcpiOsPrintf ("RegionField: Bits=%X AccWidth=%X Lock=%X Update=%X at "
811 1.1 jruoho "byte=%X bit=%X of below:\n",
812 1.1 jruoho ObjDesc->Field.BitLength,
813 1.1 jruoho ObjDesc->Field.AccessByteWidth,
814 1.1 jruoho ObjDesc->Field.FieldFlags & AML_FIELD_LOCK_RULE_MASK,
815 1.1 jruoho ObjDesc->Field.FieldFlags & AML_FIELD_UPDATE_RULE_MASK,
816 1.1 jruoho ObjDesc->Field.BaseByteOffset,
817 1.1 jruoho ObjDesc->Field.StartFieldBitOffset);
818 1.1 jruoho
819 1.1 jruoho AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth+1);
820 1.1 jruoho break;
821 1.1 jruoho
822 1.1 jruoho case ACPI_TYPE_LOCAL_INDEX_FIELD:
823 1.1 jruoho
824 1.1 jruoho AcpiOsPrintf ("IndexField\n");
825 1.1 jruoho break;
826 1.1 jruoho
827 1.1 jruoho case ACPI_TYPE_BUFFER_FIELD:
828 1.1 jruoho
829 1.1 jruoho AcpiOsPrintf ("BufferField: %X bits at byte %X bit %X of\n",
830 1.1 jruoho ObjDesc->BufferField.BitLength,
831 1.1 jruoho ObjDesc->BufferField.BaseByteOffset,
832 1.1 jruoho ObjDesc->BufferField.StartFieldBitOffset);
833 1.1 jruoho
834 1.1 jruoho if (!ObjDesc->BufferField.BufferObj)
835 1.1 jruoho {
836 1.1 jruoho ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*NULL*\n"));
837 1.1 jruoho }
838 1.1 jruoho else if ((ObjDesc->BufferField.BufferObj)->Common.Type !=
839 1.1 jruoho ACPI_TYPE_BUFFER)
840 1.1 jruoho {
841 1.1 jruoho AcpiOsPrintf ("*not a Buffer*\n");
842 1.1 jruoho }
843 1.1 jruoho else
844 1.1 jruoho {
845 1.1 jruoho AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth+1);
846 1.1 jruoho }
847 1.1 jruoho break;
848 1.1 jruoho
849 1.1 jruoho case ACPI_TYPE_EVENT:
850 1.1 jruoho
851 1.1 jruoho AcpiOsPrintf ("Event\n");
852 1.1 jruoho break;
853 1.1 jruoho
854 1.1 jruoho case ACPI_TYPE_METHOD:
855 1.1 jruoho
856 1.1 jruoho AcpiOsPrintf ("Method(%X) @ %p:%X\n",
857 1.1 jruoho ObjDesc->Method.ParamCount,
858 1.1 jruoho ObjDesc->Method.AmlStart,
859 1.1 jruoho ObjDesc->Method.AmlLength);
860 1.1 jruoho break;
861 1.1 jruoho
862 1.1 jruoho case ACPI_TYPE_MUTEX:
863 1.1 jruoho
864 1.1 jruoho AcpiOsPrintf ("Mutex\n");
865 1.1 jruoho break;
866 1.1 jruoho
867 1.1 jruoho case ACPI_TYPE_DEVICE:
868 1.1 jruoho
869 1.1 jruoho AcpiOsPrintf ("Device\n");
870 1.1 jruoho break;
871 1.1 jruoho
872 1.1 jruoho case ACPI_TYPE_POWER:
873 1.1 jruoho
874 1.1 jruoho AcpiOsPrintf ("Power\n");
875 1.1 jruoho break;
876 1.1 jruoho
877 1.1 jruoho case ACPI_TYPE_PROCESSOR:
878 1.1 jruoho
879 1.1 jruoho AcpiOsPrintf ("Processor\n");
880 1.1 jruoho break;
881 1.1 jruoho
882 1.1 jruoho case ACPI_TYPE_THERMAL:
883 1.1 jruoho
884 1.1 jruoho AcpiOsPrintf ("Thermal\n");
885 1.1 jruoho break;
886 1.1 jruoho
887 1.4 christos default:
888 1.1 jruoho
889 1.1 jruoho /* Unknown Type */
890 1.1 jruoho
891 1.1 jruoho AcpiOsPrintf ("Unknown Type %X\n", ObjDesc->Common.Type);
892 1.1 jruoho break;
893 1.1 jruoho }
894 1.1 jruoho
895 1.1 jruoho return;
896 1.1 jruoho }
897 1.1 jruoho
898 1.1 jruoho
899 1.1 jruoho /*******************************************************************************
900 1.1 jruoho *
901 1.1 jruoho * FUNCTION: AcpiExDumpOperands
902 1.1 jruoho *
903 1.1 jruoho * PARAMETERS: Operands - A list of Operand objects
904 1.1 jruoho * OpcodeName - AML opcode name
905 1.1 jruoho * NumOperands - Operand count for this opcode
906 1.1 jruoho *
907 1.1 jruoho * DESCRIPTION: Dump the operands associated with the opcode
908 1.1 jruoho *
909 1.1 jruoho ******************************************************************************/
910 1.1 jruoho
911 1.1 jruoho void
912 1.1 jruoho AcpiExDumpOperands (
913 1.1 jruoho ACPI_OPERAND_OBJECT **Operands,
914 1.1 jruoho const char *OpcodeName,
915 1.1 jruoho UINT32 NumOperands)
916 1.1 jruoho {
917 1.1 jruoho ACPI_FUNCTION_NAME (ExDumpOperands);
918 1.1 jruoho
919 1.1 jruoho
920 1.1 jruoho if (!OpcodeName)
921 1.1 jruoho {
922 1.1 jruoho OpcodeName = "UNKNOWN";
923 1.1 jruoho }
924 1.1 jruoho
925 1.1 jruoho ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
926 1.1 jruoho "**** Start operand dump for opcode [%s], %u operands\n",
927 1.1 jruoho OpcodeName, NumOperands));
928 1.1 jruoho
929 1.1 jruoho if (NumOperands == 0)
930 1.1 jruoho {
931 1.1 jruoho NumOperands = 1;
932 1.1 jruoho }
933 1.1 jruoho
934 1.1 jruoho /* Dump the individual operands */
935 1.1 jruoho
936 1.1 jruoho while (NumOperands)
937 1.1 jruoho {
938 1.1 jruoho AcpiExDumpOperand (*Operands, 0);
939 1.1 jruoho Operands++;
940 1.1 jruoho NumOperands--;
941 1.1 jruoho }
942 1.1 jruoho
943 1.1 jruoho ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
944 1.1 jruoho "**** End operand dump for [%s]\n", OpcodeName));
945 1.1 jruoho return;
946 1.1 jruoho }
947 1.1 jruoho
948 1.1 jruoho
949 1.1 jruoho /*******************************************************************************
950 1.1 jruoho *
951 1.1 jruoho * FUNCTION: AcpiExOut* functions
952 1.1 jruoho *
953 1.1 jruoho * PARAMETERS: Title - Descriptive text
954 1.1 jruoho * Value - Value to be displayed
955 1.1 jruoho *
956 1.4 christos * DESCRIPTION: Object dump output formatting functions. These functions
957 1.1 jruoho * reduce the number of format strings required and keeps them
958 1.1 jruoho * all in one place for easy modification.
959 1.1 jruoho *
960 1.1 jruoho ******************************************************************************/
961 1.1 jruoho
962 1.1 jruoho static void
963 1.1 jruoho AcpiExOutString (
964 1.2 jruoho const char *Title,
965 1.2 jruoho const char *Value)
966 1.1 jruoho {
967 1.1 jruoho AcpiOsPrintf ("%20s : %s\n", Title, Value);
968 1.1 jruoho }
969 1.1 jruoho
970 1.1 jruoho static void
971 1.1 jruoho AcpiExOutPointer (
972 1.2 jruoho const char *Title,
973 1.1 jruoho void *Value)
974 1.1 jruoho {
975 1.1 jruoho AcpiOsPrintf ("%20s : %p\n", Title, Value);
976 1.1 jruoho }
977 1.1 jruoho
978 1.1 jruoho
979 1.1 jruoho /*******************************************************************************
980 1.1 jruoho *
981 1.1 jruoho * FUNCTION: AcpiExDumpNamespaceNode
982 1.1 jruoho *
983 1.1 jruoho * PARAMETERS: Node - Descriptor to dump
984 1.1 jruoho * Flags - Force display if TRUE
985 1.1 jruoho *
986 1.1 jruoho * DESCRIPTION: Dumps the members of the given.Node
987 1.1 jruoho *
988 1.1 jruoho ******************************************************************************/
989 1.1 jruoho
990 1.1 jruoho void
991 1.1 jruoho AcpiExDumpNamespaceNode (
992 1.1 jruoho ACPI_NAMESPACE_NODE *Node,
993 1.1 jruoho UINT32 Flags)
994 1.1 jruoho {
995 1.1 jruoho
996 1.1 jruoho ACPI_FUNCTION_ENTRY ();
997 1.1 jruoho
998 1.1 jruoho
999 1.1 jruoho if (!Flags)
1000 1.1 jruoho {
1001 1.4 christos /* Check if debug output enabled */
1002 1.4 christos
1003 1.4 christos if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_OBJECTS, _COMPONENT))
1004 1.1 jruoho {
1005 1.1 jruoho return;
1006 1.1 jruoho }
1007 1.1 jruoho }
1008 1.1 jruoho
1009 1.1 jruoho AcpiOsPrintf ("%20s : %4.4s\n", "Name", AcpiUtGetNodeName (Node));
1010 1.5 christos AcpiOsPrintf ("%20s : %2.2X [%s]\n", "Type",
1011 1.5 christos Node->Type, AcpiUtGetTypeName (Node->Type));
1012 1.1 jruoho
1013 1.1 jruoho AcpiExDumpObject (ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node),
1014 1.1 jruoho AcpiExDumpNode);
1015 1.1 jruoho }
1016 1.1 jruoho
1017 1.1 jruoho
1018 1.1 jruoho /*******************************************************************************
1019 1.1 jruoho *
1020 1.1 jruoho * FUNCTION: AcpiExDumpReferenceObj
1021 1.1 jruoho *
1022 1.1 jruoho * PARAMETERS: Object - Descriptor to dump
1023 1.1 jruoho *
1024 1.1 jruoho * DESCRIPTION: Dumps a reference object
1025 1.1 jruoho *
1026 1.1 jruoho ******************************************************************************/
1027 1.1 jruoho
1028 1.1 jruoho static void
1029 1.1 jruoho AcpiExDumpReferenceObj (
1030 1.1 jruoho ACPI_OPERAND_OBJECT *ObjDesc)
1031 1.1 jruoho {
1032 1.1 jruoho ACPI_BUFFER RetBuf;
1033 1.1 jruoho ACPI_STATUS Status;
1034 1.1 jruoho
1035 1.1 jruoho
1036 1.1 jruoho RetBuf.Length = ACPI_ALLOCATE_LOCAL_BUFFER;
1037 1.1 jruoho
1038 1.1 jruoho if (ObjDesc->Reference.Class == ACPI_REFCLASS_NAME)
1039 1.1 jruoho {
1040 1.1 jruoho AcpiOsPrintf (" %p ", ObjDesc->Reference.Node);
1041 1.1 jruoho
1042 1.7 christos Status = AcpiNsHandleToPathname (ObjDesc->Reference.Node,
1043 1.7 christos &RetBuf, FALSE);
1044 1.1 jruoho if (ACPI_FAILURE (Status))
1045 1.1 jruoho {
1046 1.1 jruoho AcpiOsPrintf (" Could not convert name to pathname\n");
1047 1.1 jruoho }
1048 1.1 jruoho else
1049 1.1 jruoho {
1050 1.1 jruoho AcpiOsPrintf ("%s\n", (char *) RetBuf.Pointer);
1051 1.1 jruoho ACPI_FREE (RetBuf.Pointer);
1052 1.1 jruoho }
1053 1.1 jruoho }
1054 1.1 jruoho else if (ObjDesc->Reference.Object)
1055 1.1 jruoho {
1056 1.1 jruoho if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND)
1057 1.1 jruoho {
1058 1.7 christos AcpiOsPrintf ("%22s %p", "Target :",
1059 1.7 christos ObjDesc->Reference.Object);
1060 1.1 jruoho if (ObjDesc->Reference.Class == ACPI_REFCLASS_TABLE)
1061 1.1 jruoho {
1062 1.7 christos AcpiOsPrintf (" Table Index: %X\n",
1063 1.7 christos ObjDesc->Reference.Value);
1064 1.1 jruoho }
1065 1.1 jruoho else
1066 1.1 jruoho {
1067 1.7 christos AcpiOsPrintf (" [%s]\n",
1068 1.1 jruoho AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *)
1069 1.7 christos ObjDesc->Reference.Object)->Common.Type));
1070 1.1 jruoho }
1071 1.1 jruoho }
1072 1.1 jruoho else
1073 1.1 jruoho {
1074 1.1 jruoho AcpiOsPrintf (" Target: %p\n", ObjDesc->Reference.Object);
1075 1.1 jruoho }
1076 1.1 jruoho }
1077 1.1 jruoho }
1078 1.1 jruoho
1079 1.1 jruoho
1080 1.1 jruoho /*******************************************************************************
1081 1.1 jruoho *
1082 1.1 jruoho * FUNCTION: AcpiExDumpPackageObj
1083 1.1 jruoho *
1084 1.1 jruoho * PARAMETERS: ObjDesc - Descriptor to dump
1085 1.1 jruoho * Level - Indentation Level
1086 1.1 jruoho * Index - Package index for this object
1087 1.1 jruoho *
1088 1.1 jruoho * DESCRIPTION: Dumps the elements of the package
1089 1.1 jruoho *
1090 1.1 jruoho ******************************************************************************/
1091 1.1 jruoho
1092 1.1 jruoho static void
1093 1.1 jruoho AcpiExDumpPackageObj (
1094 1.1 jruoho ACPI_OPERAND_OBJECT *ObjDesc,
1095 1.1 jruoho UINT32 Level,
1096 1.1 jruoho UINT32 Index)
1097 1.1 jruoho {
1098 1.1 jruoho UINT32 i;
1099 1.1 jruoho
1100 1.1 jruoho
1101 1.1 jruoho /* Indentation and index output */
1102 1.1 jruoho
1103 1.1 jruoho if (Level > 0)
1104 1.1 jruoho {
1105 1.1 jruoho for (i = 0; i < Level; i++)
1106 1.1 jruoho {
1107 1.1 jruoho AcpiOsPrintf (" ");
1108 1.1 jruoho }
1109 1.1 jruoho
1110 1.1 jruoho AcpiOsPrintf ("[%.2d] ", Index);
1111 1.1 jruoho }
1112 1.1 jruoho
1113 1.1 jruoho AcpiOsPrintf ("%p ", ObjDesc);
1114 1.1 jruoho
1115 1.1 jruoho /* Null package elements are allowed */
1116 1.1 jruoho
1117 1.1 jruoho if (!ObjDesc)
1118 1.1 jruoho {
1119 1.1 jruoho AcpiOsPrintf ("[Null Object]\n");
1120 1.1 jruoho return;
1121 1.1 jruoho }
1122 1.1 jruoho
1123 1.1 jruoho /* Packages may only contain a few object types */
1124 1.1 jruoho
1125 1.1 jruoho switch (ObjDesc->Common.Type)
1126 1.1 jruoho {
1127 1.1 jruoho case ACPI_TYPE_INTEGER:
1128 1.1 jruoho
1129 1.1 jruoho AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n",
1130 1.1 jruoho ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value));
1131 1.1 jruoho break;
1132 1.1 jruoho
1133 1.1 jruoho case ACPI_TYPE_STRING:
1134 1.1 jruoho
1135 1.1 jruoho AcpiOsPrintf ("[String] Value: ");
1136 1.4 christos AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX);
1137 1.1 jruoho AcpiOsPrintf ("\n");
1138 1.1 jruoho break;
1139 1.1 jruoho
1140 1.1 jruoho case ACPI_TYPE_BUFFER:
1141 1.1 jruoho
1142 1.1 jruoho AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length);
1143 1.1 jruoho if (ObjDesc->Buffer.Length)
1144 1.1 jruoho {
1145 1.4 christos AcpiUtDebugDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer),
1146 1.1 jruoho ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT);
1147 1.1 jruoho }
1148 1.1 jruoho else
1149 1.1 jruoho {
1150 1.1 jruoho AcpiOsPrintf ("\n");
1151 1.1 jruoho }
1152 1.1 jruoho break;
1153 1.1 jruoho
1154 1.1 jruoho case ACPI_TYPE_PACKAGE:
1155 1.1 jruoho
1156 1.1 jruoho AcpiOsPrintf ("[Package] Contains %u Elements:\n",
1157 1.1 jruoho ObjDesc->Package.Count);
1158 1.1 jruoho
1159 1.1 jruoho for (i = 0; i < ObjDesc->Package.Count; i++)
1160 1.1 jruoho {
1161 1.1 jruoho AcpiExDumpPackageObj (ObjDesc->Package.Elements[i], Level+1, i);
1162 1.1 jruoho }
1163 1.1 jruoho break;
1164 1.1 jruoho
1165 1.1 jruoho case ACPI_TYPE_LOCAL_REFERENCE:
1166 1.1 jruoho
1167 1.1 jruoho AcpiOsPrintf ("[Object Reference] Type [%s] %2.2X",
1168 1.1 jruoho AcpiUtGetReferenceName (ObjDesc),
1169 1.1 jruoho ObjDesc->Reference.Class);
1170 1.1 jruoho AcpiExDumpReferenceObj (ObjDesc);
1171 1.1 jruoho break;
1172 1.1 jruoho
1173 1.1 jruoho default:
1174 1.1 jruoho
1175 1.1 jruoho AcpiOsPrintf ("[Unknown Type] %X\n", ObjDesc->Common.Type);
1176 1.1 jruoho break;
1177 1.1 jruoho }
1178 1.1 jruoho }
1179 1.1 jruoho
1180 1.1 jruoho
1181 1.1 jruoho /*******************************************************************************
1182 1.1 jruoho *
1183 1.1 jruoho * FUNCTION: AcpiExDumpObjectDescriptor
1184 1.1 jruoho *
1185 1.1 jruoho * PARAMETERS: ObjDesc - Descriptor to dump
1186 1.1 jruoho * Flags - Force display if TRUE
1187 1.1 jruoho *
1188 1.1 jruoho * DESCRIPTION: Dumps the members of the object descriptor given.
1189 1.1 jruoho *
1190 1.1 jruoho ******************************************************************************/
1191 1.1 jruoho
1192 1.1 jruoho void
1193 1.1 jruoho AcpiExDumpObjectDescriptor (
1194 1.1 jruoho ACPI_OPERAND_OBJECT *ObjDesc,
1195 1.1 jruoho UINT32 Flags)
1196 1.1 jruoho {
1197 1.1 jruoho ACPI_FUNCTION_TRACE (ExDumpObjectDescriptor);
1198 1.1 jruoho
1199 1.1 jruoho
1200 1.1 jruoho if (!ObjDesc)
1201 1.1 jruoho {
1202 1.1 jruoho return_VOID;
1203 1.1 jruoho }
1204 1.1 jruoho
1205 1.1 jruoho if (!Flags)
1206 1.1 jruoho {
1207 1.4 christos /* Check if debug output enabled */
1208 1.4 christos
1209 1.4 christos if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_OBJECTS, _COMPONENT))
1210 1.1 jruoho {
1211 1.1 jruoho return_VOID;
1212 1.1 jruoho }
1213 1.1 jruoho }
1214 1.1 jruoho
1215 1.1 jruoho if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED)
1216 1.1 jruoho {
1217 1.1 jruoho AcpiExDumpNamespaceNode ((ACPI_NAMESPACE_NODE *) ObjDesc, Flags);
1218 1.1 jruoho
1219 1.1 jruoho AcpiOsPrintf ("\nAttached Object (%p):\n",
1220 1.1 jruoho ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object);
1221 1.1 jruoho
1222 1.5 christos ObjDesc = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object;
1223 1.5 christos goto DumpObject;
1224 1.1 jruoho }
1225 1.1 jruoho
1226 1.1 jruoho if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND)
1227 1.1 jruoho {
1228 1.1 jruoho AcpiOsPrintf (
1229 1.5 christos "%p is not an ACPI operand object: [%s]\n",
1230 1.1 jruoho ObjDesc, AcpiUtGetDescriptorName (ObjDesc));
1231 1.1 jruoho return_VOID;
1232 1.1 jruoho }
1233 1.1 jruoho
1234 1.5 christos /* Validate the object type */
1235 1.5 christos
1236 1.5 christos if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX)
1237 1.1 jruoho {
1238 1.5 christos AcpiOsPrintf ("Not a known object type: %2.2X\n",
1239 1.5 christos ObjDesc->Common.Type);
1240 1.1 jruoho return_VOID;
1241 1.1 jruoho }
1242 1.1 jruoho
1243 1.5 christos
1244 1.5 christos DumpObject:
1245 1.5 christos
1246 1.1 jruoho /* Common Fields */
1247 1.1 jruoho
1248 1.1 jruoho AcpiExDumpObject (ObjDesc, AcpiExDumpCommon);
1249 1.1 jruoho
1250 1.1 jruoho /* Object-specific fields */
1251 1.1 jruoho
1252 1.1 jruoho AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]);
1253 1.5 christos
1254 1.5 christos if (ObjDesc->Common.Type == ACPI_TYPE_REGION)
1255 1.5 christos {
1256 1.5 christos ObjDesc = ObjDesc->Common.NextObject;
1257 1.5 christos if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX)
1258 1.5 christos {
1259 1.5 christos AcpiOsPrintf ("Secondary object is not a known object type: %2.2X\n",
1260 1.5 christos ObjDesc->Common.Type);
1261 1.5 christos
1262 1.5 christos return_VOID;
1263 1.5 christos }
1264 1.5 christos
1265 1.5 christos AcpiOsPrintf ("\nExtra attached Object (%p):\n", ObjDesc);
1266 1.5 christos AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]);
1267 1.5 christos }
1268 1.5 christos
1269 1.1 jruoho return_VOID;
1270 1.1 jruoho }
1271 1.1 jruoho
1272 1.1 jruoho #endif
1273