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