acdisasm.h revision 298714
1/******************************************************************************
2 *
3 * Name: acdisasm.h - AML disassembler
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2016, 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 struct acpi_dmtable_info
64{
65    UINT8                       Opcode;
66    UINT16                      Offset;
67    char                        *Name;
68    UINT8                       Flags;
69
70} ACPI_DMTABLE_INFO;
71
72/* Values for Flags field above */
73
74#define DT_LENGTH                       0x01    /* Field is a subtable length */
75#define DT_FLAG                         0x02    /* Field is a flag value */
76#define DT_NON_ZERO                     0x04    /* Field must be non-zero */
77#define DT_OPTIONAL                     0x08    /* Field is optional */
78#define DT_DESCRIBES_OPTIONAL           0x10    /* Field describes an optional field (length, etc.) */
79#define DT_COUNT                        0x20    /* Currently not used */
80
81/*
82 * Values for Opcode above.
83 * Note: 0-7 must not change, they are used as a flag shift value. Other
84 * than those, new values can be added wherever appropriate.
85 */
86typedef enum
87{
88    /* Simple Data Types */
89
90    ACPI_DMT_FLAG0          = 0,
91    ACPI_DMT_FLAG1          = 1,
92    ACPI_DMT_FLAG2          = 2,
93    ACPI_DMT_FLAG3          = 3,
94    ACPI_DMT_FLAG4          = 4,
95    ACPI_DMT_FLAG5          = 5,
96    ACPI_DMT_FLAG6          = 6,
97    ACPI_DMT_FLAG7          = 7,
98    ACPI_DMT_FLAGS0,
99    ACPI_DMT_FLAGS1,
100    ACPI_DMT_FLAGS2,
101    ACPI_DMT_FLAGS4,
102    ACPI_DMT_UINT8,
103    ACPI_DMT_UINT16,
104    ACPI_DMT_UINT24,
105    ACPI_DMT_UINT32,
106    ACPI_DMT_UINT40,
107    ACPI_DMT_UINT48,
108    ACPI_DMT_UINT56,
109    ACPI_DMT_UINT64,
110    ACPI_DMT_BUF7,
111    ACPI_DMT_BUF10,
112    ACPI_DMT_BUF16,
113    ACPI_DMT_BUF128,
114    ACPI_DMT_SIG,
115    ACPI_DMT_STRING,
116    ACPI_DMT_NAME4,
117    ACPI_DMT_NAME6,
118    ACPI_DMT_NAME8,
119
120    /* Types that are decoded to strings and miscellaneous */
121
122    ACPI_DMT_ACCWIDTH,
123    ACPI_DMT_CHKSUM,
124    ACPI_DMT_GAS,
125    ACPI_DMT_SPACEID,
126    ACPI_DMT_UNICODE,
127    ACPI_DMT_UUID,
128
129    /* Types used only for the Data Table Compiler */
130
131    ACPI_DMT_BUFFER,
132    ACPI_DMT_RAW_BUFFER,  /* Large, multiple line buffer */
133    ACPI_DMT_DEVICE_PATH,
134    ACPI_DMT_LABEL,
135    ACPI_DMT_PCI_PATH,
136
137    /* Types that are specific to particular ACPI tables */
138
139    ACPI_DMT_ASF,
140    ACPI_DMT_DMAR,
141    ACPI_DMT_DMAR_SCOPE,
142    ACPI_DMT_EINJACT,
143    ACPI_DMT_EINJINST,
144    ACPI_DMT_ERSTACT,
145    ACPI_DMT_ERSTINST,
146    ACPI_DMT_FADTPM,
147    ACPI_DMT_GTDT,
148    ACPI_DMT_HEST,
149    ACPI_DMT_HESTNTFY,
150    ACPI_DMT_HESTNTYP,
151    ACPI_DMT_IORTMEM,
152    ACPI_DMT_IVRS,
153    ACPI_DMT_LPIT,
154    ACPI_DMT_MADT,
155    ACPI_DMT_NFIT,
156    ACPI_DMT_PCCT,
157    ACPI_DMT_PMTT,
158    ACPI_DMT_SLIC,
159    ACPI_DMT_SRAT,
160
161    /* Special opcodes */
162
163    ACPI_DMT_EXTRA_TEXT,
164    ACPI_DMT_EXIT
165
166} ACPI_ENTRY_TYPES;
167
168typedef
169void (*ACPI_DMTABLE_HANDLER) (
170    ACPI_TABLE_HEADER       *Table);
171
172typedef
173ACPI_STATUS (*ACPI_CMTABLE_HANDLER) (
174    void                    **PFieldList);
175
176typedef struct acpi_dmtable_data
177{
178    char                    *Signature;
179    ACPI_DMTABLE_INFO       *TableInfo;
180    ACPI_DMTABLE_HANDLER    TableHandler;
181    ACPI_CMTABLE_HANDLER    CmTableHandler;
182    const unsigned char     *Template;
183
184} ACPI_DMTABLE_DATA;
185
186
187typedef struct acpi_op_walk_info
188{
189    ACPI_WALK_STATE         *WalkState;
190    ACPI_PARSE_OBJECT       *MappingOp;
191    UINT8                   *PreviousAml;
192    UINT8                   *StartAml;
193    UINT32                  Level;
194    UINT32                  LastLevel;
195    UINT32                  Count;
196    UINT32                  BitOffset;
197    UINT32                  Flags;
198    UINT32                  AmlOffset;
199
200} ACPI_OP_WALK_INFO;
201
202/*
203 * TBD - another copy of this is in asltypes.h, fix
204 */
205#ifndef ASL_WALK_CALLBACK_DEFINED
206typedef
207ACPI_STATUS (*ASL_WALK_CALLBACK) (
208    ACPI_PARSE_OBJECT           *Op,
209    UINT32                      Level,
210    void                        *Context);
211#define ASL_WALK_CALLBACK_DEFINED
212#endif
213
214typedef
215void (*ACPI_RESOURCE_HANDLER) (
216    ACPI_OP_WALK_INFO       *Info,
217    AML_RESOURCE            *Resource,
218    UINT32                  Length,
219    UINT32                  Level);
220
221typedef struct acpi_resource_tag
222{
223    UINT32                  BitIndex;
224    char                    *Tag;
225
226} ACPI_RESOURCE_TAG;
227
228/* Strings used for decoding flags to ASL keywords */
229
230extern const char               *AcpiGbl_WordDecode[];
231extern const char               *AcpiGbl_IrqDecode[];
232extern const char               *AcpiGbl_LockRule[];
233extern const char               *AcpiGbl_AccessTypes[];
234extern const char               *AcpiGbl_UpdateRules[];
235extern const char               *AcpiGbl_MatchOps[];
236
237extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf0[];
238extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf1[];
239extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf1a[];
240extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf2[];
241extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf2a[];
242extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf3[];
243extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsf4[];
244extern ACPI_DMTABLE_INFO        AcpiDmTableInfoAsfHdr[];
245extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBoot[];
246extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBert[];
247extern ACPI_DMTABLE_INFO        AcpiDmTableInfoBgrt[];
248extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCpep[];
249extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCpep0[];
250extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt0[];
251extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt1[];
252extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt2[];
253extern ACPI_DMTABLE_INFO        AcpiDmTableInfoCsrt2a[];
254extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2[];
255extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Device[];
256extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Addr[];
257extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Size[];
258extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2Name[];
259extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbg2OemData[];
260extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDbgp[];
261extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar[];
262extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmarHdr[];
263extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmarScope[];
264extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar0[];
265extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar1[];
266extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar2[];
267extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar3[];
268extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDmar4[];
269extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm[];
270extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm0[];
271extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm0a[];
272extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm1[];
273extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm1a[];
274extern ACPI_DMTABLE_INFO        AcpiDmTableInfoDrtm2[];
275extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEcdt[];
276extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEinj[];
277extern ACPI_DMTABLE_INFO        AcpiDmTableInfoEinj0[];
278extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst[];
279extern ACPI_DMTABLE_INFO        AcpiDmTableInfoErst0[];
280extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFacs[];
281extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt1[];
282extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt2[];
283extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt3[];
284extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt5[];
285extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFadt6[];
286extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt[];
287extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdtHdr[];
288extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt0[];
289extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt1[];
290extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGas[];
291extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt[];
292extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdtHdr[];
293extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0[];
294extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0a[];
295extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt1[];
296extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHeader[];
297extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest[];
298extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest0[];
299extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest1[];
300extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest2[];
301extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest6[];
302extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest7[];
303extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest8[];
304extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest9[];
305extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHest10[];
306extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHestNotify[];
307extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHestBank[];
308extern ACPI_DMTABLE_INFO        AcpiDmTableInfoHpet[];
309extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpitHdr[];
310extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpit0[];
311extern ACPI_DMTABLE_INFO        AcpiDmTableInfoLpit1[];
312extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort[];
313extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort0[];
314extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort0a[];
315extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort1[];
316extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort1a[];
317extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort2[];
318extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort3[];
319extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort3a[];
320extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort3b[];
321extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort3c[];
322extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIort4[];
323extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIortAcc[];
324extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIortHdr[];
325extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIortMap[];
326extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIortPad[];
327extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs[];
328extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs0[];
329extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs1[];
330extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs4[];
331extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8a[];
332extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8b[];
333extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrs8c[];
334extern ACPI_DMTABLE_INFO        AcpiDmTableInfoIvrsHdr[];
335extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt[];
336extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt0[];
337extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt1[];
338extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt2[];
339extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt3[];
340extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt4[];
341extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt5[];
342extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt6[];
343extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt7[];
344extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt8[];
345extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt9[];
346extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt10[];
347extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt11[];
348extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt12[];
349extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt13[];
350extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt14[];
351extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadt15[];
352extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMadtHdr[];
353extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMcfg[];
354extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMcfg0[];
355extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMchi[];
356extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst[];
357extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0[];
358extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0A[];
359extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst0B[];
360extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst1[];
361extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMpst2[];
362extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMsct[];
363extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMsct0[];
364extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMtmr[];
365extern ACPI_DMTABLE_INFO        AcpiDmTableInfoMtmr0[];
366extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit[];
367extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfitHdr[];
368extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit0[];
369extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit1[];
370extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit2[];
371extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit2a[];
372extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit3[];
373extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit3a[];
374extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit4[];
375extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit5[];
376extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit6[];
377extern ACPI_DMTABLE_INFO        AcpiDmTableInfoNfit6a[];
378extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt[];
379extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt0[];
380extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt1[];
381extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt1a[];
382extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmtt2[];
383extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPmttHdr[];
384extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct[];
385extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcctHdr[];
386extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct0[];
387extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct1[];
388extern ACPI_DMTABLE_INFO        AcpiDmTableInfoPcct2[];
389extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp1[];
390extern ACPI_DMTABLE_INFO        AcpiDmTableInfoRsdp2[];
391extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt[];
392extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3ptHdr[];
393extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt0[];
394extern ACPI_DMTABLE_INFO        AcpiDmTableInfoS3pt1[];
395extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSbst[];
396extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSlic[];
397extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSlit[];
398extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSpcr[];
399extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSpmi[];
400extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat[];
401extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSratHdr[];
402extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat0[];
403extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat1[];
404extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat2[];
405extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat3[];
406extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStao[];
407extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStaoStr[];
408extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpaHdr[];
409extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpaClient[];
410extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpaServer[];
411extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTpm2[];
412extern ACPI_DMTABLE_INFO        AcpiDmTableInfoUefi[];
413extern ACPI_DMTABLE_INFO        AcpiDmTableInfoVrtc[];
414extern ACPI_DMTABLE_INFO        AcpiDmTableInfoVrtc0[];
415extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWaet[];
416extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdat[];
417extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdat0[];
418extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWddt[];
419extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWdrt[];
420extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWpbt[];
421extern ACPI_DMTABLE_INFO        AcpiDmTableInfoWpbt0[];
422extern ACPI_DMTABLE_INFO        AcpiDmTableInfoXenv[];
423
424extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGeneric[][2];
425
426/*
427 * dmtable and ahtable
428 */
429extern const ACPI_DMTABLE_DATA  AcpiDmTableData[];
430extern const AH_TABLE           AcpiSupportedTables[];
431
432UINT8
433AcpiDmGenerateChecksum (
434    void                    *Table,
435    UINT32                  Length,
436    UINT8                   OriginalChecksum);
437
438const ACPI_DMTABLE_DATA *
439AcpiDmGetTableData (
440    char                    *Signature);
441
442void
443AcpiDmDumpDataTable (
444    ACPI_TABLE_HEADER       *Table);
445
446ACPI_STATUS
447AcpiDmDumpTable (
448    UINT32                  TableLength,
449    UINT32                  TableOffset,
450    void                    *Table,
451    UINT32                  SubTableLength,
452    ACPI_DMTABLE_INFO        *Info);
453
454void
455AcpiDmLineHeader (
456    UINT32                  Offset,
457    UINT32                  ByteLength,
458    char                    *Name);
459
460void
461AcpiDmLineHeader2 (
462    UINT32                  Offset,
463    UINT32                  ByteLength,
464    char                    *Name,
465    UINT32                  Value);
466
467
468/*
469 * dmtbdump
470 */
471void
472AcpiDmDumpBuffer (
473    void                    *Table,
474    UINT32                  BufferOffset,
475    UINT32                  Length,
476    UINT32                  AbsoluteOffset,
477    char                    *Header);
478
479void
480AcpiDmDumpUnicode (
481    void                    *Table,
482    UINT32                  BufferOffset,
483    UINT32                  ByteLength);
484
485void
486AcpiDmDumpAsf (
487    ACPI_TABLE_HEADER       *Table);
488
489void
490AcpiDmDumpCpep (
491    ACPI_TABLE_HEADER       *Table);
492
493void
494AcpiDmDumpCsrt (
495    ACPI_TABLE_HEADER       *Table);
496
497void
498AcpiDmDumpDbg2 (
499    ACPI_TABLE_HEADER       *Table);
500
501void
502AcpiDmDumpDmar (
503    ACPI_TABLE_HEADER       *Table);
504
505void
506AcpiDmDumpDrtm (
507    ACPI_TABLE_HEADER       *Table);
508
509void
510AcpiDmDumpEinj (
511    ACPI_TABLE_HEADER       *Table);
512
513void
514AcpiDmDumpErst (
515    ACPI_TABLE_HEADER       *Table);
516
517void
518AcpiDmDumpFadt (
519    ACPI_TABLE_HEADER       *Table);
520
521void
522AcpiDmDumpFpdt (
523    ACPI_TABLE_HEADER       *Table);
524
525void
526AcpiDmDumpGtdt (
527    ACPI_TABLE_HEADER       *Table);
528
529void
530AcpiDmDumpHest (
531    ACPI_TABLE_HEADER       *Table);
532
533void
534AcpiDmDumpIort (
535    ACPI_TABLE_HEADER       *Table);
536
537void
538AcpiDmDumpIvrs (
539    ACPI_TABLE_HEADER       *Table);
540
541void
542AcpiDmDumpLpit (
543    ACPI_TABLE_HEADER       *Table);
544
545void
546AcpiDmDumpMadt (
547    ACPI_TABLE_HEADER       *Table);
548
549void
550AcpiDmDumpMcfg (
551    ACPI_TABLE_HEADER       *Table);
552
553void
554AcpiDmDumpMpst (
555    ACPI_TABLE_HEADER       *Table);
556
557void
558AcpiDmDumpMsct (
559    ACPI_TABLE_HEADER       *Table);
560
561void
562AcpiDmDumpMtmr (
563    ACPI_TABLE_HEADER       *Table);
564
565void
566AcpiDmDumpNfit (
567    ACPI_TABLE_HEADER       *Table);
568
569void
570AcpiDmDumpPcct (
571    ACPI_TABLE_HEADER       *Table);
572
573void
574AcpiDmDumpPmtt (
575    ACPI_TABLE_HEADER       *Table);
576
577UINT32
578AcpiDmDumpRsdp (
579    ACPI_TABLE_HEADER       *Table);
580
581void
582AcpiDmDumpRsdt (
583    ACPI_TABLE_HEADER       *Table);
584
585UINT32
586AcpiDmDumpS3pt (
587    ACPI_TABLE_HEADER       *Table);
588
589void
590AcpiDmDumpSlic (
591    ACPI_TABLE_HEADER       *Table);
592
593void
594AcpiDmDumpSlit (
595    ACPI_TABLE_HEADER       *Table);
596
597void
598AcpiDmDumpSrat (
599    ACPI_TABLE_HEADER       *Table);
600
601void
602AcpiDmDumpStao (
603    ACPI_TABLE_HEADER       *Table);
604
605void
606AcpiDmDumpTcpa (
607    ACPI_TABLE_HEADER       *Table);
608
609void
610AcpiDmDumpVrtc (
611    ACPI_TABLE_HEADER       *Table);
612
613void
614AcpiDmDumpWdat (
615    ACPI_TABLE_HEADER       *Table);
616
617void
618AcpiDmDumpWpbt (
619    ACPI_TABLE_HEADER       *Table);
620
621void
622AcpiDmDumpXsdt (
623    ACPI_TABLE_HEADER       *Table);
624
625
626/*
627 * dmwalk
628 */
629void
630AcpiDmDisassemble (
631    ACPI_WALK_STATE         *WalkState,
632    ACPI_PARSE_OBJECT       *Origin,
633    UINT32                  NumOpcodes);
634
635void
636AcpiDmWalkParseTree (
637    ACPI_PARSE_OBJECT       *Op,
638    ASL_WALK_CALLBACK       DescendingCallback,
639    ASL_WALK_CALLBACK       AscendingCallback,
640    void                    *Context);
641
642
643/*
644 * dmopcode
645 */
646void
647AcpiDmDisassembleOneOp (
648    ACPI_WALK_STATE         *WalkState,
649    ACPI_OP_WALK_INFO       *Info,
650    ACPI_PARSE_OBJECT       *Op);
651
652UINT32
653AcpiDmListType (
654    ACPI_PARSE_OBJECT       *Op);
655
656void
657AcpiDmMethodFlags (
658    ACPI_PARSE_OBJECT       *Op);
659
660void
661AcpiDmDisplayTargetPathname (
662    ACPI_PARSE_OBJECT       *Op);
663
664void
665AcpiDmNotifyDescription (
666    ACPI_PARSE_OBJECT       *Op);
667
668void
669AcpiDmPredefinedDescription (
670    ACPI_PARSE_OBJECT       *Op);
671
672void
673AcpiDmFieldPredefinedDescription (
674    ACPI_PARSE_OBJECT       *Op);
675
676void
677AcpiDmFieldFlags (
678    ACPI_PARSE_OBJECT       *Op);
679
680void
681AcpiDmAddressSpace (
682    UINT8                   SpaceId);
683
684void
685AcpiDmRegionFlags (
686    ACPI_PARSE_OBJECT       *Op);
687
688void
689AcpiDmMatchOp (
690    ACPI_PARSE_OBJECT       *Op);
691
692
693/*
694 * dmnames
695 */
696UINT32
697AcpiDmDumpName (
698    UINT32                  Name);
699
700ACPI_STATUS
701AcpiPsDisplayObjectPathname (
702    ACPI_WALK_STATE         *WalkState,
703    ACPI_PARSE_OBJECT       *Op);
704
705void
706AcpiDmNamestring (
707    char                    *Name);
708
709
710/*
711 * dmbuffer
712 */
713void
714AcpiDmDisasmByteList (
715    UINT32                  Level,
716    UINT8                   *ByteData,
717    UINT32                  ByteCount);
718
719void
720AcpiDmByteList (
721    ACPI_OP_WALK_INFO       *Info,
722    ACPI_PARSE_OBJECT       *Op);
723
724void
725AcpiDmCheckForHardwareId (
726    ACPI_PARSE_OBJECT       *Op);
727
728void
729AcpiDmDecompressEisaId (
730    UINT32                  EncodedId);
731
732BOOLEAN
733AcpiDmIsUuidBuffer (
734    ACPI_PARSE_OBJECT       *Op);
735
736BOOLEAN
737AcpiDmIsUnicodeBuffer (
738    ACPI_PARSE_OBJECT       *Op);
739
740BOOLEAN
741AcpiDmIsStringBuffer (
742    ACPI_PARSE_OBJECT       *Op);
743
744BOOLEAN
745AcpiDmIsPldBuffer (
746    ACPI_PARSE_OBJECT       *Op);
747
748
749/*
750 * dmdeferred
751 */
752ACPI_STATUS
753AcpiDmParseDeferredOps (
754    ACPI_PARSE_OBJECT       *Root);
755
756
757/*
758 * dmextern
759 */
760ACPI_STATUS
761AcpiDmAddToExternalFileList (
762    char                    *PathList);
763
764void
765AcpiDmClearExternalFileList (
766    void);
767
768void
769AcpiDmAddOpToExternalList (
770    ACPI_PARSE_OBJECT       *Op,
771    char                    *Path,
772    UINT8                   Type,
773    UINT32                  Value,
774    UINT16                  Flags);
775
776void
777AcpiDmAddNodeToExternalList (
778    ACPI_NAMESPACE_NODE     *Node,
779    UINT8                   Type,
780    UINT32                  Value,
781    UINT16                  Flags);
782
783void
784AcpiDmAddExternalsToNamespace (
785    void);
786
787UINT32
788AcpiDmGetExternalMethodCount (
789    void);
790
791void
792AcpiDmClearExternalList (
793    void);
794
795void
796AcpiDmEmitExternals (
797    void);
798
799void
800AcpiDmUnresolvedWarning (
801    UINT8                   Type);
802
803void
804AcpiDmGetExternalsFromFile (
805    void);
806
807/*
808 * dmresrc
809 */
810void
811AcpiDmDumpInteger8 (
812    UINT8                   Value,
813    const char              *Name);
814
815void
816AcpiDmDumpInteger16 (
817    UINT16                  Value,
818    const char              *Name);
819
820void
821AcpiDmDumpInteger32 (
822    UINT32                  Value,
823    const char              *Name);
824
825void
826AcpiDmDumpInteger64 (
827    UINT64                  Value,
828    const char              *Name);
829
830void
831AcpiDmResourceTemplate (
832    ACPI_OP_WALK_INFO       *Info,
833    ACPI_PARSE_OBJECT       *Op,
834    UINT8                   *ByteData,
835    UINT32                  ByteCount);
836
837ACPI_STATUS
838AcpiDmIsResourceTemplate (
839    ACPI_WALK_STATE         *WalkState,
840    ACPI_PARSE_OBJECT       *Op);
841
842void
843AcpiDmBitList (
844    UINT16                  Mask);
845
846void
847AcpiDmDescriptorName (
848    void);
849
850
851/*
852 * dmresrcl
853 */
854void
855AcpiDmWordDescriptor (
856    ACPI_OP_WALK_INFO       *Info,
857    AML_RESOURCE            *Resource,
858    UINT32                  Length,
859    UINT32                  Level);
860
861void
862AcpiDmDwordDescriptor (
863    ACPI_OP_WALK_INFO       *Info,
864    AML_RESOURCE            *Resource,
865    UINT32                  Length,
866    UINT32                  Level);
867
868void
869AcpiDmExtendedDescriptor (
870    ACPI_OP_WALK_INFO       *Info,
871    AML_RESOURCE            *Resource,
872    UINT32                  Length,
873    UINT32                  Level);
874
875void
876AcpiDmQwordDescriptor (
877    ACPI_OP_WALK_INFO       *Info,
878    AML_RESOURCE            *Resource,
879    UINT32                  Length,
880    UINT32                  Level);
881
882void
883AcpiDmMemory24Descriptor (
884    ACPI_OP_WALK_INFO       *Info,
885    AML_RESOURCE            *Resource,
886    UINT32                  Length,
887    UINT32                  Level);
888
889void
890AcpiDmMemory32Descriptor (
891    ACPI_OP_WALK_INFO       *Info,
892    AML_RESOURCE            *Resource,
893    UINT32                  Length,
894    UINT32                  Level);
895
896void
897AcpiDmFixedMemory32Descriptor (
898    ACPI_OP_WALK_INFO       *Info,
899    AML_RESOURCE            *Resource,
900    UINT32                  Length,
901    UINT32                  Level);
902
903void
904AcpiDmGenericRegisterDescriptor (
905    ACPI_OP_WALK_INFO       *Info,
906    AML_RESOURCE            *Resource,
907    UINT32                  Length,
908    UINT32                  Level);
909
910void
911AcpiDmInterruptDescriptor (
912    ACPI_OP_WALK_INFO       *Info,
913    AML_RESOURCE            *Resource,
914    UINT32                  Length,
915    UINT32                  Level);
916
917void
918AcpiDmVendorLargeDescriptor (
919    ACPI_OP_WALK_INFO       *Info,
920    AML_RESOURCE            *Resource,
921    UINT32                  Length,
922    UINT32                  Level);
923
924void
925AcpiDmGpioDescriptor (
926    ACPI_OP_WALK_INFO       *Info,
927    AML_RESOURCE            *Resource,
928    UINT32                  Length,
929    UINT32                  Level);
930
931void
932AcpiDmSerialBusDescriptor (
933    ACPI_OP_WALK_INFO       *Info,
934    AML_RESOURCE            *Resource,
935    UINT32                  Length,
936    UINT32                  Level);
937
938void
939AcpiDmVendorCommon (
940    const char              *Name,
941    UINT8                   *ByteData,
942    UINT32                  Length,
943    UINT32                  Level);
944
945
946/*
947 * dmresrcs
948 */
949void
950AcpiDmIrqDescriptor (
951    ACPI_OP_WALK_INFO       *Info,
952    AML_RESOURCE            *Resource,
953    UINT32                  Length,
954    UINT32                  Level);
955
956void
957AcpiDmDmaDescriptor (
958    ACPI_OP_WALK_INFO       *Info,
959    AML_RESOURCE            *Resource,
960    UINT32                  Length,
961    UINT32                  Level);
962
963void
964AcpiDmFixedDmaDescriptor (
965    ACPI_OP_WALK_INFO       *Info,
966    AML_RESOURCE            *Resource,
967    UINT32                  Length,
968    UINT32                  Level);
969
970void
971AcpiDmIoDescriptor (
972    ACPI_OP_WALK_INFO       *Info,
973    AML_RESOURCE            *Resource,
974    UINT32                  Length,
975    UINT32                  Level);
976
977void
978AcpiDmFixedIoDescriptor (
979    ACPI_OP_WALK_INFO       *Info,
980    AML_RESOURCE            *Resource,
981    UINT32                  Length,
982    UINT32                  Level);
983
984void
985AcpiDmStartDependentDescriptor (
986    ACPI_OP_WALK_INFO       *Info,
987    AML_RESOURCE            *Resource,
988    UINT32                  Length,
989    UINT32                  Level);
990
991void
992AcpiDmEndDependentDescriptor (
993    ACPI_OP_WALK_INFO       *Info,
994    AML_RESOURCE            *Resource,
995    UINT32                  Length,
996    UINT32                  Level);
997
998void
999AcpiDmVendorSmallDescriptor (
1000    ACPI_OP_WALK_INFO       *Info,
1001    AML_RESOURCE            *Resource,
1002    UINT32                  Length,
1003    UINT32                  Level);
1004
1005
1006/*
1007 * dmutils
1008 */
1009void
1010AcpiDmDecodeAttribute (
1011    UINT8                   Attribute);
1012
1013void
1014AcpiDmIndent (
1015    UINT32                  Level);
1016
1017BOOLEAN
1018AcpiDmCommaIfListMember (
1019    ACPI_PARSE_OBJECT       *Op);
1020
1021void
1022AcpiDmCommaIfFieldMember (
1023    ACPI_PARSE_OBJECT       *Op);
1024
1025
1026/*
1027 * dmrestag
1028 */
1029void
1030AcpiDmFindResources (
1031    ACPI_PARSE_OBJECT       *Root);
1032
1033void
1034AcpiDmCheckResourceReference (
1035    ACPI_PARSE_OBJECT       *Op,
1036    ACPI_WALK_STATE         *WalkState);
1037
1038
1039/*
1040 * dmcstyle
1041 */
1042BOOLEAN
1043AcpiDmCheckForSymbolicOpcode (
1044    ACPI_PARSE_OBJECT       *Op,
1045    ACPI_OP_WALK_INFO       *Info);
1046
1047void
1048AcpiDmCloseOperator (
1049    ACPI_PARSE_OBJECT       *Op);
1050
1051
1052/*
1053 * dmtables
1054 */
1055void
1056AdDisassemblerHeader (
1057    char                    *Filename,
1058    UINT8                   TableType);
1059
1060#define ACPI_IS_AML_TABLE   0
1061#define ACPI_IS_DATA_TABLE  1
1062
1063
1064/*
1065 * adisasm
1066 */
1067ACPI_STATUS
1068AdAmlDisassemble (
1069    BOOLEAN                 OutToFile,
1070    char                    *Filename,
1071    char                    *Prefix,
1072    char                    **OutFilename);
1073
1074ACPI_STATUS
1075AdGetLocalTables (
1076    void);
1077
1078ACPI_STATUS
1079AdParseTable (
1080    ACPI_TABLE_HEADER       *Table,
1081    ACPI_OWNER_ID           *OwnerId,
1082    BOOLEAN                 LoadTable,
1083    BOOLEAN                 External);
1084
1085ACPI_STATUS
1086AdDisplayTables (
1087    char                    *Filename,
1088    ACPI_TABLE_HEADER       *Table);
1089
1090ACPI_STATUS
1091AdDisplayStatistics (
1092    void);
1093
1094#endif  /* __ACDISASM_H__ */
1095