aslcompiler.h revision 1.1.1.5.2.2 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 char *Filename,
176 BOOLEAN DisplayErrors);
177
178
179 /*
180 * aslwalks - semantic analysis and parse tree walks
181 */
182 ACPI_STATUS
183 AnOtherSemanticAnalysisWalkBegin (
184 ACPI_PARSE_OBJECT *Op,
185 UINT32 Level,
186 void *Context);
187
188 ACPI_STATUS
189 AnOtherSemanticAnalysisWalkEnd (
190 ACPI_PARSE_OBJECT *Op,
191 UINT32 Level,
192 void *Context);
193
194 ACPI_STATUS
195 AnOperandTypecheckWalkEnd (
196 ACPI_PARSE_OBJECT *Op,
197 UINT32 Level,
198 void *Context);
199
200 ACPI_STATUS
201 AnMethodTypingWalkEnd (
202 ACPI_PARSE_OBJECT *Op,
203 UINT32 Level,
204 void *Context);
205
206
207 /*
208 * aslmethod - Control method analysis walk
209 */
210 ACPI_STATUS
211 MtMethodAnalysisWalkBegin (
212 ACPI_PARSE_OBJECT *Op,
213 UINT32 Level,
214 void *Context);
215
216 ACPI_STATUS
217 MtMethodAnalysisWalkEnd (
218 ACPI_PARSE_OBJECT *Op,
219 UINT32 Level,
220 void *Context);
221
222
223 /*
224 * aslbtypes - bitfield data types
225 */
226 UINT32
227 AnMapObjTypeToBtype (
228 ACPI_PARSE_OBJECT *Op);
229
230 UINT32
231 AnMapArgTypeToBtype (
232 UINT32 ArgType);
233
234 UINT32
235 AnGetBtype (
236 ACPI_PARSE_OBJECT *Op);
237
238 void
239 AnFormatBtype (
240 char *Buffer,
241 UINT32 Btype);
242
243
244 /*
245 * aslanalyze - Support functions for parse tree walks
246 */
247 void
248 AnCheckId (
249 ACPI_PARSE_OBJECT *Op,
250 ACPI_NAME Type);
251
252 /* Values for Type argument above */
253
254 #define ASL_TYPE_HID 0
255 #define ASL_TYPE_CID 1
256
257 BOOLEAN
258 AnIsInternalMethod (
259 ACPI_PARSE_OBJECT *Op);
260
261 UINT32
262 AnGetInternalMethodReturnType (
263 ACPI_PARSE_OBJECT *Op);
264
265 BOOLEAN
266 AnLastStatementIsReturn (
267 ACPI_PARSE_OBJECT *Op);
268
269 void
270 AnCheckMethodReturnValue (
271 ACPI_PARSE_OBJECT *Op,
272 const ACPI_OPCODE_INFO *OpInfo,
273 ACPI_PARSE_OBJECT *ArgOp,
274 UINT32 RequiredBtypes,
275 UINT32 ThisNodeBtype);
276
277 BOOLEAN
278 AnIsResultUsed (
279 ACPI_PARSE_OBJECT *Op);
280
281 void
282 ApCheckForGpeNameConflict (
283 ACPI_PARSE_OBJECT *Op);
284
285 void
286 ApCheckRegMethod (
287 ACPI_PARSE_OBJECT *Op);
288
289 BOOLEAN
290 ApFindNameInScope (
291 char *Name,
292 ACPI_PARSE_OBJECT *Op);
293
294
295 /*
296 * aslerror - error handling/reporting
297 */
298 void
299 AslAbort (
300 void);
301
302 void
303 AslError (
304 UINT8 Level,
305 UINT16 MessageId,
306 ACPI_PARSE_OBJECT *Op,
307 char *ExtraMessage);
308
309 ACPI_STATUS
310 AslDisableException (
311 char *MessageIdString);
312
313 BOOLEAN
314 AslIsExceptionDisabled (
315 UINT8 Level,
316 UINT16 MessageId);
317
318 void
319 AslCoreSubsystemError (
320 ACPI_PARSE_OBJECT *Op,
321 ACPI_STATUS Status,
322 char *ExtraMessage,
323 BOOLEAN Abort);
324
325 int
326 AslCompilererror(
327 const char *s);
328
329 void
330 AslCommonError (
331 UINT8 Level,
332 UINT16 MessageId,
333 UINT32 CurrentLineNumber,
334 UINT32 LogicalLineNumber,
335 UINT32 LogicalByteOffset,
336 UINT32 Column,
337 char *Filename,
338 char *ExtraMessage);
339
340 void
341 AslCommonError2 (
342 UINT8 Level,
343 UINT16 MessageId,
344 UINT32 LineNumber,
345 UINT32 Column,
346 char *SourceLine,
347 char *Filename,
348 char *ExtraMessage);
349
350 void
351 AePrintException (
352 UINT32 FileId,
353 ASL_ERROR_MSG *Enode,
354 char *Header);
355
356 void
357 AePrintErrorLog (
358 UINT32 FileId);
359
360 void
361 AeClearErrorLog (
362 void);
363
364
365 /*
366 * asllisting - generate all "listing" type files
367 */
368 void
369 LsDoListings (
370 void);
371
372 void
373 LsWriteNodeToAsmListing (
374 ACPI_PARSE_OBJECT *Op);
375
376 void
377 LsWriteNode (
378 ACPI_PARSE_OBJECT *Op,
379 UINT32 FileId);
380
381 void
382 LsDumpParseTree (
383 void);
384
385
386 /*
387 * asllistsup - Listing file support utilities
388 */
389 void
390 LsDumpAscii (
391 UINT32 FileId,
392 UINT32 Count,
393 UINT8 *Buffer);
394
395 void
396 LsDumpAsciiInComment (
397 UINT32 FileId,
398 UINT32 Count,
399 UINT8 *Buffer);
400
401 void
402 LsCheckException (
403 UINT32 LineNumber,
404 UINT32 FileId);
405
406 void
407 LsFlushListingBuffer (
408 UINT32 FileId);
409
410 void
411 LsWriteListingHexBytes (
412 UINT8 *Buffer,
413 UINT32 Length,
414 UINT32 FileId);
415
416 void
417 LsWriteSourceLines (
418 UINT32 ToLineNumber,
419 UINT32 ToLogicalLineNumber,
420 UINT32 FileId);
421
422 UINT32
423 LsWriteOneSourceLine (
424 UINT32 FileId);
425
426 void
427 LsPushNode (
428 char *Filename);
429
430 ASL_LISTING_NODE *
431 LsPopNode (
432 void);
433
434
435 /*
436 * aslhex - generate all "hex" output files (C, ASM, ASL)
437 */
438 void
439 HxDoHexOutput (
440 void);
441
442
443 /*
444 * aslfold - constant folding
445 */
446 ACPI_STATUS
447 OpcAmlConstantWalk (
448 ACPI_PARSE_OBJECT *Op,
449 UINT32 Level,
450 void *Context);
451
452
453 /*
454 * aslmessages - exception strings
455 */
456 const char *
457 AeDecodeMessageId (
458 UINT16 MessageId);
459
460 const char *
461 AeDecodeExceptionLevel (
462 UINT8 Level);
463
464 UINT16
465 AeBuildFullExceptionCode (
466 UINT8 Level,
467 UINT16 MessageId);
468
469 /*
470 * asloffset - generate C offset file for BIOS support
471 */
472 ACPI_STATUS
473 LsAmlOffsetWalk (
474 ACPI_PARSE_OBJECT *Op,
475 UINT32 Level,
476 void *Context);
477
478 void
479 LsDoOffsetTableHeader (
480 UINT32 FileId);
481
482 void
483 LsDoOffsetTableFooter (
484 UINT32 FileId);
485
486
487 /*
488 * aslopcodes - generate AML opcodes
489 */
490 ACPI_STATUS
491 OpcAmlOpcodeWalk (
492 ACPI_PARSE_OBJECT *Op,
493 UINT32 Level,
494 void *Context);
495
496 ACPI_STATUS
497 OpcAmlOpcodeUpdateWalk (
498 ACPI_PARSE_OBJECT *Op,
499 UINT32 Level,
500 void *Context);
501
502 void
503 OpcGenerateAmlOpcode (
504 ACPI_PARSE_OBJECT *Op);
505
506 UINT32
507 OpcSetOptimalIntegerSize (
508 ACPI_PARSE_OBJECT *Op);
509
510 void
511 OpcGetIntegerWidth (
512 ACPI_PARSE_OBJECT *Op);
513
514
515 /*
516 * asloperands - generate AML operands for the AML opcodes
517 */
518 ACPI_PARSE_OBJECT *
519 UtGetArg (
520 ACPI_PARSE_OBJECT *Op,
521 UINT32 Argn);
522
523 void
524 OpnGenerateAmlOperands (
525 ACPI_PARSE_OBJECT *Op);
526
527 void
528 OpnDoPackage (
529 ACPI_PARSE_OBJECT *Op);
530
531
532 /*
533 * aslopt - optmization
534 */
535 void
536 OptOptimizeNamePath (
537 ACPI_PARSE_OBJECT *Op,
538 UINT32 Flags,
539 ACPI_WALK_STATE *WalkState,
540 char *AmlNameString,
541 ACPI_NAMESPACE_NODE *TargetNode);
542
543
544 /*
545 * aslprintf - Printf/Fprintf macros
546 */
547 void
548 OpcDoPrintf (
549 ACPI_PARSE_OBJECT *Op);
550
551 void
552 OpcDoFprintf (
553 ACPI_PARSE_OBJECT *Op);
554
555
556 /*
557 * aslprune - parse tree pruner
558 */
559 void
560 AslPruneParseTree (
561 UINT32 PruneDepth,
562 UINT32 Type);
563
564
565 /*
566 * aslcodegen - code generation
567 */
568 void
569 CgGenerateAmlOutput (
570 void);
571
572
573 /*
574 * aslfile
575 */
576 void
577 FlOpenFile (
578 UINT32 FileId,
579 char *Filename,
580 char *Mode);
581
582
583 /*
584 * asllength - calculate/adjust AML package lengths
585 */
586 ACPI_STATUS
587 LnPackageLengthWalk (
588 ACPI_PARSE_OBJECT *Op,
589 UINT32 Level,
590 void *Context);
591
592 ACPI_STATUS
593 LnInitLengthsWalk (
594 ACPI_PARSE_OBJECT *Op,
595 UINT32 Level,
596 void *Context);
597
598 void
599 CgGenerateAmlLengths (
600 ACPI_PARSE_OBJECT *Op);
601
602
603 /*
604 * aslmap - opcode mappings and reserved method names
605 */
606 ACPI_OBJECT_TYPE
607 AslMapNamedOpcodeToDataType (
608 UINT16 Opcode);
609
610
611 /*
612 * aslpredef - ACPI predefined names support
613 */
614 BOOLEAN
615 ApCheckForPredefinedMethod (
616 ACPI_PARSE_OBJECT *Op,
617 ASL_METHOD_INFO *MethodInfo);
618
619 void
620 ApCheckPredefinedReturnValue (
621 ACPI_PARSE_OBJECT *Op,
622 ASL_METHOD_INFO *MethodInfo);
623
624 UINT32
625 ApCheckForPredefinedName (
626 ACPI_PARSE_OBJECT *Op,
627 char *Name);
628
629 void
630 ApCheckForPredefinedObject (
631 ACPI_PARSE_OBJECT *Op,
632 char *Name);
633
634 ACPI_STATUS
635 ApCheckObjectType (
636 const char *PredefinedName,
637 ACPI_PARSE_OBJECT *Op,
638 UINT32 ExpectedBtypes,
639 UINT32 PackageIndex);
640
641 void
642 ApDisplayReservedNames (
643 void);
644
645
646 /*
647 * aslprepkg - ACPI predefined names support for packages
648 */
649 void
650 ApCheckPackage (
651 ACPI_PARSE_OBJECT *ParentOp,
652 const ACPI_PREDEFINED_INFO *Predefined);
653
654
655 /*
656 * asltransform - parse tree transformations
657 */
658 ACPI_STATUS
659 TrAmlTransformWalk (
660 ACPI_PARSE_OBJECT *Op,
661 UINT32 Level,
662 void *Context);
663
664
665 /*
666 * asltree - parse tree support
667 */
668 ACPI_STATUS
669 TrWalkParseTree (
670 ACPI_PARSE_OBJECT *Op,
671 UINT32 Visitation,
672 ASL_WALK_CALLBACK DescendingCallback,
673 ASL_WALK_CALLBACK AscendingCallback,
674 void *Context);
675
676 /* Values for "Visitation" parameter above */
677
678 #define ASL_WALK_VISIT_DOWNWARD 0x01
679 #define ASL_WALK_VISIT_UPWARD 0x02
680 #define ASL_WALK_VISIT_TWICE (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD)
681
682
683 ACPI_PARSE_OBJECT *
684 TrAllocateNode (
685 UINT32 ParseOpcode);
686
687 void
688 TrPrintNodeCompileFlags (
689 UINT32 Flags);
690
691 void
692 TrReleaseNode (
693 ACPI_PARSE_OBJECT *Op);
694
695 ACPI_PARSE_OBJECT *
696 TrUpdateNode (
697 UINT32 ParseOpcode,
698 ACPI_PARSE_OBJECT *Op);
699
700 ACPI_PARSE_OBJECT *
701 TrCreateNode (
702 UINT32 ParseOpcode,
703 UINT32 NumChildren,
704 ...);
705
706 ACPI_PARSE_OBJECT *
707 TrCreateLeafNode (
708 UINT32 ParseOpcode);
709
710 ACPI_PARSE_OBJECT *
711 TrCreateNullTarget (
712 void);
713
714 ACPI_PARSE_OBJECT *
715 TrCreateAssignmentNode (
716 ACPI_PARSE_OBJECT *Target,
717 ACPI_PARSE_OBJECT *Source);
718
719 ACPI_PARSE_OBJECT *
720 TrCreateTargetOperand (
721 ACPI_PARSE_OBJECT *OriginalOp,
722 ACPI_PARSE_OBJECT *ParentOp);
723
724 ACPI_PARSE_OBJECT *
725 TrCreateValuedLeafNode (
726 UINT32 ParseOpcode,
727 UINT64 Value);
728
729 ACPI_PARSE_OBJECT *
730 TrCreateConstantLeafNode (
731 UINT32 ParseOpcode);
732
733 ACPI_PARSE_OBJECT *
734 TrLinkChildren (
735 ACPI_PARSE_OBJECT *Op,
736 UINT32 NumChildren,
737 ...);
738
739 void
740 TrSetEndLineNumber (
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 void
927 UtDisplaySupportedTables (
928 void);
929
930 void
931 UtDisplayConstantOpcodes (
932 void);
933
934 UINT8
935 UtBeginEvent (
936 char *Name);
937
938 void
939 UtEndEvent (
940 UINT8 Event);
941
942 void *
943 UtLocalCalloc (
944 UINT32 Size);
945
946 void
947 UtLocalFree (
948 void *Allocated,
949 UINT32 Size);
950
951 void
952 UtPrintFormattedName (
953 UINT16 ParseOpcode,
954 UINT32 Level);
955
956 void
957 UtDisplaySummary (
958 UINT32 FileId);
959
960 void
961 UtConvertByteToHex (
962 UINT8 RawByte,
963 UINT8 *Buffer);
964
965 void
966 UtConvertByteToAsmHex (
967 UINT8 RawByte,
968 UINT8 *Buffer);
969
970 char *
971 UtGetOpName (
972 UINT32 ParseOpcode);
973
974 void
975 UtSetParseOpName (
976 ACPI_PARSE_OBJECT *Op);
977
978 char *
979 UtStringCacheCalloc (
980 UINT32 Length);
981
982 void
983 UtExpandLineBuffers (
984 void);
985
986 void
987 UtFreeLineBuffers (
988 void);
989
990 ACPI_STATUS
991 UtInternalizeName (
992 char *ExternalName,
993 char **ConvertedName);
994
995 void
996 UtAttachNamepathToOwner (
997 ACPI_PARSE_OBJECT *Op,
998 ACPI_PARSE_OBJECT *NameNode);
999
1000 ACPI_PARSE_OBJECT *
1001 UtCheckIntegerRange (
1002 ACPI_PARSE_OBJECT *Op,
1003 UINT32 LowValue,
1004 UINT32 HighValue);
1005
1006 UINT64
1007 UtDoConstant (
1008 char *String);
1009
1010 ACPI_STATUS
1011 stroul64 (
1012 char *String,
1013 UINT32 Base,
1014 UINT64 *RetInteger);
1015
1016
1017 /*
1018 * asluuid - UUID support
1019 */
1020 ACPI_STATUS
1021 AuValidateUuid (
1022 char *InString);
1023
1024 ACPI_STATUS
1025 AuConvertUuidToString (
1026 char *UuIdBuffer,
1027 char *OutString);
1028
1029 /*
1030 * aslresource - Resource template generation utilities
1031 */
1032 void
1033 RsSmallAddressCheck (
1034 UINT8 Type,
1035 UINT32 Minimum,
1036 UINT32 Maximum,
1037 UINT32 Length,
1038 UINT32 Alignment,
1039 ACPI_PARSE_OBJECT *MinOp,
1040 ACPI_PARSE_OBJECT *MaxOp,
1041 ACPI_PARSE_OBJECT *LengthOp,
1042 ACPI_PARSE_OBJECT *AlignOp,
1043 ACPI_PARSE_OBJECT *Op);
1044
1045 void
1046 RsLargeAddressCheck (
1047 UINT64 Minimum,
1048 UINT64 Maximum,
1049 UINT64 Length,
1050 UINT64 Granularity,
1051 UINT8 Flags,
1052 ACPI_PARSE_OBJECT *MinOp,
1053 ACPI_PARSE_OBJECT *MaxOp,
1054 ACPI_PARSE_OBJECT *LengthOp,
1055 ACPI_PARSE_OBJECT *GranOp,
1056 ACPI_PARSE_OBJECT *Op);
1057
1058 UINT16
1059 RsGetStringDataLength (
1060 ACPI_PARSE_OBJECT *InitializerOp);
1061
1062 ASL_RESOURCE_NODE *
1063 RsAllocateResourceNode (
1064 UINT32 Size);
1065
1066 void
1067 RsCreateResourceField (
1068 ACPI_PARSE_OBJECT *Op,
1069 char *Name,
1070 UINT32 ByteOffset,
1071 UINT32 BitOffset,
1072 UINT32 BitLength);
1073
1074 void
1075 RsSetFlagBits (
1076 UINT8 *Flags,
1077 ACPI_PARSE_OBJECT *Op,
1078 UINT8 Position,
1079 UINT8 DefaultBit);
1080
1081 void
1082 RsSetFlagBits16 (
1083 UINT16 *Flags,
1084 ACPI_PARSE_OBJECT *Op,
1085 UINT8 Position,
1086 UINT8 DefaultBit);
1087
1088 ACPI_PARSE_OBJECT *
1089 RsCompleteNodeAndGetNext (
1090 ACPI_PARSE_OBJECT *Op);
1091
1092 void
1093 RsCheckListForDuplicates (
1094 ACPI_PARSE_OBJECT *Op);
1095
1096 ASL_RESOURCE_NODE *
1097 RsDoOneResourceDescriptor (
1098 ASL_RESOURCE_INFO *Info,
1099 UINT8 *State);
1100
1101 /* Values for State above */
1102
1103 #define ACPI_RSTATE_NORMAL 0
1104 #define ACPI_RSTATE_START_DEPENDENT 1
1105 #define ACPI_RSTATE_DEPENDENT_LIST 2
1106
1107 UINT32
1108 RsLinkDescriptorChain (
1109 ASL_RESOURCE_NODE **PreviousRnode,
1110 ASL_RESOURCE_NODE *Rnode);
1111
1112 void
1113 RsDoResourceTemplate (
1114 ACPI_PARSE_OBJECT *Op);
1115
1116
1117 /*
1118 * aslrestype1 - Miscellaneous Small descriptors
1119 */
1120 ASL_RESOURCE_NODE *
1121 RsDoEndTagDescriptor (
1122 ASL_RESOURCE_INFO *Info);
1123
1124 ASL_RESOURCE_NODE *
1125 RsDoEndDependentDescriptor (
1126 ASL_RESOURCE_INFO *Info);
1127
1128 ASL_RESOURCE_NODE *
1129 RsDoMemory24Descriptor (
1130 ASL_RESOURCE_INFO *Info);
1131
1132 ASL_RESOURCE_NODE *
1133 RsDoMemory32Descriptor (
1134 ASL_RESOURCE_INFO *Info);
1135
1136 ASL_RESOURCE_NODE *
1137 RsDoMemory32FixedDescriptor (
1138 ASL_RESOURCE_INFO *Info);
1139
1140 ASL_RESOURCE_NODE *
1141 RsDoStartDependentDescriptor (
1142 ASL_RESOURCE_INFO *Info);
1143
1144 ASL_RESOURCE_NODE *
1145 RsDoStartDependentNoPriDescriptor (
1146 ASL_RESOURCE_INFO *Info);
1147
1148 ASL_RESOURCE_NODE *
1149 RsDoVendorSmallDescriptor (
1150 ASL_RESOURCE_INFO *Info);
1151
1152
1153 /*
1154 * aslrestype1i - I/O-related Small descriptors
1155 */
1156 ASL_RESOURCE_NODE *
1157 RsDoDmaDescriptor (
1158 ASL_RESOURCE_INFO *Info);
1159
1160 ASL_RESOURCE_NODE *
1161 RsDoFixedDmaDescriptor (
1162 ASL_RESOURCE_INFO *Info);
1163
1164 ASL_RESOURCE_NODE *
1165 RsDoFixedIoDescriptor (
1166 ASL_RESOURCE_INFO *Info);
1167
1168 ASL_RESOURCE_NODE *
1169 RsDoIoDescriptor (
1170 ASL_RESOURCE_INFO *Info);
1171
1172 ASL_RESOURCE_NODE *
1173 RsDoIrqDescriptor (
1174 ASL_RESOURCE_INFO *Info);
1175
1176 ASL_RESOURCE_NODE *
1177 RsDoIrqNoFlagsDescriptor (
1178 ASL_RESOURCE_INFO *Info);
1179
1180
1181 /*
1182 * aslrestype2 - Large resource descriptors
1183 */
1184 ASL_RESOURCE_NODE *
1185 RsDoInterruptDescriptor (
1186 ASL_RESOURCE_INFO *Info);
1187
1188 ASL_RESOURCE_NODE *
1189 RsDoVendorLargeDescriptor (
1190 ASL_RESOURCE_INFO *Info);
1191
1192 ASL_RESOURCE_NODE *
1193 RsDoGeneralRegisterDescriptor (
1194 ASL_RESOURCE_INFO *Info);
1195
1196 ASL_RESOURCE_NODE *
1197 RsDoGpioIntDescriptor (
1198 ASL_RESOURCE_INFO *Info);
1199
1200 ASL_RESOURCE_NODE *
1201 RsDoGpioIoDescriptor (
1202 ASL_RESOURCE_INFO *Info);
1203
1204 ASL_RESOURCE_NODE *
1205 RsDoI2cSerialBusDescriptor (
1206 ASL_RESOURCE_INFO *Info);
1207
1208 ASL_RESOURCE_NODE *
1209 RsDoSpiSerialBusDescriptor (
1210 ASL_RESOURCE_INFO *Info);
1211
1212 ASL_RESOURCE_NODE *
1213 RsDoUartSerialBusDescriptor (
1214 ASL_RESOURCE_INFO *Info);
1215
1216 /*
1217 * aslrestype2d - DWord address descriptors
1218 */
1219 ASL_RESOURCE_NODE *
1220 RsDoDwordIoDescriptor (
1221 ASL_RESOURCE_INFO *Info);
1222
1223 ASL_RESOURCE_NODE *
1224 RsDoDwordMemoryDescriptor (
1225 ASL_RESOURCE_INFO *Info);
1226
1227 ASL_RESOURCE_NODE *
1228 RsDoDwordSpaceDescriptor (
1229 ASL_RESOURCE_INFO *Info);
1230
1231
1232 /*
1233 * aslrestype2e - Extended address descriptors
1234 */
1235 ASL_RESOURCE_NODE *
1236 RsDoExtendedIoDescriptor (
1237 ASL_RESOURCE_INFO *Info);
1238
1239 ASL_RESOURCE_NODE *
1240 RsDoExtendedMemoryDescriptor (
1241 ASL_RESOURCE_INFO *Info);
1242
1243 ASL_RESOURCE_NODE *
1244 RsDoExtendedSpaceDescriptor (
1245 ASL_RESOURCE_INFO *Info);
1246
1247
1248 /*
1249 * aslrestype2q - QWord address descriptors
1250 */
1251 ASL_RESOURCE_NODE *
1252 RsDoQwordIoDescriptor (
1253 ASL_RESOURCE_INFO *Info);
1254
1255 ASL_RESOURCE_NODE *
1256 RsDoQwordMemoryDescriptor (
1257 ASL_RESOURCE_INFO *Info);
1258
1259 ASL_RESOURCE_NODE *
1260 RsDoQwordSpaceDescriptor (
1261 ASL_RESOURCE_INFO *Info);
1262
1263
1264 /*
1265 * aslrestype2w - Word address descriptors
1266 */
1267 ASL_RESOURCE_NODE *
1268 RsDoWordIoDescriptor (
1269 ASL_RESOURCE_INFO *Info);
1270
1271 ASL_RESOURCE_NODE *
1272 RsDoWordSpaceDescriptor (
1273 ASL_RESOURCE_INFO *Info);
1274
1275 ASL_RESOURCE_NODE *
1276 RsDoWordBusNumberDescriptor (
1277 ASL_RESOURCE_INFO *Info);
1278
1279
1280 /*
1281 * Entry to data table compiler subsystem
1282 */
1283 ACPI_STATUS
1284 DtDoCompile(
1285 void);
1286
1287 ACPI_STATUS
1288 DtCreateTemplates (
1289 char *Signature);
1290
1291 #endif /* __ASLCOMPILER_H */
1292