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