i386/identcpu.c: Add VIA Nano support
[dragonfly.git] / sys / contrib / dev / acpica-unix-20061109 / include / acdisasm.h
blob51c5e88eaaba01e4720c853ece106f23fd6f4dd8
1 /******************************************************************************
3 * Name: acdisasm.h - AML disassembler
4 * $Revision: 1.38 $
6 *****************************************************************************/
8 /******************************************************************************
10 * 1. Copyright Notice
12 * Some or all of this work - Copyright (c) 1999 - 2006, Intel Corp.
13 * All rights reserved.
15 * 2. License
17 * 2.1. This is your license from Intel Corp. under its intellectual property
18 * rights. You may have additional license terms from the party that provided
19 * you this software, covering your right to use that party's intellectual
20 * property rights.
22 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
23 * copy of the source code appearing in this file ("Covered Code") an
24 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
25 * base code distributed originally by Intel ("Original Intel Code") to copy,
26 * make derivatives, distribute, use and display any portion of the Covered
27 * Code in any form, with the right to sublicense such rights; and
29 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
30 * license (with the right to sublicense), under only those claims of Intel
31 * patents that are infringed by the Original Intel Code, to make, use, sell,
32 * offer to sell, and import the Covered Code and derivative works thereof
33 * solely to the minimum extent necessary to exercise the above copyright
34 * license, and in no event shall the patent license extend to any additions
35 * to or modifications of the Original Intel Code. No other license or right
36 * is granted directly or by implication, estoppel or otherwise;
38 * The above copyright and patent license is granted only if the following
39 * conditions are met:
41 * 3. Conditions
43 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
44 * Redistribution of source code of any substantial portion of the Covered
45 * Code or modification with rights to further distribute source must include
46 * the above Copyright Notice, the above License, this list of Conditions,
47 * and the following Disclaimer and Export Compliance provision. In addition,
48 * Licensee must cause all Covered Code to which Licensee contributes to
49 * contain a file documenting the changes Licensee made to create that Covered
50 * Code and the date of any change. Licensee must include in that file the
51 * documentation of any changes made by any predecessor Licensee. Licensee
52 * must include a prominent statement that the modification is derived,
53 * directly or indirectly, from Original Intel Code.
55 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
56 * Redistribution of source code of any substantial portion of the Covered
57 * Code or modification without rights to further distribute source must
58 * include the following Disclaimer and Export Compliance provision in the
59 * documentation and/or other materials provided with distribution. In
60 * addition, Licensee may not authorize further sublicense of source of any
61 * portion of the Covered Code, and must include terms to the effect that the
62 * license from Licensee to its licensee is limited to the intellectual
63 * property embodied in the software Licensee provides to its licensee, and
64 * not to intellectual property embodied in modifications its licensee may
65 * make.
67 * 3.3. Redistribution of Executable. Redistribution in executable form of any
68 * substantial portion of the Covered Code or modification must reproduce the
69 * above Copyright Notice, and the following Disclaimer and Export Compliance
70 * provision in the documentation and/or other materials provided with the
71 * distribution.
73 * 3.4. Intel retains all right, title, and interest in and to the Original
74 * Intel Code.
76 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
77 * Intel shall be used in advertising or otherwise to promote the sale, use or
78 * other dealings in products derived from or relating to the Covered Code
79 * without prior written authorization from Intel.
81 * 4. Disclaimer and Export Compliance
83 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
84 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
85 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
86 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
87 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
88 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
89 * PARTICULAR PURPOSE.
91 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
92 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
93 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
94 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
95 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
96 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
97 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
98 * LIMITED REMEDY.
100 * 4.3. Licensee shall not export, either directly or indirectly, any of this
101 * software or system incorporating such software without first obtaining any
102 * required license or other approval from the U. S. Department of Commerce or
103 * any other agency or department of the United States Government. In the
104 * event Licensee exports any such software from the United States or
105 * re-exports any such software from a foreign destination, Licensee shall
106 * ensure that the distribution and export/re-export of the software is in
107 * compliance with all laws, regulations, orders, or other restrictions of the
108 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
109 * any of its subsidiaries will export/re-export any technical data, process,
110 * software, or service, directly or indirectly, to any country for which the
111 * United States government or any agency thereof requires an export license,
112 * other governmental approval, or letter of assurance, without first obtaining
113 * such license, approval or letter.
115 *****************************************************************************/
117 #ifndef __ACDISASM_H__
118 #define __ACDISASM_H__
120 #include "amlresrc.h"
123 #define BLOCK_NONE 0
124 #define BLOCK_PAREN 1
125 #define BLOCK_BRACE 2
126 #define BLOCK_COMMA_LIST 4
127 #define ACPI_DEFAULT_RESNAME *(UINT32 *) "__RD"
129 typedef struct acpi_external_list
131 char *Path;
132 char *InternalPath;
133 struct acpi_external_list *Next;
134 UINT32 Value;
135 UINT16 Length;
136 UINT8 Type;
138 } ACPI_EXTERNAL_LIST;
140 extern ACPI_EXTERNAL_LIST *AcpiGbl_ExternalList;
142 typedef const struct acpi_dmtable_info
144 UINT8 Opcode;
145 UINT8 Offset;
146 char *Name;
148 } ACPI_DMTABLE_INFO;
151 * Values for Opcode above.
152 * Note: 0-7 must not change, used as a flag shift value
154 #define ACPI_DMT_FLAG0 0
155 #define ACPI_DMT_FLAG1 1
156 #define ACPI_DMT_FLAG2 2
157 #define ACPI_DMT_FLAG3 3
158 #define ACPI_DMT_FLAG4 4
159 #define ACPI_DMT_FLAG5 5
160 #define ACPI_DMT_FLAG6 6
161 #define ACPI_DMT_FLAG7 7
162 #define ACPI_DMT_FLAGS0 8
163 #define ACPI_DMT_FLAGS2 9
164 #define ACPI_DMT_UINT8 10
165 #define ACPI_DMT_UINT16 11
166 #define ACPI_DMT_UINT24 12
167 #define ACPI_DMT_UINT32 13
168 #define ACPI_DMT_UINT56 14
169 #define ACPI_DMT_UINT64 15
170 #define ACPI_DMT_STRING 16
171 #define ACPI_DMT_NAME4 17
172 #define ACPI_DMT_NAME6 18
173 #define ACPI_DMT_NAME8 19
174 #define ACPI_DMT_CHKSUM 20
175 #define ACPI_DMT_SPACEID 21
176 #define ACPI_DMT_GAS 22
177 #define ACPI_DMT_DMAR 23
178 #define ACPI_DMT_MADT 24
179 #define ACPI_DMT_SRAT 25
180 #define ACPI_DMT_EXIT 26
181 #define ACPI_DMT_SIG 27
183 typedef
184 void (*ACPI_TABLE_HANDLER) (
185 ACPI_TABLE_HEADER *Table);
187 typedef struct acpi_dmtable_data
189 char *Signature;
190 ACPI_DMTABLE_INFO *TableInfo;
191 ACPI_TABLE_HANDLER TableHandler;
192 char *Name;
194 } ACPI_DMTABLE_DATA;
197 typedef struct acpi_op_walk_info
199 UINT32 Level;
200 UINT32 LastLevel;
201 UINT32 Count;
202 UINT32 BitOffset;
203 UINT32 Flags;
204 ACPI_WALK_STATE *WalkState;
206 } ACPI_OP_WALK_INFO;
208 typedef
209 ACPI_STATUS (*ASL_WALK_CALLBACK) (
210 ACPI_PARSE_OBJECT *Op,
211 UINT32 Level,
212 void *Context);
214 typedef struct acpi_resource_tag
216 UINT32 BitIndex;
217 char *Tag;
219 } ACPI_RESOURCE_TAG;
221 /* Strings used for decoding flags to ASL keywords */
223 extern const char *AcpiGbl_WordDecode[];
224 extern const char *AcpiGbl_IrqDecode[];
225 extern const char *AcpiGbl_LockRule[];
226 extern const char *AcpiGbl_AccessTypes[];
227 extern const char *AcpiGbl_UpdateRules[];
228 extern const char *AcpiGbl_MatchOps[];
230 extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf0[];
231 extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1[];
232 extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1a[];
233 extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2[];
234 extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2a[];
235 extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf3[];
236 extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[];
237 extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[];
238 extern ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[];
239 extern ACPI_DMTABLE_INFO AcpiDmTableInfoCpep[];
240 extern ACPI_DMTABLE_INFO AcpiDmTableInfoCpep0[];
241 extern ACPI_DMTABLE_INFO AcpiDmTableInfoDbgp[];
242 extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar[];
243 extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmarHdr[];
244 extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmarScope[];
245 extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar0[];
246 extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar1[];
247 extern ACPI_DMTABLE_INFO AcpiDmTableInfoEcdt[];
248 extern ACPI_DMTABLE_INFO AcpiDmTableInfoFacs[];
249 extern ACPI_DMTABLE_INFO AcpiDmTableInfoFadt1[];
250 extern ACPI_DMTABLE_INFO AcpiDmTableInfoFadt2[];
251 extern ACPI_DMTABLE_INFO AcpiDmTableInfoGas[];
252 extern ACPI_DMTABLE_INFO AcpiDmTableInfoHeader[];
253 extern ACPI_DMTABLE_INFO AcpiDmTableInfoHpet[];
254 extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt[];
255 extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt0[];
256 extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt1[];
257 extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt2[];
258 extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt3[];
259 extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt4[];
260 extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt5[];
261 extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt6[];
262 extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt7[];
263 extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt8[];
264 extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadtHdr[];
265 extern ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg[];
266 extern ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg0[];
267 extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp1[];
268 extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp2[];
269 extern ACPI_DMTABLE_INFO AcpiDmTableInfoSbst[];
270 extern ACPI_DMTABLE_INFO AcpiDmTableInfoSlit[];
271 extern ACPI_DMTABLE_INFO AcpiDmTableInfoSpcr[];
272 extern ACPI_DMTABLE_INFO AcpiDmTableInfoSpmi[];
273 extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat[];
274 extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat0[];
275 extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat1[];
276 extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpa[];
277 extern ACPI_DMTABLE_INFO AcpiDmTableInfoWdrt[];
281 * dmtable
283 void
284 AcpiDmDumpDataTable (
285 ACPI_TABLE_HEADER *Table);
287 void
288 AcpiDmDumpTable (
289 UINT32 TableLength,
290 UINT32 TableOffset,
291 void *Table,
292 UINT32 SubTableLength,
293 ACPI_DMTABLE_INFO *Info);
295 void
296 AcpiDmLineHeader (
297 UINT32 Offset,
298 UINT32 ByteLength,
299 char *Name);
301 void
302 AcpiDmLineHeader2 (
303 UINT32 Offset,
304 UINT32 ByteLength,
305 char *Name,
306 UINT32 Value);
310 * dmtbdump
312 void
313 AcpiDmDumpAsf (
314 ACPI_TABLE_HEADER *Table);
316 void
317 AcpiDmDumpCpep (
318 ACPI_TABLE_HEADER *Table);
320 void
321 AcpiDmDumpDmar (
322 ACPI_TABLE_HEADER *Table);
324 void
325 AcpiDmDumpFadt (
326 ACPI_TABLE_HEADER *Table);
328 void
329 AcpiDmDumpSrat (
330 ACPI_TABLE_HEADER *Table);
332 void
333 AcpiDmDumpMcfg (
334 ACPI_TABLE_HEADER *Table);
336 void
337 AcpiDmDumpMadt (
338 ACPI_TABLE_HEADER *Table);
340 UINT32
341 AcpiDmDumpRsdp (
342 ACPI_TABLE_HEADER *Table);
344 void
345 AcpiDmDumpRsdt (
346 ACPI_TABLE_HEADER *Table);
348 void
349 AcpiDmDumpSlit (
350 ACPI_TABLE_HEADER *Table);
352 void
353 AcpiDmDumpXsdt (
354 ACPI_TABLE_HEADER *Table);
358 * dmwalk
360 void
361 AcpiDmDisassemble (
362 ACPI_WALK_STATE *WalkState,
363 ACPI_PARSE_OBJECT *Origin,
364 UINT32 NumOpcodes);
366 void
367 AcpiDmWalkParseTree (
368 ACPI_PARSE_OBJECT *Op,
369 ASL_WALK_CALLBACK DescendingCallback,
370 ASL_WALK_CALLBACK AscendingCallback,
371 void *Context);
375 * dmopcode
377 void
378 AcpiDmDisassembleOneOp (
379 ACPI_WALK_STATE *WalkState,
380 ACPI_OP_WALK_INFO *Info,
381 ACPI_PARSE_OBJECT *Op);
383 void
384 AcpiDmDecodeInternalObject (
385 ACPI_OPERAND_OBJECT *ObjDesc);
387 UINT32
388 AcpiDmListType (
389 ACPI_PARSE_OBJECT *Op);
391 void
392 AcpiDmMethodFlags (
393 ACPI_PARSE_OBJECT *Op);
395 void
396 AcpiDmFieldFlags (
397 ACPI_PARSE_OBJECT *Op);
399 void
400 AcpiDmAddressSpace (
401 UINT8 SpaceId);
403 void
404 AcpiDmRegionFlags (
405 ACPI_PARSE_OBJECT *Op);
407 void
408 AcpiDmMatchOp (
409 ACPI_PARSE_OBJECT *Op);
411 BOOLEAN
412 AcpiDmCommaIfListMember (
413 ACPI_PARSE_OBJECT *Op);
415 void
416 AcpiDmCommaIfFieldMember (
417 ACPI_PARSE_OBJECT *Op);
421 * dmnames
423 UINT32
424 AcpiDmDumpName (
425 char *Name);
427 ACPI_STATUS
428 AcpiPsDisplayObjectPathname (
429 ACPI_WALK_STATE *WalkState,
430 ACPI_PARSE_OBJECT *Op);
432 void
433 AcpiDmNamestring (
434 char *Name);
438 * dmobject
440 void
441 AcpiDmDisplayInternalObject (
442 ACPI_OPERAND_OBJECT *ObjDesc,
443 ACPI_WALK_STATE *WalkState);
445 void
446 AcpiDmDisplayArguments (
447 ACPI_WALK_STATE *WalkState);
449 void
450 AcpiDmDisplayLocals (
451 ACPI_WALK_STATE *WalkState);
453 void
454 AcpiDmDumpMethodInfo (
455 ACPI_STATUS Status,
456 ACPI_WALK_STATE *WalkState,
457 ACPI_PARSE_OBJECT *Op);
461 * dmbuffer
463 void
464 AcpiDmDisasmByteList (
465 UINT32 Level,
466 UINT8 *ByteData,
467 UINT32 ByteCount);
469 void
470 AcpiDmByteList (
471 ACPI_OP_WALK_INFO *Info,
472 ACPI_PARSE_OBJECT *Op);
474 void
475 AcpiDmIsEisaId (
476 ACPI_PARSE_OBJECT *Op);
478 void
479 AcpiDmEisaId (
480 UINT32 EncodedId);
482 BOOLEAN
483 AcpiDmIsUnicodeBuffer (
484 ACPI_PARSE_OBJECT *Op);
486 BOOLEAN
487 AcpiDmIsStringBuffer (
488 ACPI_PARSE_OBJECT *Op);
492 * dmresrc
494 void
495 AcpiDmDumpInteger8 (
496 UINT8 Value,
497 char *Name);
499 void
500 AcpiDmDumpInteger16 (
501 UINT16 Value,
502 char *Name);
504 void
505 AcpiDmDumpInteger32 (
506 UINT32 Value,
507 char *Name);
509 void
510 AcpiDmDumpInteger64 (
511 UINT64 Value,
512 char *Name);
514 void
515 AcpiDmResourceTemplate (
516 ACPI_OP_WALK_INFO *Info,
517 ACPI_PARSE_OBJECT *Op,
518 UINT8 *ByteData,
519 UINT32 ByteCount);
521 ACPI_STATUS
522 AcpiDmIsResourceTemplate (
523 ACPI_PARSE_OBJECT *Op);
525 void
526 AcpiDmIndent (
527 UINT32 Level);
529 void
530 AcpiDmBitList (
531 UINT16 Mask);
533 void
534 AcpiDmDecodeAttribute (
535 UINT8 Attribute);
537 void
538 AcpiDmDescriptorName (
539 void);
543 * dmresrcl
545 void
546 AcpiDmWordDescriptor (
547 AML_RESOURCE *Resource,
548 UINT32 Length,
549 UINT32 Level);
551 void
552 AcpiDmDwordDescriptor (
553 AML_RESOURCE *Resource,
554 UINT32 Length,
555 UINT32 Level);
557 void
558 AcpiDmExtendedDescriptor (
559 AML_RESOURCE *Resource,
560 UINT32 Length,
561 UINT32 Level);
563 void
564 AcpiDmQwordDescriptor (
565 AML_RESOURCE *Resource,
566 UINT32 Length,
567 UINT32 Level);
569 void
570 AcpiDmMemory24Descriptor (
571 AML_RESOURCE *Resource,
572 UINT32 Length,
573 UINT32 Level);
575 void
576 AcpiDmMemory32Descriptor (
577 AML_RESOURCE *Resource,
578 UINT32 Length,
579 UINT32 Level);
581 void
582 AcpiDmFixedMemory32Descriptor (
583 AML_RESOURCE *Resource,
584 UINT32 Length,
585 UINT32 Level);
587 void
588 AcpiDmGenericRegisterDescriptor (
589 AML_RESOURCE *Resource,
590 UINT32 Length,
591 UINT32 Level);
593 void
594 AcpiDmInterruptDescriptor (
595 AML_RESOURCE *Resource,
596 UINT32 Length,
597 UINT32 Level);
599 void
600 AcpiDmVendorLargeDescriptor (
601 AML_RESOURCE *Resource,
602 UINT32 Length,
603 UINT32 Level);
605 void
606 AcpiDmVendorCommon (
607 char *Name,
608 UINT8 *ByteData,
609 UINT32 Length,
610 UINT32 Level);
614 * dmresrcs
616 void
617 AcpiDmIrqDescriptor (
618 AML_RESOURCE *Resource,
619 UINT32 Length,
620 UINT32 Level);
622 void
623 AcpiDmDmaDescriptor (
624 AML_RESOURCE *Resource,
625 UINT32 Length,
626 UINT32 Level);
628 void
629 AcpiDmIoDescriptor (
630 AML_RESOURCE *Resource,
631 UINT32 Length,
632 UINT32 Level);
634 void
635 AcpiDmFixedIoDescriptor (
636 AML_RESOURCE *Resource,
637 UINT32 Length,
638 UINT32 Level);
640 void
641 AcpiDmStartDependentDescriptor (
642 AML_RESOURCE *Resource,
643 UINT32 Length,
644 UINT32 Level);
646 void
647 AcpiDmEndDependentDescriptor (
648 AML_RESOURCE *Resource,
649 UINT32 Length,
650 UINT32 Level);
652 void
653 AcpiDmVendorSmallDescriptor (
654 AML_RESOURCE *Resource,
655 UINT32 Length,
656 UINT32 Level);
660 * dmutils
662 void
663 AcpiDmAddToExternalList (
664 char *Path,
665 UINT8 Type,
666 UINT32 Value);
669 * dmrestag
671 void
672 AcpiDmFindResources (
673 ACPI_PARSE_OBJECT *Root);
675 void
676 AcpiDmCheckResourceReference (
677 ACPI_PARSE_OBJECT *Op,
678 ACPI_WALK_STATE *WalkState);
680 #endif /* __ACDISASM_H__ */