acdisasm.h revision 281396
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
63typedef 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 */
86typedef 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
166typedef
167void (*ACPI_DMTABLE_HANDLER) (
168    ACPI_TABLE_HEADER       *Table);
169
170typedef
171ACPI_STATUS (*ACPI_CMTABLE_HANDLER) (
172    void                    **PFieldList);
173
174typedef 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
186typedef 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
202typedef
203ACPI_STATUS (*ASL_WALK_CALLBACK) (
204    ACPI_PARSE_OBJECT           *Op,
205    UINT32                      Level,
206    void                        *Context);
207#define ASL_WALK_CALLBACK_DEFINED
208#endif
209
210typedef
211void (*ACPI_RESOURCE_HANDLER) (
212    ACPI_OP_WALK_INFO       *Info,
213    AML_RESOURCE            *Resource,
214    UINT32                  Length,
215    UINT32                  Level);
216
217typedef 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
226extern const char               *AcpiGbl_WordDecode[];
227extern const char               *AcpiGbl_IrqDecode[];
228extern const char               *AcpiGbl_LockRule[];
229extern const char               *AcpiGbl_AccessTypes[];
230extern const char               *AcpiGbl_UpdateRules[];
231extern const char               *AcpiGbl_MatchOps[];
232
233extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf0[];
234extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf1[];
235extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf1a[];
236extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf2[];
237extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf2a[];
238extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf3[];
239extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf4[];
240extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsfHdr[];
241extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBoot[];
242extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBert[];
243extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBgrt[];
244extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCpep[];
245extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCpep0[];
246extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt0[];
247extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt1[];
248extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt2[];
249extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2[];
250extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Device[];
251extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Addr[];
252extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Size[];
253extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Name[];
254extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2OemData[];
255extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbgp[];
256extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar[];
257extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmarHdr[];
258extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmarScope[];
259extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar0[];
260extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar1[];
261extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar2[];
262extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar3[];
263extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar4[];
264extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm[];
265extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEcdt[];
266extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEinj[];
267extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEinj0[];
268extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst[];
269extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst0[];
270extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFacs[];
271extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt1[];
272extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt2[];
273extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt3[];
274extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt5[];
275extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt[];
276extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdtHdr[];
277extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt0[];
278extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt1[];
279extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGas[];
280extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt[];
281extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdtHdr[];
282extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0[];
283extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0a[];
284extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt1[];
285extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHeader[];
286extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest[];
287extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest0[];
288extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest1[];
289extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest2[];
290extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest6[];
291extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest7[];
292extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest8[];
293extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest9[];
294extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHestNotify[];
295extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHestBank[];
296extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHpet[];
297extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpitHdr[];
298extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpit0[];
299extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpit1[];
300extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs[];
301extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs0[];
302extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs1[];
303extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs4[];
304extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8a[];
305extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8b[];
306extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8c[];
307extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrsHdr[];
308extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt[];
309extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt0[];
310extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt1[];
311extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt2[];
312extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt3[];
313extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt4[];
314extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt5[];
315extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt6[];
316extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt7[];
317extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt8[];
318extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt9[];
319extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt10[];
320extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt11[];
321extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt12[];
322extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt13[];
323extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt14[];
324extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadtHdr[];
325extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMcfg[];
326extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMcfg0[];
327extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMchi[];
328extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst[];
329extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0[];
330extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0A[];
331extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0B[];
332extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst1[];
333extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst2[];
334extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMsct[];
335extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMsct0[];
336extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMtmr[];
337extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMtmr0[];
338extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt[];
339extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt0[];
340extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt1[];
341extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt1a[];
342extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt2[];
343extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmttHdr[];
344extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct[];
345extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcctHdr[];
346extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct0[];
347extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct1[];
348extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp1[];
349extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp2[];
350extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt[];
351extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3ptHdr[];
352extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt0[];
353extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt1[];
354extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSbst[];
355extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSlic[];
356extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSlit[];
357extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSpcr[];
358extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSpmi[];
359extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat[];
360extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSratHdr[];
361extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat0[];
362extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat1[];
363extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat2[];
364extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat3[];
365extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpa[];
366extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTpm2[];
367extern ACPI_DMTABLE_INFO        AcpiDmTableInfoUefi[];
368extern ACPI_DMTABLE_INFO        AcpiDmTableInfoVrtc[];
369extern ACPI_DMTABLE_INFO        AcpiDmTableInfoVrtc0[];
370extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWaet[];
371extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdat[];
372extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdat0[];
373extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWddt[];
374extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdrt[];
375
376extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGeneric[][2];
377
378
379/*
380 * dmtable
381 */
382extern ACPI_DMTABLE_DATA        AcpiDmTableData[];
383
384UINT8
385AcpiDmGenerateChecksum (
386    void                    *Table,
387    UINT32                  Length,
388    UINT8                   OriginalChecksum);
389
390ACPI_DMTABLE_DATA *
391AcpiDmGetTableData (
392    char                    *Signature);
393
394void
395AcpiDmDumpDataTable (
396    ACPI_TABLE_HEADER       *Table);
397
398ACPI_STATUS
399AcpiDmDumpTable (
400    UINT32                  TableLength,
401    UINT32                  TableOffset,
402    void                    *Table,
403    UINT32                  SubTableLength,
404    ACPI_DMTABLE_INFO        *Info);
405
406void
407AcpiDmLineHeader (
408    UINT32                  Offset,
409    UINT32                  ByteLength,
410    char                    *Name);
411
412void
413AcpiDmLineHeader2 (
414    UINT32                  Offset,
415    UINT32                  ByteLength,
416    char                    *Name,
417    UINT32                  Value);
418
419
420/*
421 * dmtbdump
422 */
423void
424AcpiDmDumpBuffer (
425    void                    *Table,
426    UINT32                  BufferOffset,
427    UINT32                  Length,
428    UINT32                  AbsoluteOffset,
429    char                    *Header,
430    BOOLEAN                 MultiLine);
431
432void
433AcpiDmDumpAsf (
434    ACPI_TABLE_HEADER       *Table);
435
436void
437AcpiDmDumpCpep (
438    ACPI_TABLE_HEADER       *Table);
439
440void
441AcpiDmDumpCsrt (
442    ACPI_TABLE_HEADER       *Table);
443
444void
445AcpiDmDumpDbg2 (
446    ACPI_TABLE_HEADER       *Table);
447
448void
449AcpiDmDumpDmar (
450    ACPI_TABLE_HEADER       *Table);
451
452void
453AcpiDmDumpEinj (
454    ACPI_TABLE_HEADER       *Table);
455
456void
457AcpiDmDumpErst (
458    ACPI_TABLE_HEADER       *Table);
459
460void
461AcpiDmDumpFadt (
462    ACPI_TABLE_HEADER       *Table);
463
464void
465AcpiDmDumpFpdt (
466    ACPI_TABLE_HEADER       *Table);
467
468void
469AcpiDmDumpGtdt (
470    ACPI_TABLE_HEADER       *Table);
471
472void
473AcpiDmDumpHest (
474    ACPI_TABLE_HEADER       *Table);
475
476void
477AcpiDmDumpIvrs (
478    ACPI_TABLE_HEADER       *Table);
479
480void
481AcpiDmDumpLpit (
482    ACPI_TABLE_HEADER       *Table);
483
484void
485AcpiDmDumpMadt (
486    ACPI_TABLE_HEADER       *Table);
487
488void
489AcpiDmDumpMcfg (
490    ACPI_TABLE_HEADER       *Table);
491
492void
493AcpiDmDumpMpst (
494    ACPI_TABLE_HEADER       *Table);
495
496void
497AcpiDmDumpMsct (
498    ACPI_TABLE_HEADER       *Table);
499
500void
501AcpiDmDumpMtmr (
502    ACPI_TABLE_HEADER       *Table);
503
504void
505AcpiDmDumpPcct (
506    ACPI_TABLE_HEADER       *Table);
507
508void
509AcpiDmDumpPmtt (
510    ACPI_TABLE_HEADER       *Table);
511
512UINT32
513AcpiDmDumpRsdp (
514    ACPI_TABLE_HEADER       *Table);
515
516void
517AcpiDmDumpRsdt (
518    ACPI_TABLE_HEADER       *Table);
519
520UINT32
521AcpiDmDumpS3pt (
522    ACPI_TABLE_HEADER       *Table);
523
524void
525AcpiDmDumpSlic (
526    ACPI_TABLE_HEADER       *Table);
527
528void
529AcpiDmDumpSlit (
530    ACPI_TABLE_HEADER       *Table);
531
532void
533AcpiDmDumpSrat (
534    ACPI_TABLE_HEADER       *Table);
535
536void
537AcpiDmDumpVrtc (
538    ACPI_TABLE_HEADER       *Table);
539
540void
541AcpiDmDumpWdat (
542    ACPI_TABLE_HEADER       *Table);
543
544void
545AcpiDmDumpXsdt (
546    ACPI_TABLE_HEADER       *Table);
547
548
549/*
550 * dmwalk
551 */
552void
553AcpiDmDisassemble (
554    ACPI_WALK_STATE         *WalkState,
555    ACPI_PARSE_OBJECT       *Origin,
556    UINT32                  NumOpcodes);
557
558void
559AcpiDmWalkParseTree (
560    ACPI_PARSE_OBJECT       *Op,
561    ASL_WALK_CALLBACK       DescendingCallback,
562    ASL_WALK_CALLBACK       AscendingCallback,
563    void                    *Context);
564
565
566/*
567 * dmopcode
568 */
569void
570AcpiDmDisassembleOneOp (
571    ACPI_WALK_STATE         *WalkState,
572    ACPI_OP_WALK_INFO       *Info,
573    ACPI_PARSE_OBJECT       *Op);
574
575void
576AcpiDmDecodeInternalObject (
577    ACPI_OPERAND_OBJECT     *ObjDesc);
578
579UINT32
580AcpiDmListType (
581    ACPI_PARSE_OBJECT       *Op);
582
583void
584AcpiDmMethodFlags (
585    ACPI_PARSE_OBJECT       *Op);
586
587void
588AcpiDmDisplayTargetPathname (
589    ACPI_PARSE_OBJECT       *Op);
590
591void
592AcpiDmNotifyDescription (
593    ACPI_PARSE_OBJECT       *Op);
594
595void
596AcpiDmPredefinedDescription (
597    ACPI_PARSE_OBJECT       *Op);
598
599void
600AcpiDmFieldPredefinedDescription (
601    ACPI_PARSE_OBJECT       *Op);
602
603void
604AcpiDmFieldFlags (
605    ACPI_PARSE_OBJECT       *Op);
606
607void
608AcpiDmAddressSpace (
609    UINT8                   SpaceId);
610
611void
612AcpiDmRegionFlags (
613    ACPI_PARSE_OBJECT       *Op);
614
615void
616AcpiDmMatchOp (
617    ACPI_PARSE_OBJECT       *Op);
618
619
620/*
621 * dmnames
622 */
623UINT32
624AcpiDmDumpName (
625    UINT32                  Name);
626
627ACPI_STATUS
628AcpiPsDisplayObjectPathname (
629    ACPI_WALK_STATE         *WalkState,
630    ACPI_PARSE_OBJECT       *Op);
631
632void
633AcpiDmNamestring (
634    char                    *Name);
635
636
637/*
638 * dmobject
639 */
640void
641AcpiDmDisplayInternalObject (
642    ACPI_OPERAND_OBJECT     *ObjDesc,
643    ACPI_WALK_STATE         *WalkState);
644
645void
646AcpiDmDisplayArguments (
647    ACPI_WALK_STATE         *WalkState);
648
649void
650AcpiDmDisplayLocals (
651    ACPI_WALK_STATE         *WalkState);
652
653void
654AcpiDmDumpMethodInfo (
655    ACPI_STATUS             Status,
656    ACPI_WALK_STATE         *WalkState,
657    ACPI_PARSE_OBJECT       *Op);
658
659
660/*
661 * dmbuffer
662 */
663void
664AcpiDmDisasmByteList (
665    UINT32                  Level,
666    UINT8                   *ByteData,
667    UINT32                  ByteCount);
668
669void
670AcpiDmByteList (
671    ACPI_OP_WALK_INFO       *Info,
672    ACPI_PARSE_OBJECT       *Op);
673
674void
675AcpiDmCheckForHardwareId (
676    ACPI_PARSE_OBJECT       *Op);
677
678void
679AcpiDmDecompressEisaId (
680    UINT32                  EncodedId);
681
682BOOLEAN
683AcpiDmIsUuidBuffer (
684    ACPI_PARSE_OBJECT       *Op);
685
686BOOLEAN
687AcpiDmIsUnicodeBuffer (
688    ACPI_PARSE_OBJECT       *Op);
689
690BOOLEAN
691AcpiDmIsStringBuffer (
692    ACPI_PARSE_OBJECT       *Op);
693
694BOOLEAN
695AcpiDmIsPldBuffer (
696    ACPI_PARSE_OBJECT       *Op);
697
698
699/*
700 * dmdeferred
701 */
702ACPI_STATUS
703AcpiDmParseDeferredOps (
704    ACPI_PARSE_OBJECT       *Root);
705
706
707/*
708 * dmextern
709 */
710ACPI_STATUS
711AcpiDmAddToExternalFileList (
712    char                    *PathList);
713
714void
715AcpiDmClearExternalFileList (
716    void);
717
718void
719AcpiDmAddOpToExternalList (
720    ACPI_PARSE_OBJECT       *Op,
721    char                    *Path,
722    UINT8                   Type,
723    UINT32                  Value,
724    UINT16                  Flags);
725
726void
727AcpiDmAddNodeToExternalList (
728    ACPI_NAMESPACE_NODE     *Node,
729    UINT8                   Type,
730    UINT32                  Value,
731    UINT16                  Flags);
732
733void
734AcpiDmAddExternalsToNamespace (
735    void);
736
737UINT32
738AcpiDmGetExternalMethodCount (
739    void);
740
741void
742AcpiDmClearExternalList (
743    void);
744
745void
746AcpiDmEmitExternals (
747    void);
748
749void
750AcpiDmUnresolvedWarning (
751    UINT8                   Type);
752
753void
754AcpiDmGetExternalsFromFile (
755    void);
756
757/*
758 * dmresrc
759 */
760void
761AcpiDmDumpInteger8 (
762    UINT8                   Value,
763    char                    *Name);
764
765void
766AcpiDmDumpInteger16 (
767    UINT16                  Value,
768    char                    *Name);
769
770void
771AcpiDmDumpInteger32 (
772    UINT32                  Value,
773    char                    *Name);
774
775void
776AcpiDmDumpInteger64 (
777    UINT64                  Value,
778    char                    *Name);
779
780void
781AcpiDmResourceTemplate (
782    ACPI_OP_WALK_INFO       *Info,
783    ACPI_PARSE_OBJECT       *Op,
784    UINT8                   *ByteData,
785    UINT32                  ByteCount);
786
787ACPI_STATUS
788AcpiDmIsResourceTemplate (
789    ACPI_WALK_STATE         *WalkState,
790    ACPI_PARSE_OBJECT       *Op);
791
792void
793AcpiDmBitList (
794    UINT16                  Mask);
795
796void
797AcpiDmDescriptorName (
798    void);
799
800
801/*
802 * dmresrcl
803 */
804void
805AcpiDmWordDescriptor (
806    ACPI_OP_WALK_INFO       *Info,
807    AML_RESOURCE            *Resource,
808    UINT32                  Length,
809    UINT32                  Level);
810
811void
812AcpiDmDwordDescriptor (
813    ACPI_OP_WALK_INFO       *Info,
814    AML_RESOURCE            *Resource,
815    UINT32                  Length,
816    UINT32                  Level);
817
818void
819AcpiDmExtendedDescriptor (
820    ACPI_OP_WALK_INFO       *Info,
821    AML_RESOURCE            *Resource,
822    UINT32                  Length,
823    UINT32                  Level);
824
825void
826AcpiDmQwordDescriptor (
827    ACPI_OP_WALK_INFO       *Info,
828    AML_RESOURCE            *Resource,
829    UINT32                  Length,
830    UINT32                  Level);
831
832void
833AcpiDmMemory24Descriptor (
834    ACPI_OP_WALK_INFO       *Info,
835    AML_RESOURCE            *Resource,
836    UINT32                  Length,
837    UINT32                  Level);
838
839void
840AcpiDmMemory32Descriptor (
841    ACPI_OP_WALK_INFO       *Info,
842    AML_RESOURCE            *Resource,
843    UINT32                  Length,
844    UINT32                  Level);
845
846void
847AcpiDmFixedMemory32Descriptor (
848    ACPI_OP_WALK_INFO       *Info,
849    AML_RESOURCE            *Resource,
850    UINT32                  Length,
851    UINT32                  Level);
852
853void
854AcpiDmGenericRegisterDescriptor (
855    ACPI_OP_WALK_INFO       *Info,
856    AML_RESOURCE            *Resource,
857    UINT32                  Length,
858    UINT32                  Level);
859
860void
861AcpiDmInterruptDescriptor (
862    ACPI_OP_WALK_INFO       *Info,
863    AML_RESOURCE            *Resource,
864    UINT32                  Length,
865    UINT32                  Level);
866
867void
868AcpiDmVendorLargeDescriptor (
869    ACPI_OP_WALK_INFO       *Info,
870    AML_RESOURCE            *Resource,
871    UINT32                  Length,
872    UINT32                  Level);
873
874void
875AcpiDmGpioDescriptor (
876    ACPI_OP_WALK_INFO       *Info,
877    AML_RESOURCE            *Resource,
878    UINT32                  Length,
879    UINT32                  Level);
880
881void
882AcpiDmSerialBusDescriptor (
883    ACPI_OP_WALK_INFO       *Info,
884    AML_RESOURCE            *Resource,
885    UINT32                  Length,
886    UINT32                  Level);
887
888void
889AcpiDmVendorCommon (
890    char                    *Name,
891    UINT8                   *ByteData,
892    UINT32                  Length,
893    UINT32                  Level);
894
895
896/*
897 * dmresrcs
898 */
899void
900AcpiDmIrqDescriptor (
901    ACPI_OP_WALK_INFO       *Info,
902    AML_RESOURCE            *Resource,
903    UINT32                  Length,
904    UINT32                  Level);
905
906void
907AcpiDmDmaDescriptor (
908    ACPI_OP_WALK_INFO       *Info,
909    AML_RESOURCE            *Resource,
910    UINT32                  Length,
911    UINT32                  Level);
912
913void
914AcpiDmFixedDmaDescriptor (
915    ACPI_OP_WALK_INFO       *Info,
916    AML_RESOURCE            *Resource,
917    UINT32                  Length,
918    UINT32                  Level);
919
920void
921AcpiDmIoDescriptor (
922    ACPI_OP_WALK_INFO       *Info,
923    AML_RESOURCE            *Resource,
924    UINT32                  Length,
925    UINT32                  Level);
926
927void
928AcpiDmFixedIoDescriptor (
929    ACPI_OP_WALK_INFO       *Info,
930    AML_RESOURCE            *Resource,
931    UINT32                  Length,
932    UINT32                  Level);
933
934void
935AcpiDmStartDependentDescriptor (
936    ACPI_OP_WALK_INFO       *Info,
937    AML_RESOURCE            *Resource,
938    UINT32                  Length,
939    UINT32                  Level);
940
941void
942AcpiDmEndDependentDescriptor (
943    ACPI_OP_WALK_INFO       *Info,
944    AML_RESOURCE            *Resource,
945    UINT32                  Length,
946    UINT32                  Level);
947
948void
949AcpiDmVendorSmallDescriptor (
950    ACPI_OP_WALK_INFO       *Info,
951    AML_RESOURCE            *Resource,
952    UINT32                  Length,
953    UINT32                  Level);
954
955
956/*
957 * dmutils
958 */
959void
960AcpiDmDecodeAttribute (
961    UINT8                   Attribute);
962
963void
964AcpiDmIndent (
965    UINT32                  Level);
966
967BOOLEAN
968AcpiDmCommaIfListMember (
969    ACPI_PARSE_OBJECT       *Op);
970
971void
972AcpiDmCommaIfFieldMember (
973    ACPI_PARSE_OBJECT       *Op);
974
975
976/*
977 * dmrestag
978 */
979void
980AcpiDmFindResources (
981    ACPI_PARSE_OBJECT       *Root);
982
983void
984AcpiDmCheckResourceReference (
985    ACPI_PARSE_OBJECT       *Op,
986    ACPI_WALK_STATE         *WalkState);
987
988
989/*
990 * dmcstyle
991 */
992BOOLEAN
993AcpiDmCheckForSymbolicOpcode (
994    ACPI_PARSE_OBJECT       *Op,
995    ACPI_OP_WALK_INFO       *Info);
996
997void
998AcpiDmCloseOperator (
999    ACPI_PARSE_OBJECT       *Op);
1000
1001
1002/*
1003 * acdisasm
1004 */
1005void
1006AdDisassemblerHeader (
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