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