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