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