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