xref: /freebsd/sys/contrib/dev/acpica/include/acdisasm.h (revision 788ca347b816afd83b2885e0c79aeeb88649b2ab)
1 /******************************************************************************
2  *
3  * Name: acdisasm.h - AML disassembler
4  *
5  *****************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2015, Intel Corp.
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions, and the following disclaimer,
16  *    without modification.
17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18  *    substantially similar to the "NO WARRANTY" disclaimer below
19  *    ("Disclaimer") and any redistribution must be conditioned upon
20  *    including a substantially similar Disclaimer requirement for further
21  *    binary redistribution.
22  * 3. Neither the names of the above-listed copyright holders nor the names
23  *    of any contributors may be used to endorse or promote products derived
24  *    from this software without specific prior written permission.
25  *
26  * Alternatively, this software may be distributed under the terms of the
27  * GNU General Public License ("GPL") version 2 as published by the Free
28  * Software Foundation.
29  *
30  * NO WARRANTY
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41  * POSSIBILITY OF SUCH DAMAGES.
42  */
43 
44 #ifndef __ACDISASM_H__
45 #define __ACDISASM_H__
46 
47 #include <contrib/dev/acpica/include/amlresrc.h>
48 
49 
50 #define BLOCK_NONE              0
51 #define BLOCK_PAREN             1
52 #define BLOCK_BRACE             2
53 #define BLOCK_COMMA_LIST        4
54 #define ACPI_DEFAULT_RESNAME    *(UINT32 *) "__RD"
55 
56 /*
57  * Raw table data header. Used by disassembler and data table compiler.
58  * Do not change.
59  */
60 #define ACPI_RAW_TABLE_DATA_HEADER      "Raw Table Data"
61 
62 
63 typedef const struct acpi_dmtable_info
64 {
65     UINT8                       Opcode;
66     UINT16                      Offset;
67     char                        *Name;
68     UINT8                       Flags;
69 
70 } ACPI_DMTABLE_INFO;
71 
72 /* Values for Flags field above */
73 
74 #define DT_LENGTH                       0x01    /* Field is a subtable length */
75 #define DT_FLAG                         0x02    /* Field is a flag value */
76 #define DT_NON_ZERO                     0x04    /* Field must be non-zero */
77 #define DT_OPTIONAL                     0x08    /* Field is optional */
78 #define DT_DESCRIBES_OPTIONAL           0x10    /* Field describes an optional field (length, etc.) */
79 #define DT_COUNT                        0x20    /* Currently not used */
80 
81 /*
82  * Values for Opcode above.
83  * Note: 0-7 must not change, they are used as a flag shift value. Other
84  * than those, new values can be added wherever appropriate.
85  */
86 typedef enum
87 {
88     /* Simple Data Types */
89 
90     ACPI_DMT_FLAG0          = 0,
91     ACPI_DMT_FLAG1          = 1,
92     ACPI_DMT_FLAG2          = 2,
93     ACPI_DMT_FLAG3          = 3,
94     ACPI_DMT_FLAG4          = 4,
95     ACPI_DMT_FLAG5          = 5,
96     ACPI_DMT_FLAG6          = 6,
97     ACPI_DMT_FLAG7          = 7,
98     ACPI_DMT_FLAGS0,
99     ACPI_DMT_FLAGS1,
100     ACPI_DMT_FLAGS2,
101     ACPI_DMT_FLAGS4,
102     ACPI_DMT_UINT8,
103     ACPI_DMT_UINT16,
104     ACPI_DMT_UINT24,
105     ACPI_DMT_UINT32,
106     ACPI_DMT_UINT40,
107     ACPI_DMT_UINT48,
108     ACPI_DMT_UINT56,
109     ACPI_DMT_UINT64,
110     ACPI_DMT_BUF7,
111     ACPI_DMT_BUF10,
112     ACPI_DMT_BUF16,
113     ACPI_DMT_BUF128,
114     ACPI_DMT_SIG,
115     ACPI_DMT_STRING,
116     ACPI_DMT_NAME4,
117     ACPI_DMT_NAME6,
118     ACPI_DMT_NAME8,
119 
120     /* Types that are decoded to strings and miscellaneous */
121 
122     ACPI_DMT_ACCWIDTH,
123     ACPI_DMT_CHKSUM,
124     ACPI_DMT_GAS,
125     ACPI_DMT_SPACEID,
126     ACPI_DMT_UNICODE,
127     ACPI_DMT_UUID,
128 
129     /* Types used only for the Data Table Compiler */
130 
131     ACPI_DMT_BUFFER,
132     ACPI_DMT_RAW_BUFFER,  /* Large, multiple line buffer */
133     ACPI_DMT_DEVICE_PATH,
134     ACPI_DMT_LABEL,
135     ACPI_DMT_PCI_PATH,
136 
137     /* Types that are specific to particular ACPI tables */
138 
139     ACPI_DMT_ASF,
140     ACPI_DMT_DMAR,
141     ACPI_DMT_DMAR_SCOPE,
142     ACPI_DMT_EINJACT,
143     ACPI_DMT_EINJINST,
144     ACPI_DMT_ERSTACT,
145     ACPI_DMT_ERSTINST,
146     ACPI_DMT_FADTPM,
147     ACPI_DMT_GTDT,
148     ACPI_DMT_HEST,
149     ACPI_DMT_HESTNTFY,
150     ACPI_DMT_HESTNTYP,
151     ACPI_DMT_IVRS,
152     ACPI_DMT_LPIT,
153     ACPI_DMT_MADT,
154     ACPI_DMT_PCCT,
155     ACPI_DMT_PMTT,
156     ACPI_DMT_SLIC,
157     ACPI_DMT_SRAT,
158 
159     /* Special opcodes */
160 
161     ACPI_DMT_EXTRA_TEXT,
162     ACPI_DMT_EXIT
163 
164 } ACPI_ENTRY_TYPES;
165 
166 typedef
167 void (*ACPI_DMTABLE_HANDLER) (
168     ACPI_TABLE_HEADER       *Table);
169 
170 typedef
171 ACPI_STATUS (*ACPI_CMTABLE_HANDLER) (
172     void                    **PFieldList);
173 
174 typedef struct acpi_dmtable_data
175 {
176     char                    *Signature;
177     ACPI_DMTABLE_INFO       *TableInfo;
178     ACPI_DMTABLE_HANDLER    TableHandler;
179     ACPI_CMTABLE_HANDLER    CmTableHandler;
180     const unsigned char     *Template;
181     char                    *Name;
182 
183 } ACPI_DMTABLE_DATA;
184 
185 
186 typedef struct acpi_op_walk_info
187 {
188     UINT32                  Level;
189     UINT32                  LastLevel;
190     UINT32                  Count;
191     UINT32                  BitOffset;
192     UINT32                  Flags;
193     ACPI_WALK_STATE         *WalkState;
194     ACPI_PARSE_OBJECT       *MappingOp;
195 
196 } ACPI_OP_WALK_INFO;
197 
198 /*
199  * TBD - another copy of this is in asltypes.h, fix
200  */
201 #ifndef ASL_WALK_CALLBACK_DEFINED
202 typedef
203 ACPI_STATUS (*ASL_WALK_CALLBACK) (
204     ACPI_PARSE_OBJECT           *Op,
205     UINT32                      Level,
206     void                        *Context);
207 #define ASL_WALK_CALLBACK_DEFINED
208 #endif
209 
210 typedef
211 void (*ACPI_RESOURCE_HANDLER) (
212     ACPI_OP_WALK_INFO       *Info,
213     AML_RESOURCE            *Resource,
214     UINT32                  Length,
215     UINT32                  Level);
216 
217 typedef struct acpi_resource_tag
218 {
219     UINT32                  BitIndex;
220     char                    *Tag;
221 
222 } ACPI_RESOURCE_TAG;
223 
224 /* Strings used for decoding flags to ASL keywords */
225 
226 extern const char               *AcpiGbl_WordDecode[];
227 extern const char               *AcpiGbl_IrqDecode[];
228 extern const char               *AcpiGbl_LockRule[];
229 extern const char               *AcpiGbl_AccessTypes[];
230 extern const char               *AcpiGbl_UpdateRules[];
231 extern const char               *AcpiGbl_MatchOps[];
232 
233 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf0[];
234 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf1[];
235 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf1a[];
236 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf2[];
237 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf2a[];
238 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf3[];
239 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf4[];
240 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsfHdr[];
241 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBoot[];
242 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBert[];
243 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBgrt[];
244 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCpep[];
245 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCpep0[];
246 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt0[];
247 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt1[];
248 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt2[];
249 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2[];
250 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Device[];
251 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Addr[];
252 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Size[];
253 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Name[];
254 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2OemData[];
255 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbgp[];
256 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar[];
257 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmarHdr[];
258 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmarScope[];
259 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar0[];
260 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar1[];
261 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar2[];
262 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar3[];
263 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar4[];
264 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm[];
265 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEcdt[];
266 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEinj[];
267 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEinj0[];
268 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst[];
269 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst0[];
270 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFacs[];
271 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt1[];
272 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt2[];
273 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt3[];
274 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt5[];
275 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt[];
276 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdtHdr[];
277 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt0[];
278 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt1[];
279 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGas[];
280 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt[];
281 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdtHdr[];
282 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0[];
283 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0a[];
284 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt1[];
285 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHeader[];
286 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest[];
287 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest0[];
288 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest1[];
289 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest2[];
290 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest6[];
291 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest7[];
292 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest8[];
293 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest9[];
294 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHestNotify[];
295 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHestBank[];
296 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHpet[];
297 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpitHdr[];
298 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpit0[];
299 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpit1[];
300 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs[];
301 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs0[];
302 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs1[];
303 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs4[];
304 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8a[];
305 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8b[];
306 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8c[];
307 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrsHdr[];
308 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt[];
309 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt0[];
310 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt1[];
311 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt2[];
312 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt3[];
313 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt4[];
314 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt5[];
315 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt6[];
316 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt7[];
317 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt8[];
318 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt9[];
319 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt10[];
320 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt11[];
321 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt12[];
322 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt13[];
323 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt14[];
324 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadtHdr[];
325 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMcfg[];
326 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMcfg0[];
327 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMchi[];
328 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst[];
329 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0[];
330 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0A[];
331 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0B[];
332 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst1[];
333 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst2[];
334 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMsct[];
335 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMsct0[];
336 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMtmr[];
337 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMtmr0[];
338 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt[];
339 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt0[];
340 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt1[];
341 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt1a[];
342 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt2[];
343 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmttHdr[];
344 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct[];
345 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcctHdr[];
346 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct0[];
347 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct1[];
348 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp1[];
349 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp2[];
350 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt[];
351 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3ptHdr[];
352 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt0[];
353 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt1[];
354 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSbst[];
355 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSlic[];
356 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSlit[];
357 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSpcr[];
358 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSpmi[];
359 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat[];
360 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSratHdr[];
361 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat0[];
362 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat1[];
363 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat2[];
364 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat3[];
365 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpa[];
366 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTpm2[];
367 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoUefi[];
368 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoVrtc[];
369 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoVrtc0[];
370 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWaet[];
371 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdat[];
372 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdat0[];
373 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWddt[];
374 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdrt[];
375 
376 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGeneric[][2];
377 
378 
379 /*
380  * dmtable
381  */
382 extern ACPI_DMTABLE_DATA        AcpiDmTableData[];
383 
384 UINT8
385 AcpiDmGenerateChecksum (
386     void                    *Table,
387     UINT32                  Length,
388     UINT8                   OriginalChecksum);
389 
390 ACPI_DMTABLE_DATA *
391 AcpiDmGetTableData (
392     char                    *Signature);
393 
394 void
395 AcpiDmDumpDataTable (
396     ACPI_TABLE_HEADER       *Table);
397 
398 ACPI_STATUS
399 AcpiDmDumpTable (
400     UINT32                  TableLength,
401     UINT32                  TableOffset,
402     void                    *Table,
403     UINT32                  SubTableLength,
404     ACPI_DMTABLE_INFO        *Info);
405 
406 void
407 AcpiDmLineHeader (
408     UINT32                  Offset,
409     UINT32                  ByteLength,
410     char                    *Name);
411 
412 void
413 AcpiDmLineHeader2 (
414     UINT32                  Offset,
415     UINT32                  ByteLength,
416     char                    *Name,
417     UINT32                  Value);
418 
419 
420 /*
421  * dmtbdump
422  */
423 void
424 AcpiDmDumpBuffer (
425     void                    *Table,
426     UINT32                  BufferOffset,
427     UINT32                  Length,
428     UINT32                  AbsoluteOffset,
429     char                    *Header,
430     BOOLEAN                 MultiLine);
431 
432 void
433 AcpiDmDumpAsf (
434     ACPI_TABLE_HEADER       *Table);
435 
436 void
437 AcpiDmDumpCpep (
438     ACPI_TABLE_HEADER       *Table);
439 
440 void
441 AcpiDmDumpCsrt (
442     ACPI_TABLE_HEADER       *Table);
443 
444 void
445 AcpiDmDumpDbg2 (
446     ACPI_TABLE_HEADER       *Table);
447 
448 void
449 AcpiDmDumpDmar (
450     ACPI_TABLE_HEADER       *Table);
451 
452 void
453 AcpiDmDumpEinj (
454     ACPI_TABLE_HEADER       *Table);
455 
456 void
457 AcpiDmDumpErst (
458     ACPI_TABLE_HEADER       *Table);
459 
460 void
461 AcpiDmDumpFadt (
462     ACPI_TABLE_HEADER       *Table);
463 
464 void
465 AcpiDmDumpFpdt (
466     ACPI_TABLE_HEADER       *Table);
467 
468 void
469 AcpiDmDumpGtdt (
470     ACPI_TABLE_HEADER       *Table);
471 
472 void
473 AcpiDmDumpHest (
474     ACPI_TABLE_HEADER       *Table);
475 
476 void
477 AcpiDmDumpIvrs (
478     ACPI_TABLE_HEADER       *Table);
479 
480 void
481 AcpiDmDumpLpit (
482     ACPI_TABLE_HEADER       *Table);
483 
484 void
485 AcpiDmDumpMadt (
486     ACPI_TABLE_HEADER       *Table);
487 
488 void
489 AcpiDmDumpMcfg (
490     ACPI_TABLE_HEADER       *Table);
491 
492 void
493 AcpiDmDumpMpst (
494     ACPI_TABLE_HEADER       *Table);
495 
496 void
497 AcpiDmDumpMsct (
498     ACPI_TABLE_HEADER       *Table);
499 
500 void
501 AcpiDmDumpMtmr (
502     ACPI_TABLE_HEADER       *Table);
503 
504 void
505 AcpiDmDumpPcct (
506     ACPI_TABLE_HEADER       *Table);
507 
508 void
509 AcpiDmDumpPmtt (
510     ACPI_TABLE_HEADER       *Table);
511 
512 UINT32
513 AcpiDmDumpRsdp (
514     ACPI_TABLE_HEADER       *Table);
515 
516 void
517 AcpiDmDumpRsdt (
518     ACPI_TABLE_HEADER       *Table);
519 
520 UINT32
521 AcpiDmDumpS3pt (
522     ACPI_TABLE_HEADER       *Table);
523 
524 void
525 AcpiDmDumpSlic (
526     ACPI_TABLE_HEADER       *Table);
527 
528 void
529 AcpiDmDumpSlit (
530     ACPI_TABLE_HEADER       *Table);
531 
532 void
533 AcpiDmDumpSrat (
534     ACPI_TABLE_HEADER       *Table);
535 
536 void
537 AcpiDmDumpVrtc (
538     ACPI_TABLE_HEADER       *Table);
539 
540 void
541 AcpiDmDumpWdat (
542     ACPI_TABLE_HEADER       *Table);
543 
544 void
545 AcpiDmDumpXsdt (
546     ACPI_TABLE_HEADER       *Table);
547 
548 
549 /*
550  * dmwalk
551  */
552 void
553 AcpiDmDisassemble (
554     ACPI_WALK_STATE         *WalkState,
555     ACPI_PARSE_OBJECT       *Origin,
556     UINT32                  NumOpcodes);
557 
558 void
559 AcpiDmWalkParseTree (
560     ACPI_PARSE_OBJECT       *Op,
561     ASL_WALK_CALLBACK       DescendingCallback,
562     ASL_WALK_CALLBACK       AscendingCallback,
563     void                    *Context);
564 
565 
566 /*
567  * dmopcode
568  */
569 void
570 AcpiDmDisassembleOneOp (
571     ACPI_WALK_STATE         *WalkState,
572     ACPI_OP_WALK_INFO       *Info,
573     ACPI_PARSE_OBJECT       *Op);
574 
575 void
576 AcpiDmDecodeInternalObject (
577     ACPI_OPERAND_OBJECT     *ObjDesc);
578 
579 UINT32
580 AcpiDmListType (
581     ACPI_PARSE_OBJECT       *Op);
582 
583 void
584 AcpiDmMethodFlags (
585     ACPI_PARSE_OBJECT       *Op);
586 
587 void
588 AcpiDmDisplayTargetPathname (
589     ACPI_PARSE_OBJECT       *Op);
590 
591 void
592 AcpiDmNotifyDescription (
593     ACPI_PARSE_OBJECT       *Op);
594 
595 void
596 AcpiDmPredefinedDescription (
597     ACPI_PARSE_OBJECT       *Op);
598 
599 void
600 AcpiDmFieldPredefinedDescription (
601     ACPI_PARSE_OBJECT       *Op);
602 
603 void
604 AcpiDmFieldFlags (
605     ACPI_PARSE_OBJECT       *Op);
606 
607 void
608 AcpiDmAddressSpace (
609     UINT8                   SpaceId);
610 
611 void
612 AcpiDmRegionFlags (
613     ACPI_PARSE_OBJECT       *Op);
614 
615 void
616 AcpiDmMatchOp (
617     ACPI_PARSE_OBJECT       *Op);
618 
619 
620 /*
621  * dmnames
622  */
623 UINT32
624 AcpiDmDumpName (
625     UINT32                  Name);
626 
627 ACPI_STATUS
628 AcpiPsDisplayObjectPathname (
629     ACPI_WALK_STATE         *WalkState,
630     ACPI_PARSE_OBJECT       *Op);
631 
632 void
633 AcpiDmNamestring (
634     char                    *Name);
635 
636 
637 /*
638  * dmobject
639  */
640 void
641 AcpiDmDisplayInternalObject (
642     ACPI_OPERAND_OBJECT     *ObjDesc,
643     ACPI_WALK_STATE         *WalkState);
644 
645 void
646 AcpiDmDisplayArguments (
647     ACPI_WALK_STATE         *WalkState);
648 
649 void
650 AcpiDmDisplayLocals (
651     ACPI_WALK_STATE         *WalkState);
652 
653 void
654 AcpiDmDumpMethodInfo (
655     ACPI_STATUS             Status,
656     ACPI_WALK_STATE         *WalkState,
657     ACPI_PARSE_OBJECT       *Op);
658 
659 
660 /*
661  * dmbuffer
662  */
663 void
664 AcpiDmDisasmByteList (
665     UINT32                  Level,
666     UINT8                   *ByteData,
667     UINT32                  ByteCount);
668 
669 void
670 AcpiDmByteList (
671     ACPI_OP_WALK_INFO       *Info,
672     ACPI_PARSE_OBJECT       *Op);
673 
674 void
675 AcpiDmCheckForHardwareId (
676     ACPI_PARSE_OBJECT       *Op);
677 
678 void
679 AcpiDmDecompressEisaId (
680     UINT32                  EncodedId);
681 
682 BOOLEAN
683 AcpiDmIsUuidBuffer (
684     ACPI_PARSE_OBJECT       *Op);
685 
686 BOOLEAN
687 AcpiDmIsUnicodeBuffer (
688     ACPI_PARSE_OBJECT       *Op);
689 
690 BOOLEAN
691 AcpiDmIsStringBuffer (
692     ACPI_PARSE_OBJECT       *Op);
693 
694 BOOLEAN
695 AcpiDmIsPldBuffer (
696     ACPI_PARSE_OBJECT       *Op);
697 
698 
699 /*
700  * dmdeferred
701  */
702 ACPI_STATUS
703 AcpiDmParseDeferredOps (
704     ACPI_PARSE_OBJECT       *Root);
705 
706 
707 /*
708  * dmextern
709  */
710 ACPI_STATUS
711 AcpiDmAddToExternalFileList (
712     char                    *PathList);
713 
714 void
715 AcpiDmClearExternalFileList (
716     void);
717 
718 void
719 AcpiDmAddOpToExternalList (
720     ACPI_PARSE_OBJECT       *Op,
721     char                    *Path,
722     UINT8                   Type,
723     UINT32                  Value,
724     UINT16                  Flags);
725 
726 void
727 AcpiDmAddNodeToExternalList (
728     ACPI_NAMESPACE_NODE     *Node,
729     UINT8                   Type,
730     UINT32                  Value,
731     UINT16                  Flags);
732 
733 void
734 AcpiDmAddExternalsToNamespace (
735     void);
736 
737 UINT32
738 AcpiDmGetExternalMethodCount (
739     void);
740 
741 void
742 AcpiDmClearExternalList (
743     void);
744 
745 void
746 AcpiDmEmitExternals (
747     void);
748 
749 void
750 AcpiDmUnresolvedWarning (
751     UINT8                   Type);
752 
753 void
754 AcpiDmGetExternalsFromFile (
755     void);
756 
757 /*
758  * dmresrc
759  */
760 void
761 AcpiDmDumpInteger8 (
762     UINT8                   Value,
763     char                    *Name);
764 
765 void
766 AcpiDmDumpInteger16 (
767     UINT16                  Value,
768     char                    *Name);
769 
770 void
771 AcpiDmDumpInteger32 (
772     UINT32                  Value,
773     char                    *Name);
774 
775 void
776 AcpiDmDumpInteger64 (
777     UINT64                  Value,
778     char                    *Name);
779 
780 void
781 AcpiDmResourceTemplate (
782     ACPI_OP_WALK_INFO       *Info,
783     ACPI_PARSE_OBJECT       *Op,
784     UINT8                   *ByteData,
785     UINT32                  ByteCount);
786 
787 ACPI_STATUS
788 AcpiDmIsResourceTemplate (
789     ACPI_WALK_STATE         *WalkState,
790     ACPI_PARSE_OBJECT       *Op);
791 
792 void
793 AcpiDmBitList (
794     UINT16                  Mask);
795 
796 void
797 AcpiDmDescriptorName (
798     void);
799 
800 
801 /*
802  * dmresrcl
803  */
804 void
805 AcpiDmWordDescriptor (
806     ACPI_OP_WALK_INFO       *Info,
807     AML_RESOURCE            *Resource,
808     UINT32                  Length,
809     UINT32                  Level);
810 
811 void
812 AcpiDmDwordDescriptor (
813     ACPI_OP_WALK_INFO       *Info,
814     AML_RESOURCE            *Resource,
815     UINT32                  Length,
816     UINT32                  Level);
817 
818 void
819 AcpiDmExtendedDescriptor (
820     ACPI_OP_WALK_INFO       *Info,
821     AML_RESOURCE            *Resource,
822     UINT32                  Length,
823     UINT32                  Level);
824 
825 void
826 AcpiDmQwordDescriptor (
827     ACPI_OP_WALK_INFO       *Info,
828     AML_RESOURCE            *Resource,
829     UINT32                  Length,
830     UINT32                  Level);
831 
832 void
833 AcpiDmMemory24Descriptor (
834     ACPI_OP_WALK_INFO       *Info,
835     AML_RESOURCE            *Resource,
836     UINT32                  Length,
837     UINT32                  Level);
838 
839 void
840 AcpiDmMemory32Descriptor (
841     ACPI_OP_WALK_INFO       *Info,
842     AML_RESOURCE            *Resource,
843     UINT32                  Length,
844     UINT32                  Level);
845 
846 void
847 AcpiDmFixedMemory32Descriptor (
848     ACPI_OP_WALK_INFO       *Info,
849     AML_RESOURCE            *Resource,
850     UINT32                  Length,
851     UINT32                  Level);
852 
853 void
854 AcpiDmGenericRegisterDescriptor (
855     ACPI_OP_WALK_INFO       *Info,
856     AML_RESOURCE            *Resource,
857     UINT32                  Length,
858     UINT32                  Level);
859 
860 void
861 AcpiDmInterruptDescriptor (
862     ACPI_OP_WALK_INFO       *Info,
863     AML_RESOURCE            *Resource,
864     UINT32                  Length,
865     UINT32                  Level);
866 
867 void
868 AcpiDmVendorLargeDescriptor (
869     ACPI_OP_WALK_INFO       *Info,
870     AML_RESOURCE            *Resource,
871     UINT32                  Length,
872     UINT32                  Level);
873 
874 void
875 AcpiDmGpioDescriptor (
876     ACPI_OP_WALK_INFO       *Info,
877     AML_RESOURCE            *Resource,
878     UINT32                  Length,
879     UINT32                  Level);
880 
881 void
882 AcpiDmSerialBusDescriptor (
883     ACPI_OP_WALK_INFO       *Info,
884     AML_RESOURCE            *Resource,
885     UINT32                  Length,
886     UINT32                  Level);
887 
888 void
889 AcpiDmVendorCommon (
890     char                    *Name,
891     UINT8                   *ByteData,
892     UINT32                  Length,
893     UINT32                  Level);
894 
895 
896 /*
897  * dmresrcs
898  */
899 void
900 AcpiDmIrqDescriptor (
901     ACPI_OP_WALK_INFO       *Info,
902     AML_RESOURCE            *Resource,
903     UINT32                  Length,
904     UINT32                  Level);
905 
906 void
907 AcpiDmDmaDescriptor (
908     ACPI_OP_WALK_INFO       *Info,
909     AML_RESOURCE            *Resource,
910     UINT32                  Length,
911     UINT32                  Level);
912 
913 void
914 AcpiDmFixedDmaDescriptor (
915     ACPI_OP_WALK_INFO       *Info,
916     AML_RESOURCE            *Resource,
917     UINT32                  Length,
918     UINT32                  Level);
919 
920 void
921 AcpiDmIoDescriptor (
922     ACPI_OP_WALK_INFO       *Info,
923     AML_RESOURCE            *Resource,
924     UINT32                  Length,
925     UINT32                  Level);
926 
927 void
928 AcpiDmFixedIoDescriptor (
929     ACPI_OP_WALK_INFO       *Info,
930     AML_RESOURCE            *Resource,
931     UINT32                  Length,
932     UINT32                  Level);
933 
934 void
935 AcpiDmStartDependentDescriptor (
936     ACPI_OP_WALK_INFO       *Info,
937     AML_RESOURCE            *Resource,
938     UINT32                  Length,
939     UINT32                  Level);
940 
941 void
942 AcpiDmEndDependentDescriptor (
943     ACPI_OP_WALK_INFO       *Info,
944     AML_RESOURCE            *Resource,
945     UINT32                  Length,
946     UINT32                  Level);
947 
948 void
949 AcpiDmVendorSmallDescriptor (
950     ACPI_OP_WALK_INFO       *Info,
951     AML_RESOURCE            *Resource,
952     UINT32                  Length,
953     UINT32                  Level);
954 
955 
956 /*
957  * dmutils
958  */
959 void
960 AcpiDmDecodeAttribute (
961     UINT8                   Attribute);
962 
963 void
964 AcpiDmIndent (
965     UINT32                  Level);
966 
967 BOOLEAN
968 AcpiDmCommaIfListMember (
969     ACPI_PARSE_OBJECT       *Op);
970 
971 void
972 AcpiDmCommaIfFieldMember (
973     ACPI_PARSE_OBJECT       *Op);
974 
975 
976 /*
977  * dmrestag
978  */
979 void
980 AcpiDmFindResources (
981     ACPI_PARSE_OBJECT       *Root);
982 
983 void
984 AcpiDmCheckResourceReference (
985     ACPI_PARSE_OBJECT       *Op,
986     ACPI_WALK_STATE         *WalkState);
987 
988 
989 /*
990  * dmcstyle
991  */
992 BOOLEAN
993 AcpiDmCheckForSymbolicOpcode (
994     ACPI_PARSE_OBJECT       *Op,
995     ACPI_OP_WALK_INFO       *Info);
996 
997 void
998 AcpiDmCloseOperator (
999     ACPI_PARSE_OBJECT       *Op);
1000 
1001 
1002 /*
1003  * acdisasm
1004  */
1005 void
1006 AdDisassemblerHeader (
1007     char                    *Filename,
1008     UINT8                   TableType);
1009 
1010 #define ACPI_IS_AML_TABLE   0
1011 #define ACPI_IS_DATA_TABLE  1
1012 
1013 #endif  /* __ACDISASM_H__ */
1014