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