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