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