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