aslcompiler.h revision 1.4 1 /******************************************************************************
2 *
3 * Module Name: aslcompiler.h - common include file for iASL
4 *
5 *****************************************************************************/
6
7 /*
8 * Copyright (C) 2000 - 2016, Intel Corp.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification.
17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 * substantially similar to the "NO WARRANTY" disclaimer below
19 * ("Disclaimer") and any redistribution must be conditioned upon
20 * including a substantially similar Disclaimer requirement for further
21 * binary redistribution.
22 * 3. Neither the names of the above-listed copyright holders nor the names
23 * of any contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * Alternatively, this software may be distributed under the terms of the
27 * GNU General Public License ("GPL") version 2 as published by the Free
28 * Software Foundation.
29 *
30 * NO WARRANTY
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
42 */
43
44 #ifndef __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 <stdarg.h>
66 #include <string.h>
67 #include <errno.h>
68 #include <ctype.h>
69
70 /* Compiler headers */
71
72 #include "asldefine.h"
73 #include "asltypes.h"
74 #include "aslmessages.h"
75 #include "aslglobal.h"
76 #include "preprocess.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 int
150 CmDoCompile (
151 void);
152
153 void
154 CmDoOutputFiles (
155 void);
156
157 void
158 CmCleanupAndExit (
159 void);
160
161 void
162 CmDeleteCaches (
163 void);
164
165
166 /*
167 * aslascii - ascii support
168 */
169 ACPI_STATUS
170 FlIsFileAsciiSource (
171 char *Filename,
172 BOOLEAN DisplayErrors);
173
174
175 /*
176 * aslwalks - semantic analysis and parse tree walks
177 */
178 ACPI_STATUS
179 AnOtherSemanticAnalysisWalkBegin (
180 ACPI_PARSE_OBJECT *Op,
181 UINT32 Level,
182 void *Context);
183
184 ACPI_STATUS
185 AnOtherSemanticAnalysisWalkEnd (
186 ACPI_PARSE_OBJECT *Op,
187 UINT32 Level,
188 void *Context);
189
190 ACPI_STATUS
191 AnOperandTypecheckWalkEnd (
192 ACPI_PARSE_OBJECT *Op,
193 UINT32 Level,
194 void *Context);
195
196 ACPI_STATUS
197 AnMethodTypingWalkEnd (
198 ACPI_PARSE_OBJECT *Op,
199 UINT32 Level,
200 void *Context);
201
202
203 /*
204 * aslmethod - Control method analysis walk
205 */
206 ACPI_STATUS
207 MtMethodAnalysisWalkBegin (
208 ACPI_PARSE_OBJECT *Op,
209 UINT32 Level,
210 void *Context);
211
212 ACPI_STATUS
213 MtMethodAnalysisWalkEnd (
214 ACPI_PARSE_OBJECT *Op,
215 UINT32 Level,
216 void *Context);
217
218
219 /*
220 * aslbtypes - bitfield data types
221 */
222 UINT32
223 AnMapObjTypeToBtype (
224 ACPI_PARSE_OBJECT *Op);
225
226 UINT32
227 AnMapArgTypeToBtype (
228 UINT32 ArgType);
229
230 UINT32
231 AnGetBtype (
232 ACPI_PARSE_OBJECT *Op);
233
234 void
235 AnFormatBtype (
236 char *Buffer,
237 UINT32 Btype);
238
239
240 /*
241 * aslanalyze - Support functions for parse tree walks
242 */
243 void
244 AnCheckId (
245 ACPI_PARSE_OBJECT *Op,
246 ACPI_NAME Type);
247
248 /* Values for Type argument above */
249
250 #define ASL_TYPE_HID 0
251 #define ASL_TYPE_CID 1
252
253 BOOLEAN
254 AnIsInternalMethod (
255 ACPI_PARSE_OBJECT *Op);
256
257 UINT32
258 AnGetInternalMethodReturnType (
259 ACPI_PARSE_OBJECT *Op);
260
261 BOOLEAN
262 AnLastStatementIsReturn (
263 ACPI_PARSE_OBJECT *Op);
264
265 void
266 AnCheckMethodReturnValue (
267 ACPI_PARSE_OBJECT *Op,
268 const ACPI_OPCODE_INFO *OpInfo,
269 ACPI_PARSE_OBJECT *ArgOp,
270 UINT32 RequiredBtypes,
271 UINT32 ThisNodeBtype);
272
273 BOOLEAN
274 AnIsResultUsed (
275 ACPI_PARSE_OBJECT *Op);
276
277 void
278 ApCheckForGpeNameConflict (
279 ACPI_PARSE_OBJECT *Op);
280
281 void
282 ApCheckRegMethod (
283 ACPI_PARSE_OBJECT *Op);
284
285 BOOLEAN
286 ApFindNameInScope (
287 char *Name,
288 ACPI_PARSE_OBJECT *Op);
289
290
291 /*
292 * aslerror - error handling/reporting
293 */
294 void
295 AslAbort (
296 void);
297
298 void
299 AslError (
300 UINT8 Level,
301 UINT16 MessageId,
302 ACPI_PARSE_OBJECT *Op,
303 char *ExtraMessage);
304
305 ACPI_STATUS
306 AslDisableException (
307 char *MessageIdString);
308
309 BOOLEAN
310 AslIsExceptionDisabled (
311 UINT8 Level,
312 UINT16 MessageId);
313
314 void
315 AslCoreSubsystemError (
316 ACPI_PARSE_OBJECT *Op,
317 ACPI_STATUS Status,
318 char *ExtraMessage,
319 BOOLEAN Abort);
320
321 int
322 AslCompilererror(
323 const char *s);
324
325 void
326 AslCommonError (
327 UINT8 Level,
328 UINT16 MessageId,
329 UINT32 CurrentLineNumber,
330 UINT32 LogicalLineNumber,
331 UINT32 LogicalByteOffset,
332 UINT32 Column,
333 char *Filename,
334 char *ExtraMessage);
335
336 void
337 AslCommonError2 (
338 UINT8 Level,
339 UINT16 MessageId,
340 UINT32 LineNumber,
341 UINT32 Column,
342 char *SourceLine,
343 char *Filename,
344 char *ExtraMessage);
345
346 void
347 AePrintException (
348 UINT32 FileId,
349 ASL_ERROR_MSG *Enode,
350 char *Header);
351
352 void
353 AePrintErrorLog (
354 UINT32 FileId);
355
356 void
357 AeClearErrorLog (
358 void);
359
360
361 /*
362 * asllisting - generate all "listing" type files
363 */
364 void
365 LsDoListings (
366 void);
367
368 void
369 LsWriteNodeToAsmListing (
370 ACPI_PARSE_OBJECT *Op);
371
372 void
373 LsWriteNode (
374 ACPI_PARSE_OBJECT *Op,
375 UINT32 FileId);
376
377 void
378 LsDumpParseTree (
379 void);
380
381
382 /*
383 * asllistsup - Listing file support utilities
384 */
385 void
386 LsDumpAscii (
387 UINT32 FileId,
388 UINT32 Count,
389 UINT8 *Buffer);
390
391 void
392 LsDumpAsciiInComment (
393 UINT32 FileId,
394 UINT32 Count,
395 UINT8 *Buffer);
396
397 void
398 LsCheckException (
399 UINT32 LineNumber,
400 UINT32 FileId);
401
402 void
403 LsFlushListingBuffer (
404 UINT32 FileId);
405
406 void
407 LsWriteListingHexBytes (
408 UINT8 *Buffer,
409 UINT32 Length,
410 UINT32 FileId);
411
412 void
413 LsWriteSourceLines (
414 UINT32 ToLineNumber,
415 UINT32 ToLogicalLineNumber,
416 UINT32 FileId);
417
418 UINT32
419 LsWriteOneSourceLine (
420 UINT32 FileId);
421
422 void
423 LsPushNode (
424 char *Filename);
425
426 ASL_LISTING_NODE *
427 LsPopNode (
428 void);
429
430
431 /*
432 * aslhex - generate all "hex" output files (C, ASM, ASL)
433 */
434 void
435 HxDoHexOutput (
436 void);
437
438
439 /*
440 * aslfold - constant folding
441 */
442 ACPI_STATUS
443 OpcAmlConstantWalk (
444 ACPI_PARSE_OBJECT *Op,
445 UINT32 Level,
446 void *Context);
447
448
449 /*
450 * aslmessages - exception strings
451 */
452 const char *
453 AeDecodeMessageId (
454 UINT16 MessageId);
455
456 const char *
457 AeDecodeExceptionLevel (
458 UINT8 Level);
459
460 UINT16
461 AeBuildFullExceptionCode (
462 UINT8 Level,
463 UINT16 MessageId);
464
465 /*
466 * asloffset - generate C offset file for BIOS support
467 */
468 ACPI_STATUS
469 LsAmlOffsetWalk (
470 ACPI_PARSE_OBJECT *Op,
471 UINT32 Level,
472 void *Context);
473
474 void
475 LsDoOffsetTableHeader (
476 UINT32 FileId);
477
478 void
479 LsDoOffsetTableFooter (
480 UINT32 FileId);
481
482
483 /*
484 * aslopcodes - generate AML opcodes
485 */
486 ACPI_STATUS
487 OpcAmlOpcodeWalk (
488 ACPI_PARSE_OBJECT *Op,
489 UINT32 Level,
490 void *Context);
491
492 ACPI_STATUS
493 OpcAmlOpcodeUpdateWalk (
494 ACPI_PARSE_OBJECT *Op,
495 UINT32 Level,
496 void *Context);
497
498 void
499 OpcGenerateAmlOpcode (
500 ACPI_PARSE_OBJECT *Op);
501
502 UINT32
503 OpcSetOptimalIntegerSize (
504 ACPI_PARSE_OBJECT *Op);
505
506 void
507 OpcGetIntegerWidth (
508 ACPI_PARSE_OBJECT *Op);
509
510
511 /*
512 * asloperands - generate AML operands for the AML opcodes
513 */
514 ACPI_PARSE_OBJECT *
515 UtGetArg (
516 ACPI_PARSE_OBJECT *Op,
517 UINT32 Argn);
518
519 void
520 OpnGenerateAmlOperands (
521 ACPI_PARSE_OBJECT *Op);
522
523 void
524 OpnDoPackage (
525 ACPI_PARSE_OBJECT *Op);
526
527
528 /*
529 * aslopt - optmization
530 */
531 void
532 OptOptimizeNamePath (
533 ACPI_PARSE_OBJECT *Op,
534 UINT32 Flags,
535 ACPI_WALK_STATE *WalkState,
536 char *AmlNameString,
537 ACPI_NAMESPACE_NODE *TargetNode);
538
539
540 /*
541 * aslprintf - Printf/Fprintf macros
542 */
543 void
544 OpcDoPrintf (
545 ACPI_PARSE_OBJECT *Op);
546
547 void
548 OpcDoFprintf (
549 ACPI_PARSE_OBJECT *Op);
550
551
552 /*
553 * aslprune - parse tree pruner
554 */
555 void
556 AslPruneParseTree (
557 UINT32 PruneDepth,
558 UINT32 Type);
559
560
561 /*
562 * aslcodegen - code generation
563 */
564 void
565 CgGenerateAmlOutput (
566 void);
567
568
569 /*
570 * aslfile
571 */
572 void
573 FlOpenFile (
574 UINT32 FileId,
575 char *Filename,
576 char *Mode);
577
578
579 /*
580 * asllength - calculate/adjust AML package lengths
581 */
582 ACPI_STATUS
583 LnPackageLengthWalk (
584 ACPI_PARSE_OBJECT *Op,
585 UINT32 Level,
586 void *Context);
587
588 ACPI_STATUS
589 LnInitLengthsWalk (
590 ACPI_PARSE_OBJECT *Op,
591 UINT32 Level,
592 void *Context);
593
594 void
595 CgGenerateAmlLengths (
596 ACPI_PARSE_OBJECT *Op);
597
598
599 /*
600 * aslmap - opcode mappings and reserved method names
601 */
602 ACPI_OBJECT_TYPE
603 AslMapNamedOpcodeToDataType (
604 UINT16 Opcode);
605
606
607 /*
608 * aslpredef - ACPI predefined names support
609 */
610 BOOLEAN
611 ApCheckForPredefinedMethod (
612 ACPI_PARSE_OBJECT *Op,
613 ASL_METHOD_INFO *MethodInfo);
614
615 void
616 ApCheckPredefinedReturnValue (
617 ACPI_PARSE_OBJECT *Op,
618 ASL_METHOD_INFO *MethodInfo);
619
620 UINT32
621 ApCheckForPredefinedName (
622 ACPI_PARSE_OBJECT *Op,
623 char *Name);
624
625 void
626 ApCheckForPredefinedObject (
627 ACPI_PARSE_OBJECT *Op,
628 char *Name);
629
630 ACPI_STATUS
631 ApCheckObjectType (
632 const char *PredefinedName,
633 ACPI_PARSE_OBJECT *Op,
634 UINT32 ExpectedBtypes,
635 UINT32 PackageIndex);
636
637 void
638 ApDisplayReservedNames (
639 void);
640
641
642 /*
643 * aslprepkg - ACPI predefined names support for packages
644 */
645 void
646 ApCheckPackage (
647 ACPI_PARSE_OBJECT *ParentOp,
648 const ACPI_PREDEFINED_INFO *Predefined);
649
650
651 /*
652 * asltransform - parse tree transformations
653 */
654 ACPI_STATUS
655 TrAmlTransformWalk (
656 ACPI_PARSE_OBJECT *Op,
657 UINT32 Level,
658 void *Context);
659
660
661 /*
662 * asltree - parse tree support
663 */
664 ACPI_STATUS
665 TrWalkParseTree (
666 ACPI_PARSE_OBJECT *Op,
667 UINT32 Visitation,
668 ASL_WALK_CALLBACK DescendingCallback,
669 ASL_WALK_CALLBACK AscendingCallback,
670 void *Context);
671
672 /* Values for "Visitation" parameter above */
673
674 #define ASL_WALK_VISIT_DOWNWARD 0x01
675 #define ASL_WALK_VISIT_UPWARD 0x02
676 #define ASL_WALK_VISIT_TWICE (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD)
677
678
679 ACPI_PARSE_OBJECT *
680 TrAllocateNode (
681 UINT32 ParseOpcode);
682
683 void
684 TrPrintNodeCompileFlags (
685 UINT32 Flags);
686
687 void
688 TrReleaseNode (
689 ACPI_PARSE_OBJECT *Op);
690
691 ACPI_PARSE_OBJECT *
692 TrUpdateNode (
693 UINT32 ParseOpcode,
694 ACPI_PARSE_OBJECT *Op);
695
696 ACPI_PARSE_OBJECT *
697 TrCreateNode (
698 UINT32 ParseOpcode,
699 UINT32 NumChildren,
700 ...);
701
702 ACPI_PARSE_OBJECT *
703 TrCreateLeafNode (
704 UINT32 ParseOpcode);
705
706 ACPI_PARSE_OBJECT *
707 TrCreateNullTarget (
708 void);
709
710 ACPI_PARSE_OBJECT *
711 TrCreateAssignmentNode (
712 ACPI_PARSE_OBJECT *Target,
713 ACPI_PARSE_OBJECT *Source);
714
715 ACPI_PARSE_OBJECT *
716 TrCreateTargetOperand (
717 ACPI_PARSE_OBJECT *OriginalOp,
718 ACPI_PARSE_OBJECT *ParentOp);
719
720 ACPI_PARSE_OBJECT *
721 TrCreateValuedLeafNode (
722 UINT32 ParseOpcode,
723 UINT64 Value);
724
725 ACPI_PARSE_OBJECT *
726 TrCreateConstantLeafNode (
727 UINT32 ParseOpcode);
728
729 ACPI_PARSE_OBJECT *
730 TrLinkChildren (
731 ACPI_PARSE_OBJECT *Op,
732 UINT32 NumChildren,
733 ...);
734
735 void
736 TrSetEndLineNumber (
737 ACPI_PARSE_OBJECT *Op);
738
739 void
740 TrSetCurrentFilename (
741 ACPI_PARSE_OBJECT *Op);
742
743 void
744 TrWalkTree (
745 void);
746
747 ACPI_PARSE_OBJECT *
748 TrLinkPeerNode (
749 ACPI_PARSE_OBJECT *Op1,
750 ACPI_PARSE_OBJECT *Op2);
751
752 ACPI_PARSE_OBJECT *
753 TrLinkChildNode (
754 ACPI_PARSE_OBJECT *Op1,
755 ACPI_PARSE_OBJECT *Op2);
756
757 ACPI_PARSE_OBJECT *
758 TrSetNodeFlags (
759 ACPI_PARSE_OBJECT *Op,
760 UINT32 Flags);
761
762 ACPI_PARSE_OBJECT *
763 TrSetNodeAmlLength (
764 ACPI_PARSE_OBJECT *Op,
765 UINT32 Length);
766
767 ACPI_PARSE_OBJECT *
768 TrLinkPeerNodes (
769 UINT32 NumPeers,
770 ...);
771
772
773 /*
774 * aslfiles - File I/O support
775 */
776 void
777 FlAddIncludeDirectory (
778 char *Dir);
779
780 char *
781 FlMergePathnames (
782 char *PrefixDir,
783 char *FilePathname);
784
785 void
786 FlOpenIncludeFile (
787 ACPI_PARSE_OBJECT *Op);
788
789 void
790 FlFileError (
791 UINT32 FileId,
792 UINT8 ErrorId);
793
794 UINT32
795 FlGetFileSize (
796 UINT32 FileId);
797
798 ACPI_STATUS
799 FlReadFile (
800 UINT32 FileId,
801 void *Buffer,
802 UINT32 Length);
803
804 void
805 FlWriteFile (
806 UINT32 FileId,
807 void *Buffer,
808 UINT32 Length);
809
810 void
811 FlSeekFile (
812 UINT32 FileId,
813 long Offset);
814
815 void
816 FlCloseFile (
817 UINT32 FileId);
818
819 void
820 FlPrintFile (
821 UINT32 FileId,
822 char *Format,
823 ...);
824
825 void
826 FlDeleteFile (
827 UINT32 FileId);
828
829 void
830 FlSetLineNumber (
831 UINT32 LineNumber);
832
833 void
834 FlSetFilename (
835 char *Filename);
836
837 ACPI_STATUS
838 FlOpenInputFile (
839 char *InputFilename);
840
841 ACPI_STATUS
842 FlOpenAmlOutputFile (
843 char *InputFilename);
844
845 ACPI_STATUS
846 FlOpenMiscOutputFiles (
847 char *InputFilename);
848
849 /*
850 * aslhwmap - hardware map summary
851 */
852 void
853 MpEmitMappingInfo (
854 void);
855
856
857 /*
858 * asload - load namespace in prep for cross reference
859 */
860 ACPI_STATUS
861 LdLoadNamespace (
862 ACPI_PARSE_OBJECT *RootOp);
863
864
865 /*
866 * asllookup - namespace lookup functions
867 */
868 void
869 LkFindUnreferencedObjects (
870 void);
871
872 /*
873 * aslmain - startup
874 */
875 void
876 Usage (
877 void);
878
879 void
880 AslFilenameHelp (
881 void);
882
883
884 /*
885 * aslnamesp - namespace output file generation
886 */
887 ACPI_STATUS
888 NsDisplayNamespace (
889 void);
890
891 void
892 NsSetupNamespaceListing (
893 void *Handle);
894
895 /*
896 * asloptions - command line processing
897 */
898 int
899 AslCommandLine (
900 int argc,
901 char **argv);
902
903 /*
904 * aslxref - namespace cross reference
905 */
906 ACPI_STATUS
907 XfCrossReferenceNamespace (
908 void);
909
910
911 /*
912 * aslutils - common compiler utilites
913 */
914 void
915 DbgPrint (
916 UINT32 Type,
917 char *Format,
918 ...);
919
920 /* Type values for above */
921
922 #define ASL_DEBUG_OUTPUT 0
923 #define ASL_PARSE_OUTPUT 1
924 #define ASL_TREE_OUTPUT 2
925
926 BOOLEAN
927 UtQueryForOverwrite (
928 char *Pathname);
929
930 void
931 UtDisplaySupportedTables (
932 void);
933
934 void
935 UtDisplayConstantOpcodes (
936 void);
937
938 UINT8
939 UtBeginEvent (
940 char *Name);
941
942 void
943 UtEndEvent (
944 UINT8 Event);
945
946 void *
947 UtLocalCalloc (
948 UINT32 Size);
949
950 void
951 UtLocalFree (
952 void *Allocated,
953 UINT32 Size);
954
955 void
956 UtPrintFormattedName (
957 UINT16 ParseOpcode,
958 UINT32 Level);
959
960 void
961 UtDisplaySummary (
962 UINT32 FileId);
963
964 void
965 UtConvertByteToHex (
966 UINT8 RawByte,
967 UINT8 *Buffer);
968
969 void
970 UtConvertByteToAsmHex (
971 UINT8 RawByte,
972 UINT8 *Buffer);
973
974 char *
975 UtGetOpName (
976 UINT32 ParseOpcode);
977
978 void
979 UtSetParseOpName (
980 ACPI_PARSE_OBJECT *Op);
981
982 char *
983 UtStringCacheCalloc (
984 UINT32 Length);
985
986 void
987 UtExpandLineBuffers (
988 void);
989
990 void
991 UtFreeLineBuffers (
992 void);
993
994 ACPI_STATUS
995 UtInternalizeName (
996 char *ExternalName,
997 char **ConvertedName);
998
999 void
1000 UtAttachNamepathToOwner (
1001 ACPI_PARSE_OBJECT *Op,
1002 ACPI_PARSE_OBJECT *NameNode);
1003
1004 ACPI_PARSE_OBJECT *
1005 UtCheckIntegerRange (
1006 ACPI_PARSE_OBJECT *Op,
1007 UINT32 LowValue,
1008 UINT32 HighValue);
1009
1010 UINT64
1011 UtDoConstant (
1012 char *String);
1013
1014 ACPI_STATUS
1015 stroul64 (
1016 char *String,
1017 UINT32 Base,
1018 UINT64 *RetInteger);
1019
1020
1021 /*
1022 * asluuid - UUID support
1023 */
1024 ACPI_STATUS
1025 AuValidateUuid (
1026 char *InString);
1027
1028 ACPI_STATUS
1029 AuConvertUuidToString (
1030 char *UuIdBuffer,
1031 char *OutString);
1032
1033 /*
1034 * aslresource - Resource template generation utilities
1035 */
1036 void
1037 RsSmallAddressCheck (
1038 UINT8 Type,
1039 UINT32 Minimum,
1040 UINT32 Maximum,
1041 UINT32 Length,
1042 UINT32 Alignment,
1043 ACPI_PARSE_OBJECT *MinOp,
1044 ACPI_PARSE_OBJECT *MaxOp,
1045 ACPI_PARSE_OBJECT *LengthOp,
1046 ACPI_PARSE_OBJECT *AlignOp,
1047 ACPI_PARSE_OBJECT *Op);
1048
1049 void
1050 RsLargeAddressCheck (
1051 UINT64 Minimum,
1052 UINT64 Maximum,
1053 UINT64 Length,
1054 UINT64 Granularity,
1055 UINT8 Flags,
1056 ACPI_PARSE_OBJECT *MinOp,
1057 ACPI_PARSE_OBJECT *MaxOp,
1058 ACPI_PARSE_OBJECT *LengthOp,
1059 ACPI_PARSE_OBJECT *GranOp,
1060 ACPI_PARSE_OBJECT *Op);
1061
1062 UINT16
1063 RsGetStringDataLength (
1064 ACPI_PARSE_OBJECT *InitializerOp);
1065
1066 ASL_RESOURCE_NODE *
1067 RsAllocateResourceNode (
1068 UINT32 Size);
1069
1070 void
1071 RsCreateResourceField (
1072 ACPI_PARSE_OBJECT *Op,
1073 char *Name,
1074 UINT32 ByteOffset,
1075 UINT32 BitOffset,
1076 UINT32 BitLength);
1077
1078 void
1079 RsSetFlagBits (
1080 UINT8 *Flags,
1081 ACPI_PARSE_OBJECT *Op,
1082 UINT8 Position,
1083 UINT8 DefaultBit);
1084
1085 void
1086 RsSetFlagBits16 (
1087 UINT16 *Flags,
1088 ACPI_PARSE_OBJECT *Op,
1089 UINT8 Position,
1090 UINT8 DefaultBit);
1091
1092 ACPI_PARSE_OBJECT *
1093 RsCompleteNodeAndGetNext (
1094 ACPI_PARSE_OBJECT *Op);
1095
1096 void
1097 RsCheckListForDuplicates (
1098 ACPI_PARSE_OBJECT *Op);
1099
1100 ASL_RESOURCE_NODE *
1101 RsDoOneResourceDescriptor (
1102 ASL_RESOURCE_INFO *Info,
1103 UINT8 *State);
1104
1105 /* Values for State above */
1106
1107 #define ACPI_RSTATE_NORMAL 0
1108 #define ACPI_RSTATE_START_DEPENDENT 1
1109 #define ACPI_RSTATE_DEPENDENT_LIST 2
1110
1111 UINT32
1112 RsLinkDescriptorChain (
1113 ASL_RESOURCE_NODE **PreviousRnode,
1114 ASL_RESOURCE_NODE *Rnode);
1115
1116 void
1117 RsDoResourceTemplate (
1118 ACPI_PARSE_OBJECT *Op);
1119
1120
1121 /*
1122 * aslrestype1 - Miscellaneous Small descriptors
1123 */
1124 ASL_RESOURCE_NODE *
1125 RsDoEndTagDescriptor (
1126 ASL_RESOURCE_INFO *Info);
1127
1128 ASL_RESOURCE_NODE *
1129 RsDoEndDependentDescriptor (
1130 ASL_RESOURCE_INFO *Info);
1131
1132 ASL_RESOURCE_NODE *
1133 RsDoMemory24Descriptor (
1134 ASL_RESOURCE_INFO *Info);
1135
1136 ASL_RESOURCE_NODE *
1137 RsDoMemory32Descriptor (
1138 ASL_RESOURCE_INFO *Info);
1139
1140 ASL_RESOURCE_NODE *
1141 RsDoMemory32FixedDescriptor (
1142 ASL_RESOURCE_INFO *Info);
1143
1144 ASL_RESOURCE_NODE *
1145 RsDoStartDependentDescriptor (
1146 ASL_RESOURCE_INFO *Info);
1147
1148 ASL_RESOURCE_NODE *
1149 RsDoStartDependentNoPriDescriptor (
1150 ASL_RESOURCE_INFO *Info);
1151
1152 ASL_RESOURCE_NODE *
1153 RsDoVendorSmallDescriptor (
1154 ASL_RESOURCE_INFO *Info);
1155
1156
1157 /*
1158 * aslrestype1i - I/O-related Small descriptors
1159 */
1160 ASL_RESOURCE_NODE *
1161 RsDoDmaDescriptor (
1162 ASL_RESOURCE_INFO *Info);
1163
1164 ASL_RESOURCE_NODE *
1165 RsDoFixedDmaDescriptor (
1166 ASL_RESOURCE_INFO *Info);
1167
1168 ASL_RESOURCE_NODE *
1169 RsDoFixedIoDescriptor (
1170 ASL_RESOURCE_INFO *Info);
1171
1172 ASL_RESOURCE_NODE *
1173 RsDoIoDescriptor (
1174 ASL_RESOURCE_INFO *Info);
1175
1176 ASL_RESOURCE_NODE *
1177 RsDoIrqDescriptor (
1178 ASL_RESOURCE_INFO *Info);
1179
1180 ASL_RESOURCE_NODE *
1181 RsDoIrqNoFlagsDescriptor (
1182 ASL_RESOURCE_INFO *Info);
1183
1184
1185 /*
1186 * aslrestype2 - Large resource descriptors
1187 */
1188 ASL_RESOURCE_NODE *
1189 RsDoInterruptDescriptor (
1190 ASL_RESOURCE_INFO *Info);
1191
1192 ASL_RESOURCE_NODE *
1193 RsDoVendorLargeDescriptor (
1194 ASL_RESOURCE_INFO *Info);
1195
1196 ASL_RESOURCE_NODE *
1197 RsDoGeneralRegisterDescriptor (
1198 ASL_RESOURCE_INFO *Info);
1199
1200 ASL_RESOURCE_NODE *
1201 RsDoGpioIntDescriptor (
1202 ASL_RESOURCE_INFO *Info);
1203
1204 ASL_RESOURCE_NODE *
1205 RsDoGpioIoDescriptor (
1206 ASL_RESOURCE_INFO *Info);
1207
1208 ASL_RESOURCE_NODE *
1209 RsDoI2cSerialBusDescriptor (
1210 ASL_RESOURCE_INFO *Info);
1211
1212 ASL_RESOURCE_NODE *
1213 RsDoSpiSerialBusDescriptor (
1214 ASL_RESOURCE_INFO *Info);
1215
1216 ASL_RESOURCE_NODE *
1217 RsDoUartSerialBusDescriptor (
1218 ASL_RESOURCE_INFO *Info);
1219
1220 /*
1221 * aslrestype2d - DWord address descriptors
1222 */
1223 ASL_RESOURCE_NODE *
1224 RsDoDwordIoDescriptor (
1225 ASL_RESOURCE_INFO *Info);
1226
1227 ASL_RESOURCE_NODE *
1228 RsDoDwordMemoryDescriptor (
1229 ASL_RESOURCE_INFO *Info);
1230
1231 ASL_RESOURCE_NODE *
1232 RsDoDwordSpaceDescriptor (
1233 ASL_RESOURCE_INFO *Info);
1234
1235
1236 /*
1237 * aslrestype2e - Extended address descriptors
1238 */
1239 ASL_RESOURCE_NODE *
1240 RsDoExtendedIoDescriptor (
1241 ASL_RESOURCE_INFO *Info);
1242
1243 ASL_RESOURCE_NODE *
1244 RsDoExtendedMemoryDescriptor (
1245 ASL_RESOURCE_INFO *Info);
1246
1247 ASL_RESOURCE_NODE *
1248 RsDoExtendedSpaceDescriptor (
1249 ASL_RESOURCE_INFO *Info);
1250
1251
1252 /*
1253 * aslrestype2q - QWord address descriptors
1254 */
1255 ASL_RESOURCE_NODE *
1256 RsDoQwordIoDescriptor (
1257 ASL_RESOURCE_INFO *Info);
1258
1259 ASL_RESOURCE_NODE *
1260 RsDoQwordMemoryDescriptor (
1261 ASL_RESOURCE_INFO *Info);
1262
1263 ASL_RESOURCE_NODE *
1264 RsDoQwordSpaceDescriptor (
1265 ASL_RESOURCE_INFO *Info);
1266
1267
1268 /*
1269 * aslrestype2w - Word address descriptors
1270 */
1271 ASL_RESOURCE_NODE *
1272 RsDoWordIoDescriptor (
1273 ASL_RESOURCE_INFO *Info);
1274
1275 ASL_RESOURCE_NODE *
1276 RsDoWordSpaceDescriptor (
1277 ASL_RESOURCE_INFO *Info);
1278
1279 ASL_RESOURCE_NODE *
1280 RsDoWordBusNumberDescriptor (
1281 ASL_RESOURCE_INFO *Info);
1282
1283
1284 /*
1285 * Entry to data table compiler subsystem
1286 */
1287 ACPI_STATUS
1288 DtDoCompile(
1289 void);
1290
1291 ACPI_STATUS
1292 DtCreateTemplates (
1293 char **argv);
1294
1295 #endif /* __ASLCOMPILER_H */
1296