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