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