acdisasm.h revision 237412
1/******************************************************************************
2 *
3 * Name: acdisasm.h - AML disassembler
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2012, 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        AcpiDmTableInfoDbgp[];
239extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar[];
240extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmarHdr[];
241extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmarScope[];
242extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar0[];
243extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar1[];
244extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar2[];
245extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar3[];
246extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm[];
247extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEcdt[];
248extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEinj[];
249extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEinj0[];
250extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst[];
251extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst0[];
252extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFacs[];
253extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt1[];
254extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt2[];
255extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt3[];
256extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt5[];
257extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt[];
258extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdtHdr[];
259extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt0[];
260extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt1[];
261extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGas[];
262extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt[];
263extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHeader[];
264extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest[];
265extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest0[];
266extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest1[];
267extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest2[];
268extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest6[];
269extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest7[];
270extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest8[];
271extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest9[];
272extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHestNotify[];
273extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHestBank[];
274extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHpet[];
275extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs[];
276extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs0[];
277extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs1[];
278extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs4[];
279extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8a[];
280extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8b[];
281extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8c[];
282extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrsHdr[];
283extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt[];
284extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt0[];
285extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt1[];
286extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt2[];
287extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt3[];
288extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt4[];
289extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt5[];
290extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt6[];
291extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt7[];
292extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt8[];
293extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt9[];
294extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt10[];
295extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt11[];
296extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt12[];
297extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadtHdr[];
298extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMcfg[];
299extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMcfg0[];
300extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMchi[];
301extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst[];
302extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0[];
303extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0A[];
304extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0B[];
305extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst1[];
306extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst2[];
307extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMsct[];
308extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMsct0[];
309extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt[];
310extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt0[];
311extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt1[];
312extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt1a[];
313extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt2[];
314extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmttHdr[];
315extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct[];
316extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct0[];
317extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp1[];
318extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp2[];
319extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt[];
320extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3ptHdr[];
321extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt0[];
322extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt1[];
323extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSbst[];
324extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSlicHdr[];
325extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSlic0[];
326extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSlic1[];
327extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSlit[];
328extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSpcr[];
329extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSpmi[];
330extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat[];
331extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSratHdr[];
332extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat0[];
333extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat1[];
334extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat2[];
335extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpa[];
336extern ACPI_DMTABLE_INFO        AcpiDmTableInfoUefi[];
337extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWaet[];
338extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdat[];
339extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdat0[];
340extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWddt[];
341extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdrt[];
342
343extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGeneric[][2];
344
345
346/*
347 * dmtable
348 */
349extern ACPI_DMTABLE_DATA        AcpiDmTableData[];
350
351UINT8
352AcpiDmGenerateChecksum (
353    void                    *Table,
354    UINT32                  Length,
355    UINT8                   OriginalChecksum);
356
357ACPI_DMTABLE_DATA *
358AcpiDmGetTableData (
359    char                    *Signature);
360
361void
362AcpiDmDumpDataTable (
363    ACPI_TABLE_HEADER       *Table);
364
365ACPI_STATUS
366AcpiDmDumpTable (
367    UINT32                  TableLength,
368    UINT32                  TableOffset,
369    void                    *Table,
370    UINT32                  SubTableLength,
371    ACPI_DMTABLE_INFO        *Info);
372
373void
374AcpiDmLineHeader (
375    UINT32                  Offset,
376    UINT32                  ByteLength,
377    char                    *Name);
378
379void
380AcpiDmLineHeader2 (
381    UINT32                  Offset,
382    UINT32                  ByteLength,
383    char                    *Name,
384    UINT32                  Value);
385
386
387/*
388 * dmtbdump
389 */
390void
391AcpiDmDumpAsf (
392    ACPI_TABLE_HEADER       *Table);
393
394void
395AcpiDmDumpCpep (
396    ACPI_TABLE_HEADER       *Table);
397
398void
399AcpiDmDumpDmar (
400    ACPI_TABLE_HEADER       *Table);
401
402void
403AcpiDmDumpEinj (
404    ACPI_TABLE_HEADER       *Table);
405
406void
407AcpiDmDumpErst (
408    ACPI_TABLE_HEADER       *Table);
409
410void
411AcpiDmDumpFadt (
412    ACPI_TABLE_HEADER       *Table);
413
414void
415AcpiDmDumpFpdt (
416    ACPI_TABLE_HEADER       *Table);
417
418void
419AcpiDmDumpHest (
420    ACPI_TABLE_HEADER       *Table);
421
422void
423AcpiDmDumpIvrs (
424    ACPI_TABLE_HEADER       *Table);
425
426void
427AcpiDmDumpMadt (
428    ACPI_TABLE_HEADER       *Table);
429
430void
431AcpiDmDumpMcfg (
432    ACPI_TABLE_HEADER       *Table);
433
434void
435AcpiDmDumpMpst (
436    ACPI_TABLE_HEADER       *Table);
437
438void
439AcpiDmDumpMsct (
440    ACPI_TABLE_HEADER       *Table);
441
442void
443AcpiDmDumpPcct (
444    ACPI_TABLE_HEADER       *Table);
445
446void
447AcpiDmDumpPmtt (
448    ACPI_TABLE_HEADER       *Table);
449
450UINT32
451AcpiDmDumpRsdp (
452    ACPI_TABLE_HEADER       *Table);
453
454void
455AcpiDmDumpRsdt (
456    ACPI_TABLE_HEADER       *Table);
457
458UINT32
459AcpiDmDumpS3pt (
460    ACPI_TABLE_HEADER       *Table);
461
462void
463AcpiDmDumpSlic (
464    ACPI_TABLE_HEADER       *Table);
465
466void
467AcpiDmDumpSlit (
468    ACPI_TABLE_HEADER       *Table);
469
470void
471AcpiDmDumpSrat (
472    ACPI_TABLE_HEADER       *Table);
473
474void
475AcpiDmDumpWdat (
476    ACPI_TABLE_HEADER       *Table);
477
478void
479AcpiDmDumpXsdt (
480    ACPI_TABLE_HEADER       *Table);
481
482
483/*
484 * dmwalk
485 */
486void
487AcpiDmDisassemble (
488    ACPI_WALK_STATE         *WalkState,
489    ACPI_PARSE_OBJECT       *Origin,
490    UINT32                  NumOpcodes);
491
492void
493AcpiDmWalkParseTree (
494    ACPI_PARSE_OBJECT       *Op,
495    ASL_WALK_CALLBACK       DescendingCallback,
496    ASL_WALK_CALLBACK       AscendingCallback,
497    void                    *Context);
498
499
500/*
501 * dmopcode
502 */
503void
504AcpiDmDisassembleOneOp (
505    ACPI_WALK_STATE         *WalkState,
506    ACPI_OP_WALK_INFO       *Info,
507    ACPI_PARSE_OBJECT       *Op);
508
509void
510AcpiDmDecodeInternalObject (
511    ACPI_OPERAND_OBJECT     *ObjDesc);
512
513UINT32
514AcpiDmListType (
515    ACPI_PARSE_OBJECT       *Op);
516
517void
518AcpiDmMethodFlags (
519    ACPI_PARSE_OBJECT       *Op);
520
521void
522AcpiDmPredefinedDescription (
523    ACPI_PARSE_OBJECT       *Op);
524
525void
526AcpiDmFieldPredefinedDescription (
527    ACPI_PARSE_OBJECT       *Op);
528
529void
530AcpiDmFieldFlags (
531    ACPI_PARSE_OBJECT       *Op);
532
533void
534AcpiDmAddressSpace (
535    UINT8                   SpaceId);
536
537void
538AcpiDmRegionFlags (
539    ACPI_PARSE_OBJECT       *Op);
540
541void
542AcpiDmMatchOp (
543    ACPI_PARSE_OBJECT       *Op);
544
545
546/*
547 * dmnames
548 */
549UINT32
550AcpiDmDumpName (
551    UINT32                  Name);
552
553ACPI_STATUS
554AcpiPsDisplayObjectPathname (
555    ACPI_WALK_STATE         *WalkState,
556    ACPI_PARSE_OBJECT       *Op);
557
558void
559AcpiDmNamestring (
560    char                    *Name);
561
562
563/*
564 * dmobject
565 */
566void
567AcpiDmDisplayInternalObject (
568    ACPI_OPERAND_OBJECT     *ObjDesc,
569    ACPI_WALK_STATE         *WalkState);
570
571void
572AcpiDmDisplayArguments (
573    ACPI_WALK_STATE         *WalkState);
574
575void
576AcpiDmDisplayLocals (
577    ACPI_WALK_STATE         *WalkState);
578
579void
580AcpiDmDumpMethodInfo (
581    ACPI_STATUS             Status,
582    ACPI_WALK_STATE         *WalkState,
583    ACPI_PARSE_OBJECT       *Op);
584
585
586/*
587 * dmbuffer
588 */
589void
590AcpiDmDisasmByteList (
591    UINT32                  Level,
592    UINT8                   *ByteData,
593    UINT32                  ByteCount);
594
595void
596AcpiDmByteList (
597    ACPI_OP_WALK_INFO       *Info,
598    ACPI_PARSE_OBJECT       *Op);
599
600void
601AcpiDmIsEisaId (
602    ACPI_PARSE_OBJECT       *Op);
603
604void
605AcpiDmEisaId (
606    UINT32                  EncodedId);
607
608BOOLEAN
609AcpiDmIsUnicodeBuffer (
610    ACPI_PARSE_OBJECT       *Op);
611
612BOOLEAN
613AcpiDmIsStringBuffer (
614    ACPI_PARSE_OBJECT       *Op);
615
616
617/*
618 * dmextern
619 */
620
621ACPI_STATUS
622AcpiDmAddToExternalFileList (
623    char                    *PathList);
624
625void
626AcpiDmClearExternalFileList (
627    void);
628
629void
630AcpiDmAddToExternalList (
631    ACPI_PARSE_OBJECT       *Op,
632    char                    *Path,
633    UINT8                   Type,
634    UINT32                  Value);
635
636void
637AcpiDmAddExternalsToNamespace (
638    void);
639
640UINT32
641AcpiDmGetExternalMethodCount (
642    void);
643
644void
645AcpiDmClearExternalList (
646    void);
647
648void
649AcpiDmEmitExternals (
650    void);
651
652
653/*
654 * dmresrc
655 */
656void
657AcpiDmDumpInteger8 (
658    UINT8                   Value,
659    char                    *Name);
660
661void
662AcpiDmDumpInteger16 (
663    UINT16                  Value,
664    char                    *Name);
665
666void
667AcpiDmDumpInteger32 (
668    UINT32                  Value,
669    char                    *Name);
670
671void
672AcpiDmDumpInteger64 (
673    UINT64                  Value,
674    char                    *Name);
675
676void
677AcpiDmResourceTemplate (
678    ACPI_OP_WALK_INFO       *Info,
679    ACPI_PARSE_OBJECT       *Op,
680    UINT8                   *ByteData,
681    UINT32                  ByteCount);
682
683ACPI_STATUS
684AcpiDmIsResourceTemplate (
685    ACPI_PARSE_OBJECT       *Op);
686
687void
688AcpiDmBitList (
689    UINT16                  Mask);
690
691void
692AcpiDmDescriptorName (
693    void);
694
695
696/*
697 * dmresrcl
698 */
699void
700AcpiDmWordDescriptor (
701    AML_RESOURCE            *Resource,
702    UINT32                  Length,
703    UINT32                  Level);
704
705void
706AcpiDmDwordDescriptor (
707    AML_RESOURCE            *Resource,
708    UINT32                  Length,
709    UINT32                  Level);
710
711void
712AcpiDmExtendedDescriptor (
713    AML_RESOURCE            *Resource,
714    UINT32                  Length,
715    UINT32                  Level);
716
717void
718AcpiDmQwordDescriptor (
719    AML_RESOURCE            *Resource,
720    UINT32                  Length,
721    UINT32                  Level);
722
723void
724AcpiDmMemory24Descriptor (
725    AML_RESOURCE            *Resource,
726    UINT32                  Length,
727    UINT32                  Level);
728
729void
730AcpiDmMemory32Descriptor (
731    AML_RESOURCE            *Resource,
732    UINT32                  Length,
733    UINT32                  Level);
734
735void
736AcpiDmFixedMemory32Descriptor (
737    AML_RESOURCE            *Resource,
738    UINT32                  Length,
739    UINT32                  Level);
740
741void
742AcpiDmGenericRegisterDescriptor (
743    AML_RESOURCE            *Resource,
744    UINT32                  Length,
745    UINT32                  Level);
746
747void
748AcpiDmInterruptDescriptor (
749    AML_RESOURCE            *Resource,
750    UINT32                  Length,
751    UINT32                  Level);
752
753void
754AcpiDmVendorLargeDescriptor (
755    AML_RESOURCE            *Resource,
756    UINT32                  Length,
757    UINT32                  Level);
758
759void
760AcpiDmGpioDescriptor (
761    AML_RESOURCE            *Resource,
762    UINT32                  Length,
763    UINT32                  Level);
764
765void
766AcpiDmSerialBusDescriptor (
767    AML_RESOURCE            *Resource,
768    UINT32                  Length,
769    UINT32                  Level);
770
771void
772AcpiDmVendorCommon (
773    char                    *Name,
774    UINT8                   *ByteData,
775    UINT32                  Length,
776    UINT32                  Level);
777
778
779/*
780 * dmresrcs
781 */
782void
783AcpiDmIrqDescriptor (
784    AML_RESOURCE            *Resource,
785    UINT32                  Length,
786    UINT32                  Level);
787
788void
789AcpiDmDmaDescriptor (
790    AML_RESOURCE            *Resource,
791    UINT32                  Length,
792    UINT32                  Level);
793
794void
795AcpiDmFixedDmaDescriptor (
796    AML_RESOURCE            *Resource,
797    UINT32                  Length,
798    UINT32                  Level);
799
800void
801AcpiDmIoDescriptor (
802    AML_RESOURCE            *Resource,
803    UINT32                  Length,
804    UINT32                  Level);
805
806void
807AcpiDmFixedIoDescriptor (
808    AML_RESOURCE            *Resource,
809    UINT32                  Length,
810    UINT32                  Level);
811
812void
813AcpiDmStartDependentDescriptor (
814    AML_RESOURCE            *Resource,
815    UINT32                  Length,
816    UINT32                  Level);
817
818void
819AcpiDmEndDependentDescriptor (
820    AML_RESOURCE            *Resource,
821    UINT32                  Length,
822    UINT32                  Level);
823
824void
825AcpiDmVendorSmallDescriptor (
826    AML_RESOURCE            *Resource,
827    UINT32                  Length,
828    UINT32                  Level);
829
830
831/*
832 * dmutils
833 */
834void
835AcpiDmDecodeAttribute (
836    UINT8                   Attribute);
837
838void
839AcpiDmIndent (
840    UINT32                  Level);
841
842BOOLEAN
843AcpiDmCommaIfListMember (
844    ACPI_PARSE_OBJECT       *Op);
845
846void
847AcpiDmCommaIfFieldMember (
848    ACPI_PARSE_OBJECT       *Op);
849
850
851/*
852 * dmrestag
853 */
854void
855AcpiDmFindResources (
856    ACPI_PARSE_OBJECT       *Root);
857
858void
859AcpiDmCheckResourceReference (
860    ACPI_PARSE_OBJECT       *Op,
861    ACPI_WALK_STATE         *WalkState);
862
863
864/*
865 * acdisasm
866 */
867void
868AdDisassemblerHeader (
869    char                    *Filename);
870
871
872#endif  /* __ACDISASM_H__ */
873