aslcompiler.h revision 1.15 1 /******************************************************************************
2 *
3 * Module Name: aslcompiler.h - common include file for iASL
4 *
5 *****************************************************************************/
6
7 /*
8 * Copyright (C) 2000 - 2019, 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 __ASLCOMPILER_H
45 #define __ASLCOMPILER_H
46
47 #include "acpi.h"
48 #include "accommon.h"
49 #include "amlresrc.h"
50 #include "acdebug.h"
51
52 /* Microsoft-specific */
53
54 #if (defined WIN32 || defined WIN64)
55
56 /* warn : used #pragma pack */
57 #pragma warning(disable:4103)
58
59 /* warn : named type definition in parentheses */
60 #pragma warning(disable:4115)
61 #endif
62
63 #include <stdio.h>
64 #include <stdlib.h>
65 #include <string.h>
66 #include <errno.h>
67 #include <ctype.h>
68
69 /* Compiler headers */
70
71 #include "asldefine.h"
72 #include "asltypes.h"
73 #include "aslmessages.h"
74 #include "aslglobal.h"
75 #include "preprocess.h"
76 #include "dtcompiler.h"
77
78
79 /*******************************************************************************
80 *
81 * Compiler prototypes
82 *
83 ******************************************************************************/
84
85 /*
86 * Main ASL parser - generated from flex/bison, lex/yacc, etc.
87 */
88 ACPI_PARSE_OBJECT *
89 AslDoError (
90 void);
91
92 int
93 AslCompilerlex(
94 void);
95
96 void
97 AslResetCurrentLineBuffer (
98 void);
99
100 void
101 AslInsertLineBuffer (
102 int SourceChar);
103
104 int
105 AslPopInputFileStack (
106 void);
107
108 void
109 AslPushInputFileStack (
110 FILE *InputFile,
111 char *Filename);
112
113 void
114 AslParserCleanup (
115 void);
116
117
118 /*
119 * aslstartup - entered from main()
120 */
121 void
122 AslInitializeGlobals (
123 void);
124
125 typedef
126 ACPI_STATUS (*ASL_PATHNAME_CALLBACK) (
127 char *);
128
129 ACPI_STATUS
130 AslDoOneFile (
131 char *Filename);
132
133 ACPI_STATUS
134 AslCheckForErrorExit (
135 void);
136
137
138 /*
139 * aslcompile - compile mainline
140 */
141 void
142 AslCompilerSignon (
143 UINT32 FileId);
144
145 void
146 AslCompilerFileHeader (
147 UINT32 FileId);
148
149 ACPI_STATUS
150 CmDoCompile (
151 void);
152
153 int
154 CmDoAslMiddleAndBackEnd (
155 void);
156
157 void
158 CmDoOutputFiles (
159 void);
160
161 int
162 CmCleanupAndExit (
163 void);
164
165 ACPI_STATUS
166 AslDoDisassembly (
167 void);
168
169
170 /*
171 * aslallocate - memory allocation
172 */
173 void *
174 UtLocalCalloc (
175 UINT32 Size);
176
177 void
178 UtExpandLineBuffers (
179 void);
180
181 void
182 UtReallocLineBuffers (
183 char **Buffer,
184 UINT32 OldSize,
185 UINT32 NewSize);
186
187 void
188 UtFreeLineBuffers (
189 void);
190
191
192 /*
193 * aslcache - local cache support
194 */
195 char *
196 UtLocalCacheCalloc (
197 UINT32 Length);
198
199 ACPI_PARSE_OBJECT *
200 UtParseOpCacheCalloc (
201 void);
202
203 DT_SUBTABLE *
204 UtSubtableCacheCalloc (
205 void);
206
207 DT_FIELD *
208 UtFieldCacheCalloc (
209 void);
210
211 void
212 UtDeleteLocalCaches (
213 void);
214
215
216 /*
217 * aslascii - ascii support
218 */
219 ACPI_STATUS
220 FlIsFileAsciiSource (
221 char *Filename,
222 BOOLEAN DisplayErrors);
223
224
225 /*
226 * aslwalks - semantic analysis and parse tree walks
227 */
228 ACPI_STATUS
229 AnOtherSemanticAnalysisWalkBegin (
230 ACPI_PARSE_OBJECT *Op,
231 UINT32 Level,
232 void *Context);
233
234 ACPI_STATUS
235 AnOtherSemanticAnalysisWalkEnd (
236 ACPI_PARSE_OBJECT *Op,
237 UINT32 Level,
238 void *Context);
239
240 ACPI_STATUS
241 AnOperandTypecheckWalkEnd (
242 ACPI_PARSE_OBJECT *Op,
243 UINT32 Level,
244 void *Context);
245
246 ACPI_STATUS
247 AnMethodTypingWalkEnd (
248 ACPI_PARSE_OBJECT *Op,
249 UINT32 Level,
250 void *Context);
251
252
253 /*
254 * aslmethod - Control method analysis walk
255 */
256 ACPI_STATUS
257 MtMethodAnalysisWalkBegin (
258 ACPI_PARSE_OBJECT *Op,
259 UINT32 Level,
260 void *Context);
261
262 ACPI_STATUS
263 MtMethodAnalysisWalkEnd (
264 ACPI_PARSE_OBJECT *Op,
265 UINT32 Level,
266 void *Context);
267
268
269 /*
270 * aslbtypes - bitfield data types
271 */
272 UINT32
273 AnMapObjTypeToBtype (
274 ACPI_PARSE_OBJECT *Op);
275
276 UINT32
277 AnMapArgTypeToBtype (
278 UINT32 ArgType);
279
280 UINT32
281 AnGetBtype (
282 ACPI_PARSE_OBJECT *Op);
283
284 void
285 AnFormatBtype (
286 char *Buffer,
287 UINT32 Btype);
288
289
290 /*
291 * aslanalyze - Support functions for parse tree walks
292 */
293 void
294 AnCheckId (
295 ACPI_PARSE_OBJECT *Op,
296 ACPI_NAME Type);
297
298 /* Values for Type argument above */
299
300 #define ASL_TYPE_HID 0
301 #define ASL_TYPE_CID 1
302
303 BOOLEAN
304 AnIsInternalMethod (
305 ACPI_PARSE_OBJECT *Op);
306
307 UINT32
308 AnGetInternalMethodReturnType (
309 ACPI_PARSE_OBJECT *Op);
310
311 BOOLEAN
312 AnLastStatementIsReturn (
313 ACPI_PARSE_OBJECT *Op);
314
315 void
316 AnCheckMethodReturnValue (
317 ACPI_PARSE_OBJECT *Op,
318 const ACPI_OPCODE_INFO *OpInfo,
319 ACPI_PARSE_OBJECT *ArgOp,
320 UINT32 RequiredBtypes,
321 UINT32 ThisNodeBtype);
322
323 BOOLEAN
324 AnIsResultUsed (
325 ACPI_PARSE_OBJECT *Op);
326
327 void
328 ApCheckForGpeNameConflict (
329 ACPI_PARSE_OBJECT *Op);
330
331 void
332 ApCheckRegMethod (
333 ACPI_PARSE_OBJECT *Op);
334
335 BOOLEAN
336 ApFindNameInScope (
337 char *Name,
338 ACPI_PARSE_OBJECT *Op);
339
340 BOOLEAN
341 ApFindNameInDeviceTree (
342 char *Name,
343 ACPI_PARSE_OBJECT *Op);
344
345 /*
346 * aslerror - error handling/reporting
347 */
348 void
349 AslAbort (
350 void);
351
352 void
353 AslDualParseOpError (
354 UINT8 Level,
355 UINT16 MainMessageId,
356 ACPI_PARSE_OBJECT *MainOp,
357 char *MainMessage,
358 UINT16 SecondMessageId,
359 ACPI_PARSE_OBJECT *SecondOp,
360 char *SecondaryMessage);
361
362 void
363 AslError (
364 UINT8 Level,
365 UINT16 MessageId,
366 ACPI_PARSE_OBJECT *Op,
367 char *ExtraMessage);
368
369 void
370 AslCheckExpectedExceptions (
371 void);
372
373 ACPI_STATUS
374 AslExpectException (
375 char *MessageIdString);
376
377 ACPI_STATUS
378 AslElevateException (
379 char *MessageIdString);
380
381 ACPI_STATUS
382 AslDisableException (
383 char *MessageIdString);
384
385 BOOLEAN
386 AslIsExceptionIgnored (
387 UINT8 Level,
388 UINT16 MessageId);
389
390 void
391 AslCoreSubsystemError (
392 ACPI_PARSE_OBJECT *Op,
393 ACPI_STATUS Status,
394 char *ExtraMessage,
395 BOOLEAN Abort);
396
397 int
398 AslCompilererror(
399 const char *s);
400
401 void
402 AslCommonError (
403 UINT8 Level,
404 UINT16 MessageId,
405 UINT32 CurrentLineNumber,
406 UINT32 LogicalLineNumber,
407 UINT32 LogicalByteOffset,
408 UINT32 Column,
409 char *Filename,
410 char *ExtraMessage);
411
412 void
413 AslCommonError2 (
414 UINT8 Level,
415 UINT16 MessageId,
416 UINT32 LineNumber,
417 UINT32 Column,
418 char *SourceLine,
419 char *Filename,
420 char *ExtraMessage);
421
422 void
423 AePrintException (
424 UINT32 FileId,
425 ASL_ERROR_MSG *Enode,
426 char *Header);
427
428 void
429 AePrintErrorLog (
430 UINT32 FileId);
431
432 void
433 AeClearErrorLog (
434 void);
435
436
437 /*
438 * asllisting - generate all "listing" type files
439 */
440 void
441 LsDoListings (
442 void);
443
444 void
445 LsWriteNodeToAsmListing (
446 ACPI_PARSE_OBJECT *Op);
447
448 void
449 LsWriteNode (
450 ACPI_PARSE_OBJECT *Op,
451 UINT32 FileId);
452
453 void
454 LsDumpParseTree (
455 void);
456
457
458 /*
459 * asllistsup - Listing file support utilities
460 */
461 void
462 LsDumpAscii (
463 UINT32 FileId,
464 UINT32 Count,
465 UINT8 *Buffer);
466
467 void
468 LsDumpAsciiInComment (
469 UINT32 FileId,
470 UINT32 Count,
471 UINT8 *Buffer);
472
473 void
474 LsCheckException (
475 UINT32 LineNumber,
476 UINT32 FileId);
477
478 void
479 LsFlushListingBuffer (
480 UINT32 FileId);
481
482 void
483 LsWriteListingHexBytes (
484 UINT8 *Buffer,
485 UINT32 Length,
486 UINT32 FileId);
487
488 void
489 LsWriteSourceLines (
490 UINT32 ToLineNumber,
491 UINT32 ToLogicalLineNumber,
492 UINT32 FileId);
493
494 UINT32
495 LsWriteOneSourceLine (
496 UINT32 FileId);
497
498 void
499 LsPushNode (
500 char *Filename);
501
502 ASL_LISTING_NODE *
503 LsPopNode (
504 void);
505
506
507 /*
508 * aslhex - generate all "hex" output files (C, ASM, ASL)
509 */
510 void
511 HxDoHexOutput (
512 void);
513
514
515 /*
516 * aslfold - constant folding
517 */
518 ACPI_STATUS
519 OpcAmlConstantWalk (
520 ACPI_PARSE_OBJECT *Op,
521 UINT32 Level,
522 void *Context);
523
524
525 /*
526 * aslmessages - exception strings
527 */
528 const char *
529 AeDecodeMessageId (
530 UINT16 MessageId);
531
532 const char *
533 AeDecodeExceptionLevel (
534 UINT8 Level);
535
536 UINT16
537 AeBuildFullExceptionCode (
538 UINT8 Level,
539 UINT16 MessageId);
540
541 /*
542 * asloffset - generate C offset file for BIOS support
543 */
544 ACPI_STATUS
545 LsAmlOffsetWalk (
546 ACPI_PARSE_OBJECT *Op,
547 UINT32 Level,
548 void *Context);
549
550 void
551 LsDoOffsetTableHeader (
552 UINT32 FileId);
553
554 void
555 LsDoOffsetTableFooter (
556 UINT32 FileId);
557
558
559 /*
560 * aslopcodes - generate AML opcodes
561 */
562 ACPI_STATUS
563 OpcAmlOpcodeWalk (
564 ACPI_PARSE_OBJECT *Op,
565 UINT32 Level,
566 void *Context);
567
568 ACPI_STATUS
569 OpcAmlOpcodeUpdateWalk (
570 ACPI_PARSE_OBJECT *Op,
571 UINT32 Level,
572 void *Context);
573
574 void
575 OpcGenerateAmlOpcode (
576 ACPI_PARSE_OBJECT *Op);
577
578 UINT32
579 OpcSetOptimalIntegerSize (
580 ACPI_PARSE_OBJECT *Op);
581
582 void
583 OpcGetIntegerWidth (
584 ACPI_PARSE_OBJECT *Op);
585
586
587 /*
588 * asloperands - generate AML operands for the AML opcodes
589 */
590 ACPI_PARSE_OBJECT *
591 UtGetArg (
592 ACPI_PARSE_OBJECT *Op,
593 UINT32 Argn);
594
595 void
596 OpnGenerateAmlOperands (
597 ACPI_PARSE_OBJECT *Op);
598
599 void
600 OpnDoPackage (
601 ACPI_PARSE_OBJECT *Op);
602
603
604 /*
605 * aslopt - optimization
606 */
607 void
608 OptOptimizeNamePath (
609 ACPI_PARSE_OBJECT *Op,
610 UINT32 Flags,
611 ACPI_WALK_STATE *WalkState,
612 char *AmlNameString,
613 ACPI_NAMESPACE_NODE *TargetNode);
614
615
616 /*
617 * aslpld - ToPLD macro support
618 */
619 void
620 OpcDoPld (
621 ACPI_PARSE_OBJECT *Op);
622
623
624 /*
625 * aslprintf - Printf/Fprintf macros
626 */
627 void
628 OpcDoPrintf (
629 ACPI_PARSE_OBJECT *Op);
630
631 void
632 OpcDoFprintf (
633 ACPI_PARSE_OBJECT *Op);
634
635
636 /*
637 * aslprune - parse tree pruner
638 */
639 void
640 AslPruneParseTree (
641 UINT32 PruneDepth,
642 UINT32 Type);
643
644
645 /*
646 * aslcodegen - code generation
647 */
648 void
649 CgGenerateAmlOutput (
650 void);
651
652 void
653 CgLocalWriteAmlData (
654 ACPI_PARSE_OBJECT *Op,
655 void *Buffer,
656 UINT32 Length);
657
658
659 /*
660 * aslfile
661 */
662 void
663 FlOpenFile (
664 UINT32 FileId,
665 char *Filename,
666 char *Mode);
667
668
669 /*
670 * asllength - calculate/adjust AML package lengths
671 */
672 ACPI_STATUS
673 LnPackageLengthWalk (
674 ACPI_PARSE_OBJECT *Op,
675 UINT32 Level,
676 void *Context);
677
678 ACPI_STATUS
679 LnInitLengthsWalk (
680 ACPI_PARSE_OBJECT *Op,
681 UINT32 Level,
682 void *Context);
683
684 void
685 CgGenerateAmlLengths (
686 ACPI_PARSE_OBJECT *Op);
687
688
689 /*
690 * aslmap - opcode mappings and reserved method names
691 */
692 ACPI_OBJECT_TYPE
693 AslMapNamedOpcodeToDataType (
694 UINT16 Opcode);
695
696
697 /*
698 * aslpredef - ACPI predefined names support
699 */
700 BOOLEAN
701 ApCheckForPredefinedMethod (
702 ACPI_PARSE_OBJECT *Op,
703 ASL_METHOD_INFO *MethodInfo);
704
705 void
706 ApCheckPredefinedReturnValue (
707 ACPI_PARSE_OBJECT *Op,
708 ASL_METHOD_INFO *MethodInfo);
709
710 UINT32
711 ApCheckForPredefinedName (
712 ACPI_PARSE_OBJECT *Op,
713 char *Name);
714
715 void
716 ApCheckForPredefinedObject (
717 ACPI_PARSE_OBJECT *Op,
718 char *Name);
719
720 ACPI_STATUS
721 ApCheckObjectType (
722 const char *PredefinedName,
723 ACPI_PARSE_OBJECT *Op,
724 UINT32 ExpectedBtypes,
725 UINT32 PackageIndex);
726
727 void
728 ApDisplayReservedNames (
729 void);
730
731
732 /*
733 * aslprepkg - ACPI predefined names support for packages
734 */
735 void
736 ApCheckPackage (
737 ACPI_PARSE_OBJECT *ParentOp,
738 const ACPI_PREDEFINED_INFO *Predefined);
739
740
741 /*
742 * asltransform - parse tree transformations
743 */
744 ACPI_STATUS
745 TrAmlTransformWalkBegin (
746 ACPI_PARSE_OBJECT *Op,
747 UINT32 Level,
748 void *Context);
749
750 ACPI_STATUS
751 TrAmlTransformWalkEnd (
752 ACPI_PARSE_OBJECT *Op,
753 UINT32 Level,
754 void *Context);
755
756
757 /*
758 * aslexternal - External opcode support
759 */
760 ACPI_STATUS
761 ExAmlExternalWalkBegin (
762 ACPI_PARSE_OBJECT *Op,
763 UINT32 Level,
764 void *Context);
765
766 ACPI_STATUS
767 ExAmlExternalWalkEnd (
768 ACPI_PARSE_OBJECT *Op,
769 UINT32 Level,
770 void *Context);
771
772 void
773 ExDoExternal (
774 ACPI_PARSE_OBJECT *Op);
775
776 /* Values for "Visitation" parameter above */
777
778 #define ASL_WALK_VISIT_DOWNWARD 0x01
779 #define ASL_WALK_VISIT_UPWARD 0x02
780 #define ASL_WALK_VISIT_DB_SEPARATELY 0x04
781 #define ASL_WALK_VISIT_TWICE (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD)
782
783
784 /*
785 * aslparseop.c - Parse op create/allocate/cache
786 */
787 ACPI_PARSE_OBJECT *
788 TrCreateOp (
789 UINT32 ParseOpcode,
790 UINT32 NumChildren,
791 ...);
792
793 ACPI_PARSE_OBJECT *
794 TrCreateLeafOp (
795 UINT32 ParseOpcode);
796
797 ACPI_PARSE_OBJECT *
798 TrCreateNullTargetOp (
799 void);
800
801 ACPI_PARSE_OBJECT *
802 TrCreateAssignmentOp (
803 ACPI_PARSE_OBJECT *Target,
804 ACPI_PARSE_OBJECT *Source);
805
806 ACPI_PARSE_OBJECT *
807 TrCreateTargetOp (
808 ACPI_PARSE_OBJECT *OriginalOp,
809 ACPI_PARSE_OBJECT *ParentOp);
810
811 ACPI_PARSE_OBJECT *
812 TrCreateValuedLeafOp (
813 UINT32 ParseOpcode,
814 UINT64 Value);
815
816 ACPI_PARSE_OBJECT *
817 TrCreateConstantLeafOp (
818 UINT32 ParseOpcode);
819
820 ACPI_PARSE_OBJECT *
821 TrAllocateOp (
822 UINT32 ParseOpcode);
823
824 void
825 TrPrintOpFlags (
826 UINT32 Flags,
827 UINT32 OutputLevel);
828
829
830 /*
831 * asltree.c - Parse tree management
832 */
833 void
834 TrSetOpParent (
835 ACPI_PARSE_OBJECT *Op,
836 ACPI_PARSE_OBJECT *ParentOp);
837
838 ACPI_PARSE_OBJECT *
839 TrSetOpIntegerValue (
840 UINT32 ParseOpcode,
841 ACPI_PARSE_OBJECT *Op);
842
843 void
844 TrSetOpEndLineNumber (
845 ACPI_PARSE_OBJECT *Op);
846
847 void
848 TrSetOpCurrentFilename (
849 ACPI_PARSE_OBJECT *Op);
850
851 void
852 TrSetOpIntegerWidth (
853 ACPI_PARSE_OBJECT *TableSignature,
854 ACPI_PARSE_OBJECT *Revision);
855
856 ACPI_PARSE_OBJECT *
857 TrLinkOpChildren (
858 ACPI_PARSE_OBJECT *Op,
859 UINT32 NumChildren,
860 ...);
861
862 ACPI_PARSE_OBJECT *
863 TrLinkPeerOp (
864 ACPI_PARSE_OBJECT *Op1,
865 ACPI_PARSE_OBJECT *Op2);
866
867 ACPI_PARSE_OBJECT *
868 TrLinkChildOp (
869 ACPI_PARSE_OBJECT *Op1,
870 ACPI_PARSE_OBJECT *Op2);
871
872 ACPI_PARSE_OBJECT *
873 TrSetOpFlags (
874 ACPI_PARSE_OBJECT *Op,
875 UINT32 Flags);
876
877 ACPI_PARSE_OBJECT *
878 TrSetOpAmlLength (
879 ACPI_PARSE_OBJECT *Op,
880 UINT32 Length);
881
882 ACPI_PARSE_OBJECT *
883 TrLinkPeerOps (
884 UINT32 NumPeers,
885 ...);
886
887 ACPI_STATUS
888 TrWalkParseTree (
889 ACPI_PARSE_OBJECT *Op,
890 UINT32 Visitation,
891 ASL_WALK_CALLBACK DescendingCallback,
892 ASL_WALK_CALLBACK AscendingCallback,
893 void *Context);
894
895
896 /*
897 * aslfiles - File I/O support
898 */
899 void
900 FlAddIncludeDirectory (
901 char *Dir);
902
903 char *
904 FlMergePathnames (
905 char *PrefixDir,
906 char *FilePathname);
907
908 void
909 FlOpenIncludeFile (
910 ACPI_PARSE_OBJECT *Op);
911
912 void
913 FlFileError (
914 UINT32 FileId,
915 UINT8 ErrorId);
916
917 UINT32
918 FlGetFileSize (
919 UINT32 FileId);
920
921 ACPI_STATUS
922 FlReadFile (
923 UINT32 FileId,
924 void *Buffer,
925 UINT32 Length);
926
927 void
928 FlWriteFile (
929 UINT32 FileId,
930 void *Buffer,
931 UINT32 Length);
932
933 void
934 FlSeekFile (
935 UINT32 FileId,
936 long Offset);
937
938 void
939 FlSeekFileSet (
940 UINT32 FileId,
941 long Offset);
942
943 void
944 FlCloseFile (
945 UINT32 FileId);
946
947 ACPI_PRINTF_LIKE (2)
948 void
949 FlPrintFile (
950 UINT32 FileId,
951 char *Format,
952 ...);
953
954 void
955 FlDeleteFile (
956 UINT32 FileId);
957
958 void
959 FlSetLineNumber (
960 UINT32 LineNumber);
961
962 void
963 FlSetFilename (
964 char *Filename);
965
966 ACPI_STATUS
967 FlOpenInputFile (
968 char *InputFilename);
969
970 ACPI_STATUS
971 FlOpenAmlOutputFile (
972 char *InputFilename);
973
974 ACPI_STATUS
975 FlOpenMiscOutputFiles (
976 char *InputFilename);
977
978 ACPI_STATUS
979 FlInitOneFile (
980 char *InputFilename);
981
982 ASL_FILE_SWITCH_STATUS
983 FlSwitchFileSet (
984 char *InputFilename);
985
986 FILE *
987 FlGetFileHandle (
988 UINT32 OutFileId,
989 UINT32 InFileId,
990 char *Filename);
991
992 ASL_GLOBAL_FILE_NODE *
993 FlGetFileNode (
994 UINT32 FileId,
995 char *Filename);
996
997 ASL_GLOBAL_FILE_NODE *
998 FlGetCurrentFileNode (
999 void);
1000
1001
1002 /*
1003 * aslhwmap - hardware map summary
1004 */
1005 void
1006 MpEmitMappingInfo (
1007 void);
1008
1009
1010 /*
1011 * asload - load namespace in prep for cross reference
1012 */
1013 ACPI_STATUS
1014 LdLoadNamespace (
1015 ACPI_PARSE_OBJECT *RootOp);
1016
1017 /*
1018 * asllookup - namespace lookup functions
1019 */
1020 void
1021 LkFindUnreferencedObjects (
1022 void);
1023
1024
1025 /*
1026 * aslhelp - help screens
1027 */
1028 void
1029 Usage (
1030 void);
1031
1032 void
1033 AslFilenameHelp (
1034 void);
1035
1036 void
1037 AslDisassemblyHelp (
1038 void);
1039
1040
1041 /*
1042 * aslnamesp - namespace output file generation
1043 */
1044 ACPI_STATUS
1045 NsDisplayNamespace (
1046 void);
1047
1048 void
1049 NsSetupNamespaceListing (
1050 void *Handle);
1051
1052
1053 /*
1054 * asloptions - command line processing
1055 */
1056 int
1057 AslCommandLine (
1058 int argc,
1059 char **argv);
1060
1061
1062 /*
1063 * aslxref - namespace cross reference
1064 */
1065 ACPI_STATUS
1066 XfCrossReferenceNamespace (
1067 void);
1068
1069
1070 /*
1071 * aslxrefout
1072 */
1073 void
1074 OtPrintHeaders (
1075 char *Message);
1076
1077 void
1078 OtCreateXrefFile (
1079 void);
1080
1081 void
1082 OtXrefWalkPart1 (
1083 ACPI_PARSE_OBJECT *Op,
1084 UINT32 Level,
1085 ASL_METHOD_INFO *MethodInfo);
1086
1087
1088 /*
1089 * aslutils - common compiler utilities
1090 */
1091 ACPI_PRINTF_LIKE(2)
1092 void
1093 DbgPrint (
1094 UINT32 Type,
1095 char *Format,
1096 ...);
1097
1098 /* Type values for above */
1099
1100 #define ASL_DEBUG_OUTPUT 0
1101 #define ASL_PARSE_OUTPUT 1
1102 #define ASL_TREE_OUTPUT 2
1103
1104 UINT8
1105 UtIsBigEndianMachine (
1106 void);
1107
1108 BOOLEAN
1109 UtQueryForOverwrite (
1110 char *Pathname);
1111
1112 void
1113 UtDumpStringOp (
1114 ACPI_PARSE_OBJECT *Op,
1115 UINT32 Level);
1116
1117 void
1118 UtDumpIntegerOp (
1119 ACPI_PARSE_OBJECT *Op,
1120 UINT32 Level,
1121 UINT32 IntegerLength);
1122
1123 void
1124 UtDumpBasicOp (
1125 ACPI_PARSE_OBJECT *Op,
1126 UINT32 Level);
1127
1128 void *
1129 UtGetParentMethod (
1130 ACPI_NAMESPACE_NODE *Node);
1131
1132 BOOLEAN
1133 UtNodeIsDescendantOf (
1134 ACPI_NAMESPACE_NODE *Node1,
1135 ACPI_NAMESPACE_NODE *Node2);
1136
1137 void
1138 UtDisplaySupportedTables (
1139 void);
1140
1141 void
1142 UtDisplayConstantOpcodes (
1143 void);
1144
1145 UINT8
1146 UtBeginEvent (
1147 char *Name);
1148
1149 void
1150 UtEndEvent (
1151 UINT8 Event);
1152
1153 void
1154
1155 UtDisplaySummary (
1156 UINT32 FileId);
1157
1158 void
1159 UtDisplayOneSummary (
1160 UINT32 FileId,
1161 BOOLEAN DisplayErrorSummary);
1162
1163 void
1164 UtConvertByteToHex (
1165 UINT8 RawByte,
1166 UINT8 *Buffer);
1167
1168 void
1169 UtConvertByteToAsmHex (
1170 UINT8 RawByte,
1171 UINT8 *Buffer);
1172
1173 char *
1174 UtGetOpName (
1175 UINT32 ParseOpcode);
1176
1177 void
1178 UtSetParseOpName (
1179 ACPI_PARSE_OBJECT *Op);
1180
1181 ACPI_STATUS
1182 UtInternalizeName (
1183 char *ExternalName,
1184 char **ConvertedName);
1185
1186 BOOLEAN
1187 UtNameContainsAllPrefix (
1188 ACPI_PARSE_OBJECT *Op);
1189
1190 void
1191 UtAttachNamepathToOwner (
1192 ACPI_PARSE_OBJECT *Op,
1193 ACPI_PARSE_OBJECT *NameNode);
1194
1195 ACPI_PARSE_OBJECT *
1196 UtCheckIntegerRange (
1197 ACPI_PARSE_OBJECT *Op,
1198 UINT32 LowValue,
1199 UINT32 HighValue);
1200
1201 UINT64
1202 UtDoConstant (
1203 char *String);
1204
1205 char *
1206 AcpiUtStrdup (
1207 char *String);
1208
1209 char *
1210 AcpiUtStrcat (
1211 char *String1,
1212 char *String2);
1213
1214
1215 /*
1216 * asluuid - UUID support
1217 */
1218 ACPI_STATUS
1219 AuValidateUuid (
1220 char *InString);
1221
1222 ACPI_STATUS
1223 AuConvertUuidToString (
1224 char *UuIdBuffer,
1225 char *OutString);
1226
1227
1228 /*
1229 * aslresource - Resource template generation utilities
1230 */
1231 void
1232 RsSmallAddressCheck (
1233 UINT8 Type,
1234 UINT32 Minimum,
1235 UINT32 Maximum,
1236 UINT32 Length,
1237 UINT32 Alignment,
1238 ACPI_PARSE_OBJECT *MinOp,
1239 ACPI_PARSE_OBJECT *MaxOp,
1240 ACPI_PARSE_OBJECT *LengthOp,
1241 ACPI_PARSE_OBJECT *AlignOp,
1242 ACPI_PARSE_OBJECT *Op);
1243
1244 void
1245 RsLargeAddressCheck (
1246 UINT64 Minimum,
1247 UINT64 Maximum,
1248 UINT64 Length,
1249 UINT64 Granularity,
1250 UINT8 Flags,
1251 ACPI_PARSE_OBJECT *MinOp,
1252 ACPI_PARSE_OBJECT *MaxOp,
1253 ACPI_PARSE_OBJECT *LengthOp,
1254 ACPI_PARSE_OBJECT *GranOp,
1255 ACPI_PARSE_OBJECT *Op);
1256
1257 UINT16
1258 RsGetStringDataLength (
1259 ACPI_PARSE_OBJECT *InitializerOp);
1260
1261 ASL_RESOURCE_NODE *
1262 RsAllocateResourceNode (
1263 UINT32 Size);
1264
1265 void
1266 RsCreateResourceField (
1267 ACPI_PARSE_OBJECT *Op,
1268 char *Name,
1269 UINT32 ByteOffset,
1270 UINT32 BitOffset,
1271 UINT32 BitLength);
1272
1273 void
1274 RsSetFlagBits (
1275 UINT8 *Flags,
1276 ACPI_PARSE_OBJECT *Op,
1277 UINT8 Position,
1278 UINT8 DefaultBit);
1279
1280 void
1281 RsSetFlagBits16 (
1282 UINT16 *Flags,
1283 ACPI_PARSE_OBJECT *Op,
1284 UINT8 Position,
1285 UINT8 DefaultBit);
1286
1287 ACPI_PARSE_OBJECT *
1288 RsCompleteNodeAndGetNext (
1289 ACPI_PARSE_OBJECT *Op);
1290
1291 void
1292 RsCheckListForDuplicates (
1293 ACPI_PARSE_OBJECT *Op);
1294
1295 ASL_RESOURCE_NODE *
1296 RsDoOneResourceDescriptor (
1297 ASL_RESOURCE_INFO *Info,
1298 UINT8 *State);
1299
1300 /* Values for State above */
1301
1302 #define ACPI_RSTATE_NORMAL 0
1303 #define ACPI_RSTATE_START_DEPENDENT 1
1304 #define ACPI_RSTATE_DEPENDENT_LIST 2
1305
1306 UINT32
1307 RsLinkDescriptorChain (
1308 ASL_RESOURCE_NODE **PreviousRnode,
1309 ASL_RESOURCE_NODE *Rnode);
1310
1311 void
1312 RsDoResourceTemplate (
1313 ACPI_PARSE_OBJECT *Op);
1314
1315
1316 /*
1317 * aslrestype1 - Miscellaneous Small descriptors
1318 */
1319 ASL_RESOURCE_NODE *
1320 RsDoEndTagDescriptor (
1321 ASL_RESOURCE_INFO *Info);
1322
1323 ASL_RESOURCE_NODE *
1324 RsDoEndDependentDescriptor (
1325 ASL_RESOURCE_INFO *Info);
1326
1327 ASL_RESOURCE_NODE *
1328 RsDoMemory24Descriptor (
1329 ASL_RESOURCE_INFO *Info);
1330
1331 ASL_RESOURCE_NODE *
1332 RsDoMemory32Descriptor (
1333 ASL_RESOURCE_INFO *Info);
1334
1335 ASL_RESOURCE_NODE *
1336 RsDoMemory32FixedDescriptor (
1337 ASL_RESOURCE_INFO *Info);
1338
1339 ASL_RESOURCE_NODE *
1340 RsDoStartDependentDescriptor (
1341 ASL_RESOURCE_INFO *Info);
1342
1343 ASL_RESOURCE_NODE *
1344 RsDoStartDependentNoPriDescriptor (
1345 ASL_RESOURCE_INFO *Info);
1346
1347 ASL_RESOURCE_NODE *
1348 RsDoVendorSmallDescriptor (
1349 ASL_RESOURCE_INFO *Info);
1350
1351
1352 /*
1353 * aslrestype1i - I/O-related Small descriptors
1354 */
1355 ASL_RESOURCE_NODE *
1356 RsDoDmaDescriptor (
1357 ASL_RESOURCE_INFO *Info);
1358
1359 ASL_RESOURCE_NODE *
1360 RsDoFixedDmaDescriptor (
1361 ASL_RESOURCE_INFO *Info);
1362
1363 ASL_RESOURCE_NODE *
1364 RsDoFixedIoDescriptor (
1365 ASL_RESOURCE_INFO *Info);
1366
1367 ASL_RESOURCE_NODE *
1368 RsDoIoDescriptor (
1369 ASL_RESOURCE_INFO *Info);
1370
1371 ASL_RESOURCE_NODE *
1372 RsDoIrqDescriptor (
1373 ASL_RESOURCE_INFO *Info);
1374
1375 ASL_RESOURCE_NODE *
1376 RsDoIrqNoFlagsDescriptor (
1377 ASL_RESOURCE_INFO *Info);
1378
1379
1380 /*
1381 * aslrestype2 - Large resource descriptors
1382 */
1383 ASL_RESOURCE_NODE *
1384 RsDoInterruptDescriptor (
1385 ASL_RESOURCE_INFO *Info);
1386
1387 ASL_RESOURCE_NODE *
1388 RsDoVendorLargeDescriptor (
1389 ASL_RESOURCE_INFO *Info);
1390
1391 ASL_RESOURCE_NODE *
1392 RsDoGeneralRegisterDescriptor (
1393 ASL_RESOURCE_INFO *Info);
1394
1395 ASL_RESOURCE_NODE *
1396 RsDoGpioIntDescriptor (
1397 ASL_RESOURCE_INFO *Info);
1398
1399 ASL_RESOURCE_NODE *
1400 RsDoGpioIoDescriptor (
1401 ASL_RESOURCE_INFO *Info);
1402
1403 ASL_RESOURCE_NODE *
1404 RsDoI2cSerialBusDescriptor (
1405 ASL_RESOURCE_INFO *Info);
1406
1407 ASL_RESOURCE_NODE *
1408 RsDoSpiSerialBusDescriptor (
1409 ASL_RESOURCE_INFO *Info);
1410
1411 ASL_RESOURCE_NODE *
1412 RsDoUartSerialBusDescriptor (
1413 ASL_RESOURCE_INFO *Info);
1414
1415 ASL_RESOURCE_NODE *
1416 RsDoPinFunctionDescriptor (
1417 ASL_RESOURCE_INFO *Info);
1418
1419 ASL_RESOURCE_NODE *
1420 RsDoPinConfigDescriptor (
1421 ASL_RESOURCE_INFO *Info);
1422
1423 ASL_RESOURCE_NODE *
1424 RsDoPinGroupDescriptor (
1425 ASL_RESOURCE_INFO *Info);
1426
1427 ASL_RESOURCE_NODE *
1428 RsDoPinGroupFunctionDescriptor (
1429 ASL_RESOURCE_INFO *Info);
1430
1431 ASL_RESOURCE_NODE *
1432 RsDoPinGroupConfigDescriptor (
1433 ASL_RESOURCE_INFO *Info);
1434
1435
1436 /*
1437 * aslrestype2d - DWord address descriptors
1438 */
1439 ASL_RESOURCE_NODE *
1440 RsDoDwordIoDescriptor (
1441 ASL_RESOURCE_INFO *Info);
1442
1443 ASL_RESOURCE_NODE *
1444 RsDoDwordMemoryDescriptor (
1445 ASL_RESOURCE_INFO *Info);
1446
1447 ASL_RESOURCE_NODE *
1448 RsDoDwordSpaceDescriptor (
1449 ASL_RESOURCE_INFO *Info);
1450
1451
1452 /*
1453 * aslrestype2e - Extended address descriptors
1454 */
1455 ASL_RESOURCE_NODE *
1456 RsDoExtendedIoDescriptor (
1457 ASL_RESOURCE_INFO *Info);
1458
1459 ASL_RESOURCE_NODE *
1460 RsDoExtendedMemoryDescriptor (
1461 ASL_RESOURCE_INFO *Info);
1462
1463 ASL_RESOURCE_NODE *
1464 RsDoExtendedSpaceDescriptor (
1465 ASL_RESOURCE_INFO *Info);
1466
1467
1468 /*
1469 * aslrestype2q - QWord address descriptors
1470 */
1471 ASL_RESOURCE_NODE *
1472 RsDoQwordIoDescriptor (
1473 ASL_RESOURCE_INFO *Info);
1474
1475 ASL_RESOURCE_NODE *
1476 RsDoQwordMemoryDescriptor (
1477 ASL_RESOURCE_INFO *Info);
1478
1479 ASL_RESOURCE_NODE *
1480 RsDoQwordSpaceDescriptor (
1481 ASL_RESOURCE_INFO *Info);
1482
1483
1484 /*
1485 * aslrestype2w - Word address descriptors
1486 */
1487 ASL_RESOURCE_NODE *
1488 RsDoWordIoDescriptor (
1489 ASL_RESOURCE_INFO *Info);
1490
1491 ASL_RESOURCE_NODE *
1492 RsDoWordSpaceDescriptor (
1493 ASL_RESOURCE_INFO *Info);
1494
1495 ASL_RESOURCE_NODE *
1496 RsDoWordBusNumberDescriptor (
1497 ASL_RESOURCE_INFO *Info);
1498
1499
1500 /*
1501 * Entry to data table compiler subsystem
1502 */
1503 ACPI_STATUS
1504 DtDoCompile(
1505 void);
1506
1507 ACPI_STATUS
1508 DtCreateTemplates (
1509 char **argv);
1510
1511
1512 /*
1513 * ASL/ASL+ converter debug
1514 */
1515 ACPI_PRINTF_LIKE (1)
1516 void
1517 CvDbgPrint (
1518 char *Fmt,
1519 ...);
1520
1521
1522 #endif /* __ASLCOMPILER_H */
1523