Sync ACPICA with Intel's version 20181213.
[dragonfly.git] / sys / contrib / dev / acpica / source / compiler / aslcompiler.h
blobc5e8cb0c2537df98c54e2d206ac1aed63d71b037
1 /******************************************************************************
3 * Module Name: aslcompiler.h - common include file for iASL
5 *****************************************************************************/
7 /******************************************************************************
9 * 1. Copyright Notice
11 * Some or all of this work - Copyright (c) 1999 - 2018, Intel Corp.
12 * All rights reserved.
14 * 2. License
16 * 2.1. This is your license from Intel Corp. under its intellectual property
17 * rights. You may have additional license terms from the party that provided
18 * you this software, covering your right to use that party's intellectual
19 * property rights.
21 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22 * copy of the source code appearing in this file ("Covered Code") an
23 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24 * base code distributed originally by Intel ("Original Intel Code") to copy,
25 * make derivatives, distribute, use and display any portion of the Covered
26 * Code in any form, with the right to sublicense such rights; and
28 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29 * license (with the right to sublicense), under only those claims of Intel
30 * patents that are infringed by the Original Intel Code, to make, use, sell,
31 * offer to sell, and import the Covered Code and derivative works thereof
32 * solely to the minimum extent necessary to exercise the above copyright
33 * license, and in no event shall the patent license extend to any additions
34 * to or modifications of the Original Intel Code. No other license or right
35 * is granted directly or by implication, estoppel or otherwise;
37 * The above copyright and patent license is granted only if the following
38 * conditions are met:
40 * 3. Conditions
42 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43 * Redistribution of source code of any substantial portion of the Covered
44 * Code or modification with rights to further distribute source must include
45 * the above Copyright Notice, the above License, this list of Conditions,
46 * and the following Disclaimer and Export Compliance provision. In addition,
47 * Licensee must cause all Covered Code to which Licensee contributes to
48 * contain a file documenting the changes Licensee made to create that Covered
49 * Code and the date of any change. Licensee must include in that file the
50 * documentation of any changes made by any predecessor Licensee. Licensee
51 * must include a prominent statement that the modification is derived,
52 * directly or indirectly, from Original Intel Code.
54 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55 * Redistribution of source code of any substantial portion of the Covered
56 * Code or modification without rights to further distribute source must
57 * include the following Disclaimer and Export Compliance provision in the
58 * documentation and/or other materials provided with distribution. In
59 * addition, Licensee may not authorize further sublicense of source of any
60 * portion of the Covered Code, and must include terms to the effect that the
61 * license from Licensee to its licensee is limited to the intellectual
62 * property embodied in the software Licensee provides to its licensee, and
63 * not to intellectual property embodied in modifications its licensee may
64 * make.
66 * 3.3. Redistribution of Executable. Redistribution in executable form of any
67 * substantial portion of the Covered Code or modification must reproduce the
68 * above Copyright Notice, and the following Disclaimer and Export Compliance
69 * provision in the documentation and/or other materials provided with the
70 * distribution.
72 * 3.4. Intel retains all right, title, and interest in and to the Original
73 * Intel Code.
75 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76 * Intel shall be used in advertising or otherwise to promote the sale, use or
77 * other dealings in products derived from or relating to the Covered Code
78 * without prior written authorization from Intel.
80 * 4. Disclaimer and Export Compliance
82 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
85 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
86 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
87 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
88 * PARTICULAR PURPOSE.
90 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
96 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
97 * LIMITED REMEDY.
99 * 4.3. Licensee shall not export, either directly or indirectly, any of this
100 * software or system incorporating such software without first obtaining any
101 * required license or other approval from the U. S. Department of Commerce or
102 * any other agency or department of the United States Government. In the
103 * event Licensee exports any such software from the United States or
104 * re-exports any such software from a foreign destination, Licensee shall
105 * ensure that the distribution and export/re-export of the software is in
106 * compliance with all laws, regulations, orders, or other restrictions of the
107 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108 * any of its subsidiaries will export/re-export any technical data, process,
109 * software, or service, directly or indirectly, to any country for which the
110 * United States government or any agency thereof requires an export license,
111 * other governmental approval, or letter of assurance, without first obtaining
112 * such license, approval or letter.
114 *****************************************************************************
116 * Alternatively, you may choose to be licensed under the terms of the
117 * following license:
119 * Redistribution and use in source and binary forms, with or without
120 * modification, are permitted provided that the following conditions
121 * are met:
122 * 1. Redistributions of source code must retain the above copyright
123 * notice, this list of conditions, and the following disclaimer,
124 * without modification.
125 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
126 * substantially similar to the "NO WARRANTY" disclaimer below
127 * ("Disclaimer") and any redistribution must be conditioned upon
128 * including a substantially similar Disclaimer requirement for further
129 * binary redistribution.
130 * 3. Neither the names of the above-listed copyright holders nor the names
131 * of any contributors may be used to endorse or promote products derived
132 * from this software without specific prior written permission.
134 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
135 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
136 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
137 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
138 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
139 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
140 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
141 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
142 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
143 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
144 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
146 * Alternatively, you may choose to be licensed under the terms of the
147 * GNU General Public License ("GPL") version 2 as published by the Free
148 * Software Foundation.
150 *****************************************************************************/
152 #ifndef __ASLCOMPILER_H
153 #define __ASLCOMPILER_H
155 #include "acpi.h"
156 #include "accommon.h"
157 #include "amlresrc.h"
158 #include "acdebug.h"
160 /* Microsoft-specific */
162 #if (defined WIN32 || defined WIN64)
164 /* warn : used #pragma pack */
165 #pragma warning(disable:4103)
167 /* warn : named type definition in parentheses */
168 #pragma warning(disable:4115)
169 #endif
171 #include <stdio.h>
172 #include <stdlib.h>
173 #include <string.h>
174 #include <errno.h>
175 #include <ctype.h>
177 /* Compiler headers */
179 #include "asldefine.h"
180 #include "asltypes.h"
181 #include "aslmessages.h"
182 #include "aslglobal.h"
183 #include "preprocess.h"
184 #include "dtcompiler.h"
187 /*******************************************************************************
189 * Compiler prototypes
191 ******************************************************************************/
194 * Main ASL parser - generated from flex/bison, lex/yacc, etc.
196 ACPI_PARSE_OBJECT *
197 AslDoError (
198 void);
201 AslCompilerlex(
202 void);
204 void
205 AslResetCurrentLineBuffer (
206 void);
208 void
209 AslInsertLineBuffer (
210 int SourceChar);
213 AslPopInputFileStack (
214 void);
216 void
217 AslPushInputFileStack (
218 FILE *InputFile,
219 char *Filename);
221 void
222 AslParserCleanup (
223 void);
227 * aslstartup - entered from main()
229 void
230 AslInitializeGlobals (
231 void);
233 typedef
234 ACPI_STATUS (*ASL_PATHNAME_CALLBACK) (
235 char *);
237 ACPI_STATUS
238 AslDoOneFile (
239 char *Filename);
241 ACPI_STATUS
242 AslCheckForErrorExit (
243 void);
247 * aslcompile - compile mainline
249 void
250 AslCompilerSignon (
251 UINT32 FileId);
253 void
254 AslCompilerFileHeader (
255 UINT32 FileId);
258 CmDoCompile (
259 void);
261 void
262 CmDoOutputFiles (
263 void);
265 void
266 CmCleanupAndExit (
267 void);
271 * aslallocate - memory allocation
273 void *
274 UtLocalCalloc (
275 UINT32 Size);
277 void
278 UtExpandLineBuffers (
279 void);
281 void
282 UtReallocLineBuffers (
283 char **Buffer,
284 UINT32 OldSize,
285 UINT32 NewSize);
287 void
288 UtFreeLineBuffers (
289 void);
293 * aslcache - local cache support
295 char *
296 UtLocalCacheCalloc (
297 UINT32 Length);
299 ACPI_PARSE_OBJECT *
300 UtParseOpCacheCalloc (
301 void);
303 DT_SUBTABLE *
304 UtSubtableCacheCalloc (
305 void);
307 DT_FIELD *
308 UtFieldCacheCalloc (
309 void);
311 void
312 UtDeleteLocalCaches (
313 void);
317 * aslascii - ascii support
319 ACPI_STATUS
320 FlIsFileAsciiSource (
321 char *Filename,
322 BOOLEAN DisplayErrors);
326 * aslwalks - semantic analysis and parse tree walks
328 ACPI_STATUS
329 AnOtherSemanticAnalysisWalkBegin (
330 ACPI_PARSE_OBJECT *Op,
331 UINT32 Level,
332 void *Context);
334 ACPI_STATUS
335 AnOtherSemanticAnalysisWalkEnd (
336 ACPI_PARSE_OBJECT *Op,
337 UINT32 Level,
338 void *Context);
340 ACPI_STATUS
341 AnOperandTypecheckWalkEnd (
342 ACPI_PARSE_OBJECT *Op,
343 UINT32 Level,
344 void *Context);
346 ACPI_STATUS
347 AnMethodTypingWalkEnd (
348 ACPI_PARSE_OBJECT *Op,
349 UINT32 Level,
350 void *Context);
354 * aslmethod - Control method analysis walk
356 ACPI_STATUS
357 MtMethodAnalysisWalkBegin (
358 ACPI_PARSE_OBJECT *Op,
359 UINT32 Level,
360 void *Context);
362 ACPI_STATUS
363 MtMethodAnalysisWalkEnd (
364 ACPI_PARSE_OBJECT *Op,
365 UINT32 Level,
366 void *Context);
370 * aslbtypes - bitfield data types
372 UINT32
373 AnMapObjTypeToBtype (
374 ACPI_PARSE_OBJECT *Op);
376 UINT32
377 AnMapArgTypeToBtype (
378 UINT32 ArgType);
380 UINT32
381 AnGetBtype (
382 ACPI_PARSE_OBJECT *Op);
384 void
385 AnFormatBtype (
386 char *Buffer,
387 UINT32 Btype);
391 * aslanalyze - Support functions for parse tree walks
393 void
394 AnCheckId (
395 ACPI_PARSE_OBJECT *Op,
396 ACPI_NAME Type);
398 /* Values for Type argument above */
400 #define ASL_TYPE_HID 0
401 #define ASL_TYPE_CID 1
403 BOOLEAN
404 AnIsInternalMethod (
405 ACPI_PARSE_OBJECT *Op);
407 UINT32
408 AnGetInternalMethodReturnType (
409 ACPI_PARSE_OBJECT *Op);
411 BOOLEAN
412 AnLastStatementIsReturn (
413 ACPI_PARSE_OBJECT *Op);
415 void
416 AnCheckMethodReturnValue (
417 ACPI_PARSE_OBJECT *Op,
418 const ACPI_OPCODE_INFO *OpInfo,
419 ACPI_PARSE_OBJECT *ArgOp,
420 UINT32 RequiredBtypes,
421 UINT32 ThisNodeBtype);
423 BOOLEAN
424 AnIsResultUsed (
425 ACPI_PARSE_OBJECT *Op);
427 void
428 ApCheckForGpeNameConflict (
429 ACPI_PARSE_OBJECT *Op);
431 void
432 ApCheckRegMethod (
433 ACPI_PARSE_OBJECT *Op);
435 BOOLEAN
436 ApFindNameInScope (
437 char *Name,
438 ACPI_PARSE_OBJECT *Op);
440 BOOLEAN
441 ApFindNameInDeviceTree (
442 char *Name,
443 ACPI_PARSE_OBJECT *Op);
446 * aslerror - error handling/reporting
448 void
449 AslAbort (
450 void);
452 void
453 AslDualParseOpError (
454 UINT8 Level,
455 UINT16 MainMessageId,
456 ACPI_PARSE_OBJECT *MainOp,
457 char *MainMessage,
458 UINT16 SecondMessageId,
459 ACPI_PARSE_OBJECT *SecondOp,
460 char *SecondaryMessage);
462 void
463 AslError (
464 UINT8 Level,
465 UINT16 MessageId,
466 ACPI_PARSE_OBJECT *Op,
467 char *ExtraMessage);
469 void
470 AslCheckExpectedExceptions (
471 void);
473 ACPI_STATUS
474 AslExpectException (
475 char *MessageIdString);
477 ACPI_STATUS
478 AslElevateException (
479 char *MessageIdString);
481 ACPI_STATUS
482 AslDisableException (
483 char *MessageIdString);
485 BOOLEAN
486 AslIsExceptionIgnored (
487 UINT8 Level,
488 UINT16 MessageId);
490 void
491 AslCoreSubsystemError (
492 ACPI_PARSE_OBJECT *Op,
493 ACPI_STATUS Status,
494 char *ExtraMessage,
495 BOOLEAN Abort);
498 AslCompilererror(
499 const char *s);
501 void
502 AslCommonError (
503 UINT8 Level,
504 UINT16 MessageId,
505 UINT32 CurrentLineNumber,
506 UINT32 LogicalLineNumber,
507 UINT32 LogicalByteOffset,
508 UINT32 Column,
509 char *Filename,
510 char *ExtraMessage);
512 void
513 AslCommonError2 (
514 UINT8 Level,
515 UINT16 MessageId,
516 UINT32 LineNumber,
517 UINT32 Column,
518 char *SourceLine,
519 char *Filename,
520 char *ExtraMessage);
522 void
523 AePrintException (
524 UINT32 FileId,
525 ASL_ERROR_MSG *Enode,
526 char *Header);
528 void
529 AePrintErrorLog (
530 UINT32 FileId);
532 void
533 AeClearErrorLog (
534 void);
538 * asllisting - generate all "listing" type files
540 void
541 LsDoListings (
542 void);
544 void
545 LsWriteNodeToAsmListing (
546 ACPI_PARSE_OBJECT *Op);
548 void
549 LsWriteNode (
550 ACPI_PARSE_OBJECT *Op,
551 UINT32 FileId);
553 void
554 LsDumpParseTree (
555 void);
559 * asllistsup - Listing file support utilities
561 void
562 LsDumpAscii (
563 UINT32 FileId,
564 UINT32 Count,
565 UINT8 *Buffer);
567 void
568 LsDumpAsciiInComment (
569 UINT32 FileId,
570 UINT32 Count,
571 UINT8 *Buffer);
573 void
574 LsCheckException (
575 UINT32 LineNumber,
576 UINT32 FileId);
578 void
579 LsFlushListingBuffer (
580 UINT32 FileId);
582 void
583 LsWriteListingHexBytes (
584 UINT8 *Buffer,
585 UINT32 Length,
586 UINT32 FileId);
588 void
589 LsWriteSourceLines (
590 UINT32 ToLineNumber,
591 UINT32 ToLogicalLineNumber,
592 UINT32 FileId);
594 UINT32
595 LsWriteOneSourceLine (
596 UINT32 FileId);
598 void
599 LsPushNode (
600 char *Filename);
602 ASL_LISTING_NODE *
603 LsPopNode (
604 void);
608 * aslhex - generate all "hex" output files (C, ASM, ASL)
610 void
611 HxDoHexOutput (
612 void);
616 * aslfold - constant folding
618 ACPI_STATUS
619 OpcAmlConstantWalk (
620 ACPI_PARSE_OBJECT *Op,
621 UINT32 Level,
622 void *Context);
626 * aslmessages - exception strings
628 const char *
629 AeDecodeMessageId (
630 UINT16 MessageId);
632 const char *
633 AeDecodeExceptionLevel (
634 UINT8 Level);
636 UINT16
637 AeBuildFullExceptionCode (
638 UINT8 Level,
639 UINT16 MessageId);
642 * asloffset - generate C offset file for BIOS support
644 ACPI_STATUS
645 LsAmlOffsetWalk (
646 ACPI_PARSE_OBJECT *Op,
647 UINT32 Level,
648 void *Context);
650 void
651 LsDoOffsetTableHeader (
652 UINT32 FileId);
654 void
655 LsDoOffsetTableFooter (
656 UINT32 FileId);
660 * aslopcodes - generate AML opcodes
662 ACPI_STATUS
663 OpcAmlOpcodeWalk (
664 ACPI_PARSE_OBJECT *Op,
665 UINT32 Level,
666 void *Context);
668 ACPI_STATUS
669 OpcAmlOpcodeUpdateWalk (
670 ACPI_PARSE_OBJECT *Op,
671 UINT32 Level,
672 void *Context);
674 void
675 OpcGenerateAmlOpcode (
676 ACPI_PARSE_OBJECT *Op);
678 UINT32
679 OpcSetOptimalIntegerSize (
680 ACPI_PARSE_OBJECT *Op);
682 void
683 OpcGetIntegerWidth (
684 ACPI_PARSE_OBJECT *Op);
688 * asloperands - generate AML operands for the AML opcodes
690 ACPI_PARSE_OBJECT *
691 UtGetArg (
692 ACPI_PARSE_OBJECT *Op,
693 UINT32 Argn);
695 void
696 OpnGenerateAmlOperands (
697 ACPI_PARSE_OBJECT *Op);
699 void
700 OpnDoPackage (
701 ACPI_PARSE_OBJECT *Op);
705 * aslopt - optmization
707 void
708 OptOptimizeNamePath (
709 ACPI_PARSE_OBJECT *Op,
710 UINT32 Flags,
711 ACPI_WALK_STATE *WalkState,
712 char *AmlNameString,
713 ACPI_NAMESPACE_NODE *TargetNode);
717 * aslpld - ToPLD macro support
719 void
720 OpcDoPld (
721 ACPI_PARSE_OBJECT *Op);
725 * aslprintf - Printf/Fprintf macros
727 void
728 OpcDoPrintf (
729 ACPI_PARSE_OBJECT *Op);
731 void
732 OpcDoFprintf (
733 ACPI_PARSE_OBJECT *Op);
737 * aslprune - parse tree pruner
739 void
740 AslPruneParseTree (
741 UINT32 PruneDepth,
742 UINT32 Type);
746 * aslcodegen - code generation
748 void
749 CgGenerateAmlOutput (
750 void);
752 void
753 CgLocalWriteAmlData (
754 ACPI_PARSE_OBJECT *Op,
755 void *Buffer,
756 UINT32 Length);
760 * aslfile
762 void
763 FlOpenFile (
764 UINT32 FileId,
765 char *Filename,
766 char *Mode);
770 * asllength - calculate/adjust AML package lengths
772 ACPI_STATUS
773 LnPackageLengthWalk (
774 ACPI_PARSE_OBJECT *Op,
775 UINT32 Level,
776 void *Context);
778 ACPI_STATUS
779 LnInitLengthsWalk (
780 ACPI_PARSE_OBJECT *Op,
781 UINT32 Level,
782 void *Context);
784 void
785 CgGenerateAmlLengths (
786 ACPI_PARSE_OBJECT *Op);
790 * aslmap - opcode mappings and reserved method names
792 ACPI_OBJECT_TYPE
793 AslMapNamedOpcodeToDataType (
794 UINT16 Opcode);
798 * aslpredef - ACPI predefined names support
800 BOOLEAN
801 ApCheckForPredefinedMethod (
802 ACPI_PARSE_OBJECT *Op,
803 ASL_METHOD_INFO *MethodInfo);
805 void
806 ApCheckPredefinedReturnValue (
807 ACPI_PARSE_OBJECT *Op,
808 ASL_METHOD_INFO *MethodInfo);
810 UINT32
811 ApCheckForPredefinedName (
812 ACPI_PARSE_OBJECT *Op,
813 char *Name);
815 void
816 ApCheckForPredefinedObject (
817 ACPI_PARSE_OBJECT *Op,
818 char *Name);
820 ACPI_STATUS
821 ApCheckObjectType (
822 const char *PredefinedName,
823 ACPI_PARSE_OBJECT *Op,
824 UINT32 ExpectedBtypes,
825 UINT32 PackageIndex);
827 void
828 ApDisplayReservedNames (
829 void);
833 * aslprepkg - ACPI predefined names support for packages
835 void
836 ApCheckPackage (
837 ACPI_PARSE_OBJECT *ParentOp,
838 const ACPI_PREDEFINED_INFO *Predefined);
842 * asltransform - parse tree transformations
844 ACPI_STATUS
845 TrAmlTransformWalkBegin (
846 ACPI_PARSE_OBJECT *Op,
847 UINT32 Level,
848 void *Context);
850 ACPI_STATUS
851 TrAmlTransformWalkEnd (
852 ACPI_PARSE_OBJECT *Op,
853 UINT32 Level,
854 void *Context);
858 * aslexternal - External opcode support
860 ACPI_STATUS
861 ExAmlExternalWalkBegin (
862 ACPI_PARSE_OBJECT *Op,
863 UINT32 Level,
864 void *Context);
866 ACPI_STATUS
867 ExAmlExternalWalkEnd (
868 ACPI_PARSE_OBJECT *Op,
869 UINT32 Level,
870 void *Context);
872 void
873 ExDoExternal (
874 ACPI_PARSE_OBJECT *Op);
876 /* Values for "Visitation" parameter above */
878 #define ASL_WALK_VISIT_DOWNWARD 0x01
879 #define ASL_WALK_VISIT_UPWARD 0x02
880 #define ASL_WALK_VISIT_TWICE (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD)
884 * aslparseop.c - Parse op create/allocate/cache
886 ACPI_PARSE_OBJECT *
887 TrCreateOp (
888 UINT32 ParseOpcode,
889 UINT32 NumChildren,
890 ...);
892 ACPI_PARSE_OBJECT *
893 TrCreateLeafOp (
894 UINT32 ParseOpcode);
896 ACPI_PARSE_OBJECT *
897 TrCreateNullTargetOp (
898 void);
900 ACPI_PARSE_OBJECT *
901 TrCreateAssignmentOp (
902 ACPI_PARSE_OBJECT *Target,
903 ACPI_PARSE_OBJECT *Source);
905 ACPI_PARSE_OBJECT *
906 TrCreateTargetOp (
907 ACPI_PARSE_OBJECT *OriginalOp,
908 ACPI_PARSE_OBJECT *ParentOp);
910 ACPI_PARSE_OBJECT *
911 TrCreateValuedLeafOp (
912 UINT32 ParseOpcode,
913 UINT64 Value);
915 ACPI_PARSE_OBJECT *
916 TrCreateConstantLeafOp (
917 UINT32 ParseOpcode);
919 ACPI_PARSE_OBJECT *
920 TrAllocateOp (
921 UINT32 ParseOpcode);
923 void
924 TrPrintOpFlags (
925 UINT32 Flags,
926 UINT32 OutputLevel);
930 * asltree.c - Parse tree management
932 void
933 TrSetOpParent (
934 ACPI_PARSE_OBJECT *Op,
935 ACPI_PARSE_OBJECT *ParentOp);
937 ACPI_PARSE_OBJECT *
938 TrSetOpIntegerValue (
939 UINT32 ParseOpcode,
940 ACPI_PARSE_OBJECT *Op);
942 void
943 TrSetOpEndLineNumber (
944 ACPI_PARSE_OBJECT *Op);
946 void
947 TrSetOpCurrentFilename (
948 ACPI_PARSE_OBJECT *Op);
950 void
951 TrSetOpIntegerWidth (
952 ACPI_PARSE_OBJECT *TableSignature,
953 ACPI_PARSE_OBJECT *Revision);
955 ACPI_PARSE_OBJECT *
956 TrLinkOpChildren (
957 ACPI_PARSE_OBJECT *Op,
958 UINT32 NumChildren,
959 ...);
961 ACPI_PARSE_OBJECT *
962 TrLinkPeerOp (
963 ACPI_PARSE_OBJECT *Op1,
964 ACPI_PARSE_OBJECT *Op2);
966 ACPI_PARSE_OBJECT *
967 TrLinkChildOp (
968 ACPI_PARSE_OBJECT *Op1,
969 ACPI_PARSE_OBJECT *Op2);
971 ACPI_PARSE_OBJECT *
972 TrSetOpFlags (
973 ACPI_PARSE_OBJECT *Op,
974 UINT32 Flags);
976 ACPI_PARSE_OBJECT *
977 TrSetOpAmlLength (
978 ACPI_PARSE_OBJECT *Op,
979 UINT32 Length);
981 ACPI_PARSE_OBJECT *
982 TrLinkPeerOps (
983 UINT32 NumPeers,
984 ...);
986 ACPI_STATUS
987 TrWalkParseTree (
988 ACPI_PARSE_OBJECT *Op,
989 UINT32 Visitation,
990 ASL_WALK_CALLBACK DescendingCallback,
991 ASL_WALK_CALLBACK AscendingCallback,
992 void *Context);
996 * aslfiles - File I/O support
998 void
999 FlAddIncludeDirectory (
1000 char *Dir);
1002 char *
1003 FlMergePathnames (
1004 char *PrefixDir,
1005 char *FilePathname);
1007 void
1008 FlOpenIncludeFile (
1009 ACPI_PARSE_OBJECT *Op);
1011 void
1012 FlFileError (
1013 UINT32 FileId,
1014 UINT8 ErrorId);
1016 UINT32
1017 FlGetFileSize (
1018 UINT32 FileId);
1020 ACPI_STATUS
1021 FlReadFile (
1022 UINT32 FileId,
1023 void *Buffer,
1024 UINT32 Length);
1026 void
1027 FlWriteFile (
1028 UINT32 FileId,
1029 void *Buffer,
1030 UINT32 Length);
1032 void
1033 FlSeekFile (
1034 UINT32 FileId,
1035 long Offset);
1037 void
1038 FlCloseFile (
1039 UINT32 FileId);
1041 void
1042 FlPrintFile (
1043 UINT32 FileId,
1044 char *Format,
1045 ...);
1047 void
1048 FlDeleteFile (
1049 UINT32 FileId);
1051 void
1052 FlSetLineNumber (
1053 UINT32 LineNumber);
1055 void
1056 FlSetFilename (
1057 char *Filename);
1059 ACPI_STATUS
1060 FlOpenInputFile (
1061 char *InputFilename);
1063 ACPI_STATUS
1064 FlOpenAmlOutputFile (
1065 char *InputFilename);
1067 ACPI_STATUS
1068 FlOpenMiscOutputFiles (
1069 char *InputFilename);
1072 * aslhwmap - hardware map summary
1074 void
1075 MpEmitMappingInfo (
1076 void);
1080 * asload - load namespace in prep for cross reference
1082 ACPI_STATUS
1083 LdLoadNamespace (
1084 ACPI_PARSE_OBJECT *RootOp);
1088 * asllookup - namespace lookup functions
1090 void
1091 LkFindUnreferencedObjects (
1092 void);
1095 * aslhelp - help screens
1097 void
1098 Usage (
1099 void);
1101 void
1102 AslFilenameHelp (
1103 void);
1105 void
1106 AslDisassemblyHelp (
1107 void);
1111 * aslnamesp - namespace output file generation
1113 ACPI_STATUS
1114 NsDisplayNamespace (
1115 void);
1117 void
1118 NsSetupNamespaceListing (
1119 void *Handle);
1122 * asloptions - command line processing
1125 AslCommandLine (
1126 int argc,
1127 char **argv);
1130 * aslxref - namespace cross reference
1132 ACPI_STATUS
1133 XfCrossReferenceNamespace (
1134 void);
1138 * aslxrefout
1140 void
1141 OtPrintHeaders (
1142 char *Message);
1144 void
1145 OtCreateXrefFile (
1146 void);
1148 void
1149 OtXrefWalkPart1 (
1150 ACPI_PARSE_OBJECT *Op,
1151 UINT32 Level,
1152 ASL_METHOD_INFO *MethodInfo);
1156 * aslutils - common compiler utilites
1158 void
1159 DbgPrint (
1160 UINT32 Type,
1161 char *Format,
1162 ...);
1164 /* Type values for above */
1166 #define ASL_DEBUG_OUTPUT 0
1167 #define ASL_PARSE_OUTPUT 1
1168 #define ASL_TREE_OUTPUT 2
1170 UINT8
1171 UtIsBigEndianMachine (
1172 void);
1174 BOOLEAN
1175 UtQueryForOverwrite (
1176 char *Pathname);
1178 void
1179 UtDumpStringOp (
1180 ACPI_PARSE_OBJECT *Op,
1181 UINT32 Level);
1183 void
1184 UtDumpIntegerOp (
1185 ACPI_PARSE_OBJECT *Op,
1186 UINT32 Level,
1187 UINT32 IntegerLength);
1189 void
1190 UtDumpBasicOp (
1191 ACPI_PARSE_OBJECT *Op,
1192 UINT32 Level);
1194 void *
1195 UtGetParentMethod (
1196 ACPI_NAMESPACE_NODE *Node);
1198 BOOLEAN
1199 UtNodeIsDescendantOf (
1200 ACPI_NAMESPACE_NODE *Node1,
1201 ACPI_NAMESPACE_NODE *Node2);
1203 void
1204 UtDisplaySupportedTables (
1205 void);
1207 void
1208 UtDisplayConstantOpcodes (
1209 void);
1211 UINT8
1212 UtBeginEvent (
1213 char *Name);
1215 void
1216 UtEndEvent (
1217 UINT8 Event);
1219 void
1220 UtDisplaySummary (
1221 UINT32 FileId);
1223 void
1224 UtConvertByteToHex (
1225 UINT8 RawByte,
1226 UINT8 *Buffer);
1228 void
1229 UtConvertByteToAsmHex (
1230 UINT8 RawByte,
1231 UINT8 *Buffer);
1233 char *
1234 UtGetOpName (
1235 UINT32 ParseOpcode);
1237 void
1238 UtSetParseOpName (
1239 ACPI_PARSE_OBJECT *Op);
1241 ACPI_STATUS
1242 UtInternalizeName (
1243 char *ExternalName,
1244 char **ConvertedName);
1246 void
1247 UtAttachNamepathToOwner (
1248 ACPI_PARSE_OBJECT *Op,
1249 ACPI_PARSE_OBJECT *NameNode);
1251 ACPI_PARSE_OBJECT *
1252 UtCheckIntegerRange (
1253 ACPI_PARSE_OBJECT *Op,
1254 UINT32 LowValue,
1255 UINT32 HighValue);
1257 UINT64
1258 UtDoConstant (
1259 char *String);
1263 * asluuid - UUID support
1265 ACPI_STATUS
1266 AuValidateUuid (
1267 char *InString);
1269 ACPI_STATUS
1270 AuConvertUuidToString (
1271 char *UuIdBuffer,
1272 char *OutString);
1275 * aslresource - Resource template generation utilities
1277 void
1278 RsSmallAddressCheck (
1279 UINT8 Type,
1280 UINT32 Minimum,
1281 UINT32 Maximum,
1282 UINT32 Length,
1283 UINT32 Alignment,
1284 ACPI_PARSE_OBJECT *MinOp,
1285 ACPI_PARSE_OBJECT *MaxOp,
1286 ACPI_PARSE_OBJECT *LengthOp,
1287 ACPI_PARSE_OBJECT *AlignOp,
1288 ACPI_PARSE_OBJECT *Op);
1290 void
1291 RsLargeAddressCheck (
1292 UINT64 Minimum,
1293 UINT64 Maximum,
1294 UINT64 Length,
1295 UINT64 Granularity,
1296 UINT8 Flags,
1297 ACPI_PARSE_OBJECT *MinOp,
1298 ACPI_PARSE_OBJECT *MaxOp,
1299 ACPI_PARSE_OBJECT *LengthOp,
1300 ACPI_PARSE_OBJECT *GranOp,
1301 ACPI_PARSE_OBJECT *Op);
1303 UINT16
1304 RsGetStringDataLength (
1305 ACPI_PARSE_OBJECT *InitializerOp);
1307 ASL_RESOURCE_NODE *
1308 RsAllocateResourceNode (
1309 UINT32 Size);
1311 void
1312 RsCreateResourceField (
1313 ACPI_PARSE_OBJECT *Op,
1314 char *Name,
1315 UINT32 ByteOffset,
1316 UINT32 BitOffset,
1317 UINT32 BitLength);
1319 void
1320 RsSetFlagBits (
1321 UINT8 *Flags,
1322 ACPI_PARSE_OBJECT *Op,
1323 UINT8 Position,
1324 UINT8 DefaultBit);
1326 void
1327 RsSetFlagBits16 (
1328 UINT16 *Flags,
1329 ACPI_PARSE_OBJECT *Op,
1330 UINT8 Position,
1331 UINT8 DefaultBit);
1333 ACPI_PARSE_OBJECT *
1334 RsCompleteNodeAndGetNext (
1335 ACPI_PARSE_OBJECT *Op);
1337 void
1338 RsCheckListForDuplicates (
1339 ACPI_PARSE_OBJECT *Op);
1341 ASL_RESOURCE_NODE *
1342 RsDoOneResourceDescriptor (
1343 ASL_RESOURCE_INFO *Info,
1344 UINT8 *State);
1346 /* Values for State above */
1348 #define ACPI_RSTATE_NORMAL 0
1349 #define ACPI_RSTATE_START_DEPENDENT 1
1350 #define ACPI_RSTATE_DEPENDENT_LIST 2
1352 UINT32
1353 RsLinkDescriptorChain (
1354 ASL_RESOURCE_NODE **PreviousRnode,
1355 ASL_RESOURCE_NODE *Rnode);
1357 void
1358 RsDoResourceTemplate (
1359 ACPI_PARSE_OBJECT *Op);
1363 * aslrestype1 - Miscellaneous Small descriptors
1365 ASL_RESOURCE_NODE *
1366 RsDoEndTagDescriptor (
1367 ASL_RESOURCE_INFO *Info);
1369 ASL_RESOURCE_NODE *
1370 RsDoEndDependentDescriptor (
1371 ASL_RESOURCE_INFO *Info);
1373 ASL_RESOURCE_NODE *
1374 RsDoMemory24Descriptor (
1375 ASL_RESOURCE_INFO *Info);
1377 ASL_RESOURCE_NODE *
1378 RsDoMemory32Descriptor (
1379 ASL_RESOURCE_INFO *Info);
1381 ASL_RESOURCE_NODE *
1382 RsDoMemory32FixedDescriptor (
1383 ASL_RESOURCE_INFO *Info);
1385 ASL_RESOURCE_NODE *
1386 RsDoStartDependentDescriptor (
1387 ASL_RESOURCE_INFO *Info);
1389 ASL_RESOURCE_NODE *
1390 RsDoStartDependentNoPriDescriptor (
1391 ASL_RESOURCE_INFO *Info);
1393 ASL_RESOURCE_NODE *
1394 RsDoVendorSmallDescriptor (
1395 ASL_RESOURCE_INFO *Info);
1399 * aslrestype1i - I/O-related Small descriptors
1401 ASL_RESOURCE_NODE *
1402 RsDoDmaDescriptor (
1403 ASL_RESOURCE_INFO *Info);
1405 ASL_RESOURCE_NODE *
1406 RsDoFixedDmaDescriptor (
1407 ASL_RESOURCE_INFO *Info);
1409 ASL_RESOURCE_NODE *
1410 RsDoFixedIoDescriptor (
1411 ASL_RESOURCE_INFO *Info);
1413 ASL_RESOURCE_NODE *
1414 RsDoIoDescriptor (
1415 ASL_RESOURCE_INFO *Info);
1417 ASL_RESOURCE_NODE *
1418 RsDoIrqDescriptor (
1419 ASL_RESOURCE_INFO *Info);
1421 ASL_RESOURCE_NODE *
1422 RsDoIrqNoFlagsDescriptor (
1423 ASL_RESOURCE_INFO *Info);
1427 * aslrestype2 - Large resource descriptors
1429 ASL_RESOURCE_NODE *
1430 RsDoInterruptDescriptor (
1431 ASL_RESOURCE_INFO *Info);
1433 ASL_RESOURCE_NODE *
1434 RsDoVendorLargeDescriptor (
1435 ASL_RESOURCE_INFO *Info);
1437 ASL_RESOURCE_NODE *
1438 RsDoGeneralRegisterDescriptor (
1439 ASL_RESOURCE_INFO *Info);
1441 ASL_RESOURCE_NODE *
1442 RsDoGpioIntDescriptor (
1443 ASL_RESOURCE_INFO *Info);
1445 ASL_RESOURCE_NODE *
1446 RsDoGpioIoDescriptor (
1447 ASL_RESOURCE_INFO *Info);
1449 ASL_RESOURCE_NODE *
1450 RsDoI2cSerialBusDescriptor (
1451 ASL_RESOURCE_INFO *Info);
1453 ASL_RESOURCE_NODE *
1454 RsDoSpiSerialBusDescriptor (
1455 ASL_RESOURCE_INFO *Info);
1457 ASL_RESOURCE_NODE *
1458 RsDoUartSerialBusDescriptor (
1459 ASL_RESOURCE_INFO *Info);
1461 ASL_RESOURCE_NODE *
1462 RsDoPinFunctionDescriptor (
1463 ASL_RESOURCE_INFO *Info);
1465 ASL_RESOURCE_NODE *
1466 RsDoPinConfigDescriptor (
1467 ASL_RESOURCE_INFO *Info);
1469 ASL_RESOURCE_NODE *
1470 RsDoPinGroupDescriptor (
1471 ASL_RESOURCE_INFO *Info);
1473 ASL_RESOURCE_NODE *
1474 RsDoPinGroupFunctionDescriptor (
1475 ASL_RESOURCE_INFO *Info);
1477 ASL_RESOURCE_NODE *
1478 RsDoPinGroupConfigDescriptor (
1479 ASL_RESOURCE_INFO *Info);
1482 * aslrestype2d - DWord address descriptors
1484 ASL_RESOURCE_NODE *
1485 RsDoDwordIoDescriptor (
1486 ASL_RESOURCE_INFO *Info);
1488 ASL_RESOURCE_NODE *
1489 RsDoDwordMemoryDescriptor (
1490 ASL_RESOURCE_INFO *Info);
1492 ASL_RESOURCE_NODE *
1493 RsDoDwordSpaceDescriptor (
1494 ASL_RESOURCE_INFO *Info);
1498 * aslrestype2e - Extended address descriptors
1500 ASL_RESOURCE_NODE *
1501 RsDoExtendedIoDescriptor (
1502 ASL_RESOURCE_INFO *Info);
1504 ASL_RESOURCE_NODE *
1505 RsDoExtendedMemoryDescriptor (
1506 ASL_RESOURCE_INFO *Info);
1508 ASL_RESOURCE_NODE *
1509 RsDoExtendedSpaceDescriptor (
1510 ASL_RESOURCE_INFO *Info);
1514 * aslrestype2q - QWord address descriptors
1516 ASL_RESOURCE_NODE *
1517 RsDoQwordIoDescriptor (
1518 ASL_RESOURCE_INFO *Info);
1520 ASL_RESOURCE_NODE *
1521 RsDoQwordMemoryDescriptor (
1522 ASL_RESOURCE_INFO *Info);
1524 ASL_RESOURCE_NODE *
1525 RsDoQwordSpaceDescriptor (
1526 ASL_RESOURCE_INFO *Info);
1530 * aslrestype2w - Word address descriptors
1532 ASL_RESOURCE_NODE *
1533 RsDoWordIoDescriptor (
1534 ASL_RESOURCE_INFO *Info);
1536 ASL_RESOURCE_NODE *
1537 RsDoWordSpaceDescriptor (
1538 ASL_RESOURCE_INFO *Info);
1540 ASL_RESOURCE_NODE *
1541 RsDoWordBusNumberDescriptor (
1542 ASL_RESOURCE_INFO *Info);
1546 * Entry to data table compiler subsystem
1548 ACPI_STATUS
1549 DtDoCompile(
1550 void);
1552 ACPI_STATUS
1553 DtCreateTemplates (
1554 char **argv);
1558 * ASL/ASL+ converter debug
1560 void
1561 CvDbgPrint (
1562 char *Fmt,
1563 ...);
1566 #endif /* __ASLCOMPILER_H */