xref: /freebsd/sys/contrib/dev/acpica/compiler/aslcompiler.h (revision 9a41df2a0e6408e9b329bbd8b9e37c2b44461a1b)
1 
2 /******************************************************************************
3  *
4  * Module Name: aslcompiler.h - common include file for iASL
5  *
6  *****************************************************************************/
7 
8 /*
9  * Copyright (C) 2000 - 2012, Intel Corp.
10  * All rights reserved.
11  *
12  * Redistribution and use in source and binary forms, with or without
13  * modification, are permitted provided that the following conditions
14  * are met:
15  * 1. Redistributions of source code must retain the above copyright
16  *    notice, this list of conditions, and the following disclaimer,
17  *    without modification.
18  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
19  *    substantially similar to the "NO WARRANTY" disclaimer below
20  *    ("Disclaimer") and any redistribution must be conditioned upon
21  *    including a substantially similar Disclaimer requirement for further
22  *    binary redistribution.
23  * 3. Neither the names of the above-listed copyright holders nor the names
24  *    of any contributors may be used to endorse or promote products derived
25  *    from this software without specific prior written permission.
26  *
27  * Alternatively, this software may be distributed under the terms of the
28  * GNU General Public License ("GPL") version 2 as published by the Free
29  * Software Foundation.
30  *
31  * NO WARRANTY
32  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
35  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
37  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
38  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
40  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
41  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
42  * POSSIBILITY OF SUCH DAMAGES.
43  */
44 
45 
46 #ifndef __ASLCOMPILER_H
47 #define __ASLCOMPILER_H
48 
49 #include <contrib/dev/acpica/include/acpi.h>
50 #include <contrib/dev/acpica/include/accommon.h>
51 #include <contrib/dev/acpica/include/amlresrc.h>
52 #include <contrib/dev/acpica/include/acdebug.h>
53 
54 /* Microsoft-specific */
55 
56 #if (defined WIN32 || defined WIN64)
57 
58 /* warn : used #pragma pack */
59 #pragma warning(disable:4103)
60 
61 /* warn : named type definition in parentheses */
62 #pragma warning(disable:4115)
63 #endif
64 
65 #include <stdio.h>
66 #include <stdlib.h>
67 #include <stdarg.h>
68 #include <string.h>
69 #include <errno.h>
70 #include <ctype.h>
71 
72 /* Compiler headers */
73 
74 #include <contrib/dev/acpica/compiler/asldefine.h>
75 #include <contrib/dev/acpica/compiler/asltypes.h>
76 #include <contrib/dev/acpica/compiler/aslmessages.h>
77 #include <contrib/dev/acpica/compiler/aslglobal.h>
78 #include <contrib/dev/acpica/compiler/preprocess.h>
79 
80 
81 /*******************************************************************************
82  *
83  * Compiler prototypes
84  *
85  ******************************************************************************/
86 
87 /*
88  * Main ASL parser - generated from flex/bison, lex/yacc, etc.
89  */
90 int
91 AslCompilerparse(
92     void);
93 
94 ACPI_PARSE_OBJECT *
95 AslDoError (
96     void);
97 
98 int
99 AslCompilerlex(
100     void);
101 
102 void
103 AslResetCurrentLineBuffer (
104     void);
105 
106 void
107 AslInsertLineBuffer (
108     int                     SourceChar);
109 
110 int
111 AslPopInputFileStack (
112     void);
113 
114 void
115 AslPushInputFileStack (
116     FILE                    *InputFile,
117     char                    *Filename);
118 
119 /*
120  * aslstartup - entered from main()
121  */
122 void
123 AslInitializeGlobals (
124     void);
125 
126 typedef
127 ACPI_STATUS (*ASL_PATHNAME_CALLBACK) (
128     char *);
129 
130 ACPI_STATUS
131 AslDoOnePathname (
132     char                    *Pathname,
133     ASL_PATHNAME_CALLBACK   Callback);
134 
135 ACPI_STATUS
136 AslDoOneFile (
137     char                    *Filename);
138 
139 ACPI_STATUS
140 AslCheckForErrorExit (
141     void);
142 
143 
144 /*
145  * aslcompile - compile mainline
146  */
147 void
148 AslCompilerSignon (
149     UINT32                  FileId);
150 
151 void
152 AslCompilerFileHeader (
153     UINT32                  FileId);
154 
155 int
156 CmDoCompile (
157     void);
158 
159 void
160 CmDoOutputFiles (
161     void);
162 
163 void
164 CmCleanupAndExit (
165     void);
166 
167 ACPI_STATUS
168 FlCheckForAscii (
169     FILE                    *Handle,
170     char                    *Filename,
171     BOOLEAN                 DisplayErrors);
172 
173 
174 /*
175  * aslwalks - semantic analysis and parse tree walks
176  */
177 ACPI_STATUS
178 AnOtherSemanticAnalysisWalkBegin (
179     ACPI_PARSE_OBJECT       *Op,
180     UINT32                  Level,
181     void                    *Context);
182 
183 ACPI_STATUS
184 AnOtherSemanticAnalysisWalkEnd (
185     ACPI_PARSE_OBJECT       *Op,
186     UINT32                  Level,
187     void                    *Context);
188 
189 ACPI_STATUS
190 AnOperandTypecheckWalkEnd (
191     ACPI_PARSE_OBJECT       *Op,
192     UINT32                  Level,
193     void                    *Context);
194 
195 ACPI_STATUS
196 AnMethodAnalysisWalkBegin (
197     ACPI_PARSE_OBJECT       *Op,
198     UINT32                  Level,
199     void                    *Context);
200 
201 ACPI_STATUS
202 AnMethodAnalysisWalkEnd (
203     ACPI_PARSE_OBJECT       *Op,
204     UINT32                  Level,
205     void                    *Context);
206 
207 ACPI_STATUS
208 AnMethodTypingWalkEnd (
209     ACPI_PARSE_OBJECT       *Op,
210     UINT32                  Level,
211     void                    *Context);
212 
213 
214 /*
215  * aslbtypes - bitfield data types
216  */
217 UINT32
218 AnMapObjTypeToBtype (
219     ACPI_PARSE_OBJECT       *Op);
220 
221 UINT32
222 AnMapArgTypeToBtype (
223     UINT32                  ArgType);
224 
225 UINT32
226 AnGetBtype (
227     ACPI_PARSE_OBJECT       *Op);
228 
229 void
230 AnFormatBtype (
231     char                    *Buffer,
232     UINT32                  Btype);
233 
234 
235 /*
236  * aslanalyze - Support functions for parse tree walks
237  */
238 void
239 AnCheckId (
240     ACPI_PARSE_OBJECT       *Op,
241     ACPI_NAME               Type);
242 
243 /* Values for Type argument above */
244 
245 #define ASL_TYPE_HID        0
246 #define ASL_TYPE_CID        1
247 
248 BOOLEAN
249 AnIsInternalMethod (
250     ACPI_PARSE_OBJECT       *Op);
251 
252 UINT32
253 AnGetInternalMethodReturnType (
254     ACPI_PARSE_OBJECT       *Op);
255 
256 BOOLEAN
257 AnLastStatementIsReturn (
258     ACPI_PARSE_OBJECT       *Op);
259 
260 void
261 AnCheckMethodReturnValue (
262     ACPI_PARSE_OBJECT       *Op,
263     const ACPI_OPCODE_INFO  *OpInfo,
264     ACPI_PARSE_OBJECT       *ArgOp,
265     UINT32                  RequiredBtypes,
266     UINT32                  ThisNodeBtype);
267 
268 BOOLEAN
269 AnIsResultUsed (
270     ACPI_PARSE_OBJECT       *Op);
271 
272 void
273 ApCheckForGpeNameConflict (
274     ACPI_PARSE_OBJECT       *Op);
275 
276 void
277 ApCheckRegMethod (
278     ACPI_PARSE_OBJECT       *Op);
279 
280 
281 /*
282  * aslerror - error handling/reporting
283  */
284 void
285 AslError (
286     UINT8                   Level,
287     UINT8                   MessageId,
288     ACPI_PARSE_OBJECT       *Op,
289     char                    *ExtraMessage);
290 
291 void
292 AslCoreSubsystemError (
293     ACPI_PARSE_OBJECT       *Op,
294     ACPI_STATUS             Status,
295     char                    *ExtraMessage,
296     BOOLEAN                 Abort);
297 
298 int
299 AslCompilererror(
300     const char              *s);
301 
302 void
303 AslCommonError (
304     UINT8                   Level,
305     UINT8                   MessageId,
306     UINT32                  CurrentLineNumber,
307     UINT32                  LogicalLineNumber,
308     UINT32                  LogicalByteOffset,
309     UINT32                  Column,
310     char                    *Filename,
311     char                    *ExtraMessage);
312 
313 void
314 AslCommonError2 (
315     UINT8                   Level,
316     UINT8                   MessageId,
317     UINT32                  LineNumber,
318     UINT32                  Column,
319     char                    *SourceLine,
320     char                    *Filename,
321     char                    *ExtraMessage);
322 
323 void
324 AePrintException (
325     UINT32                  FileId,
326     ASL_ERROR_MSG           *Enode,
327     char                    *Header);
328 
329 void
330 AePrintErrorLog (
331     UINT32                  FileId);
332 
333 void
334 AeClearErrorLog (
335     void);
336 
337 ACPI_PHYSICAL_ADDRESS
338 AeLocalGetRootPointer (
339     void);
340 
341 
342 /*
343  * asllisting - generate all "listing" type files
344  */
345 void
346 LsDoListings (
347     void);
348 
349 void
350 LsWriteNodeToAsmListing (
351     ACPI_PARSE_OBJECT       *Op);
352 
353 void
354 LsWriteNode (
355     ACPI_PARSE_OBJECT       *Op,
356     UINT32                  FileId);
357 
358 void
359 LsDoHexOutput (
360     void);
361 
362 void
363 LsDumpParseTree (
364     void);
365 
366 /*
367  * aslfold - constant folding
368  */
369 ACPI_STATUS
370 OpcAmlConstantWalk (
371     ACPI_PARSE_OBJECT       *Op,
372     UINT32                  Level,
373     void                    *Context);
374 
375 
376 /*
377  * aslopcodes - generate AML opcodes
378  */
379 ACPI_STATUS
380 OpcAmlOpcodeWalk (
381     ACPI_PARSE_OBJECT       *Op,
382     UINT32                  Level,
383     void                    *Context);
384 
385 ACPI_STATUS
386 OpcAmlOpcodeUpdateWalk (
387     ACPI_PARSE_OBJECT       *Op,
388     UINT32                  Level,
389     void                    *Context);
390 
391 void
392 OpcGenerateAmlOpcode (
393     ACPI_PARSE_OBJECT       *Op);
394 
395 UINT32
396 OpcSetOptimalIntegerSize (
397     ACPI_PARSE_OBJECT       *Op);
398 
399 void
400 OpcGetIntegerWidth (
401     ACPI_PARSE_OBJECT       *Op);
402 
403 
404 /*
405  * asloperands - generate AML operands for the AML opcodes
406  */
407 ACPI_PARSE_OBJECT  *
408 UtGetArg (
409     ACPI_PARSE_OBJECT       *Op,
410     UINT32                  Argn);
411 
412 void
413 OpnGenerateAmlOperands (
414     ACPI_PARSE_OBJECT       *Op);
415 
416 void
417 OpnDoPackage (
418     ACPI_PARSE_OBJECT       *Op);
419 
420 
421 /*
422  * aslopt - optmization
423  */
424 void
425 OptOptimizeNamePath (
426     ACPI_PARSE_OBJECT       *Op,
427     UINT32                  Flags,
428     ACPI_WALK_STATE         *WalkState,
429     char                    *AmlNameString,
430     ACPI_NAMESPACE_NODE     *TargetNode);
431 
432 
433 /*
434  * aslcodegen - code generation
435  */
436 void
437 CgGenerateAmlOutput (
438     void);
439 
440 
441 /*
442  * aslfile
443  */
444 void
445 FlOpenFile (
446     UINT32                  FileId,
447     char                    *Filename,
448     char                    *Mode);
449 
450 
451 /*
452  * asllength - calculate/adjust AML package lengths
453  */
454 ACPI_STATUS
455 LnPackageLengthWalk (
456     ACPI_PARSE_OBJECT       *Op,
457     UINT32                  Level,
458     void                    *Context);
459 
460 ACPI_STATUS
461 LnInitLengthsWalk (
462     ACPI_PARSE_OBJECT       *Op,
463     UINT32                  Level,
464     void                    *Context);
465 
466 void
467 CgGenerateAmlLengths (
468     ACPI_PARSE_OBJECT       *Op);
469 
470 
471 /*
472  * aslmap - opcode mappings and reserved method names
473  */
474 ACPI_OBJECT_TYPE
475 AslMapNamedOpcodeToDataType (
476     UINT16                  Opcode);
477 
478 
479 /*
480  * aslpredef - ACPI predefined names support
481  */
482 BOOLEAN
483 ApCheckForPredefinedMethod (
484     ACPI_PARSE_OBJECT       *Op,
485     ASL_METHOD_INFO         *MethodInfo);
486 
487 void
488 ApCheckPredefinedReturnValue (
489     ACPI_PARSE_OBJECT       *Op,
490     ASL_METHOD_INFO         *MethodInfo);
491 
492 UINT32
493 ApCheckForPredefinedName (
494     ACPI_PARSE_OBJECT       *Op,
495     char                    *Name);
496 
497 void
498 ApCheckForPredefinedObject (
499     ACPI_PARSE_OBJECT       *Op,
500     char                    *Name);
501 
502 void
503 ApDisplayReservedNames (
504     void);
505 
506 
507 /*
508  * asltransform - parse tree transformations
509  */
510 ACPI_STATUS
511 TrAmlTransformWalk (
512     ACPI_PARSE_OBJECT       *Op,
513     UINT32                  Level,
514     void                    *Context);
515 
516 
517 /*
518  * asltree - parse tree support
519  */
520 ACPI_STATUS
521 TrWalkParseTree (
522     ACPI_PARSE_OBJECT       *Op,
523     UINT32                  Visitation,
524     ASL_WALK_CALLBACK       DescendingCallback,
525     ASL_WALK_CALLBACK       AscendingCallback,
526     void                    *Context);
527 
528 /* Values for "Visitation" parameter above */
529 
530 #define ASL_WALK_VISIT_DOWNWARD     0x01
531 #define ASL_WALK_VISIT_UPWARD       0x02
532 #define ASL_WALK_VISIT_TWICE        (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD)
533 
534 
535 ACPI_PARSE_OBJECT *
536 TrAllocateNode (
537     UINT32                  ParseOpcode);
538 
539 void
540 TrReleaseNode (
541     ACPI_PARSE_OBJECT       *Op);
542 
543 ACPI_PARSE_OBJECT *
544 TrUpdateNode (
545     UINT32                  ParseOpcode,
546     ACPI_PARSE_OBJECT       *Op);
547 
548 ACPI_PARSE_OBJECT *
549 TrCreateNode (
550     UINT32                  ParseOpcode,
551     UINT32                  NumChildren,
552     ...);
553 
554 ACPI_PARSE_OBJECT *
555 TrCreateLeafNode (
556     UINT32                  ParseOpcode);
557 
558 ACPI_PARSE_OBJECT *
559 TrCreateValuedLeafNode (
560     UINT32                  ParseOpcode,
561     UINT64                  Value);
562 
563 ACPI_PARSE_OBJECT *
564 TrCreateConstantLeafNode (
565     UINT32                  ParseOpcode);
566 
567 ACPI_PARSE_OBJECT *
568 TrLinkChildren (
569     ACPI_PARSE_OBJECT       *Op,
570     UINT32                  NumChildren,
571     ...);
572 
573 void
574 TrSetEndLineNumber (
575     ACPI_PARSE_OBJECT       *Op);
576 
577 void
578 TrWalkTree (
579     void);
580 
581 ACPI_PARSE_OBJECT *
582 TrLinkPeerNode (
583     ACPI_PARSE_OBJECT       *Op1,
584     ACPI_PARSE_OBJECT       *Op2);
585 
586 ACPI_PARSE_OBJECT *
587 TrLinkChildNode (
588     ACPI_PARSE_OBJECT       *Op1,
589     ACPI_PARSE_OBJECT       *Op2);
590 
591 ACPI_PARSE_OBJECT *
592 TrSetNodeFlags (
593     ACPI_PARSE_OBJECT       *Op,
594     UINT32                  Flags);
595 
596 ACPI_PARSE_OBJECT *
597 TrSetNodeAmlLength (
598     ACPI_PARSE_OBJECT       *Op,
599     UINT32                  Length);
600 
601 ACPI_PARSE_OBJECT *
602 TrLinkPeerNodes (
603     UINT32                  NumPeers,
604     ...);
605 
606 
607 /*
608  * aslfiles - File I/O support
609  */
610 void
611 AslAbort (
612     void);
613 
614 void
615 FlAddIncludeDirectory (
616     char                    *Dir);
617 
618 char *
619 FlMergePathnames (
620     char                    *PrefixDir,
621     char                    *FilePathname);
622 
623 void
624 FlOpenIncludeFile (
625     ACPI_PARSE_OBJECT       *Op);
626 
627 void
628 FlFileError (
629     UINT32                  FileId,
630     UINT8                   ErrorId);
631 
632 UINT32
633 FlGetFileSize (
634     UINT32                  FileId);
635 
636 ACPI_STATUS
637 FlReadFile (
638     UINT32                  FileId,
639     void                    *Buffer,
640     UINT32                  Length);
641 
642 void
643 FlWriteFile (
644     UINT32                  FileId,
645     void                    *Buffer,
646     UINT32                  Length);
647 
648 void
649 FlSeekFile (
650     UINT32                  FileId,
651     long                    Offset);
652 
653 void
654 FlCloseFile (
655     UINT32                  FileId);
656 
657 void
658 FlPrintFile (
659     UINT32                  FileId,
660     char                    *Format,
661     ...);
662 
663 void
664 FlDeleteFile (
665     UINT32                  FileId);
666 
667 void
668 FlSetLineNumber (
669     UINT32                  LineNumber);
670 
671 void
672 FlSetFilename (
673     char                    *Filename);
674 
675 ACPI_STATUS
676 FlOpenInputFile (
677     char                    *InputFilename);
678 
679 ACPI_STATUS
680 FlOpenAmlOutputFile (
681     char                    *InputFilename);
682 
683 ACPI_STATUS
684 FlOpenMiscOutputFiles (
685     char                    *InputFilename);
686 
687 
688 /*
689  * asload - load namespace in prep for cross reference
690  */
691 ACPI_STATUS
692 LdLoadNamespace (
693     ACPI_PARSE_OBJECT       *RootOp);
694 
695 
696 /*
697  * asllookup - namespace cross reference
698  */
699 ACPI_STATUS
700 LkCrossReferenceNamespace (
701     void);
702 
703 void
704 LkFindUnreferencedObjects (
705     void);
706 
707 ACPI_STATUS
708 LsDisplayNamespace (
709     void);
710 
711 void
712 LsSetupNsList (
713     void                    *Handle);
714 
715 
716 /*
717  * aslutils - common compiler utilites
718  */
719 void
720 DbgPrint (
721     UINT32                  Type,
722     char                    *Format,
723     ...);
724 
725 /* Type values for above */
726 
727 #define ASL_DEBUG_OUTPUT    0
728 #define ASL_PARSE_OUTPUT    1
729 #define ASL_TREE_OUTPUT     2
730 
731 void
732 UtDisplaySupportedTables (
733     void);
734 
735 void
736 UtDisplayConstantOpcodes (
737     void);
738 
739 UINT8
740 UtBeginEvent (
741     char                    *Name);
742 
743 void
744 UtEndEvent (
745     UINT8                   Event);
746 
747 void *
748 UtLocalCalloc (
749     UINT32                  Size);
750 
751 void
752 UtPrintFormattedName (
753     UINT16                  ParseOpcode,
754     UINT32                  Level);
755 
756 void
757 UtDisplaySummary (
758     UINT32                  FileId);
759 
760 UINT8
761 UtHexCharToValue (
762     int                     HexChar);
763 
764 void
765 UtConvertByteToHex (
766     UINT8                   RawByte,
767     UINT8                   *Buffer);
768 
769 void
770 UtConvertByteToAsmHex (
771     UINT8                   RawByte,
772     UINT8                   *Buffer);
773 
774 char *
775 UtGetOpName (
776     UINT32                  ParseOpcode);
777 
778 void
779 UtSetParseOpName (
780     ACPI_PARSE_OBJECT       *Op);
781 
782 char *
783 UtGetStringBuffer (
784     UINT32                  Length);
785 
786 void
787 UtExpandLineBuffers (
788     void);
789 
790 ACPI_STATUS
791 UtInternalizeName (
792     char                    *ExternalName,
793     char                    **ConvertedName);
794 
795 void
796 UtAttachNamepathToOwner (
797     ACPI_PARSE_OBJECT       *Op,
798     ACPI_PARSE_OBJECT       *NameNode);
799 
800 ACPI_PARSE_OBJECT *
801 UtCheckIntegerRange (
802     ACPI_PARSE_OBJECT       *Op,
803     UINT32                  LowValue,
804     UINT32                  HighValue);
805 
806 UINT64
807 UtDoConstant (
808     char                    *String);
809 
810 ACPI_STATUS
811 UtStrtoul64 (
812     char                    *String,
813     UINT32                  Base,
814     UINT64                  *RetInteger);
815 
816 
817 /*
818  * asluuid - UUID support
819  */
820 ACPI_STATUS
821 AuValidateUuid (
822     char                    *InString);
823 
824 ACPI_STATUS
825 AuConvertStringToUuid (
826     char                    *InString,
827     char                    *UuIdBuffer);
828 
829 ACPI_STATUS
830 AuConvertUuidToString (
831     char                    *UuIdBuffer,
832     char                    *OutString);
833 
834 /*
835  * aslresource - Resource template generation utilities
836  */
837 void
838 RsSmallAddressCheck (
839     UINT8                   Type,
840     UINT32                  Minimum,
841     UINT32                  Maximum,
842     UINT32                  Length,
843     UINT32                  Alignment,
844     ACPI_PARSE_OBJECT       *MinOp,
845     ACPI_PARSE_OBJECT       *MaxOp,
846     ACPI_PARSE_OBJECT       *LengthOp,
847     ACPI_PARSE_OBJECT       *AlignOp,
848     ACPI_PARSE_OBJECT       *Op);
849 
850 void
851 RsLargeAddressCheck (
852     UINT64                  Minimum,
853     UINT64                  Maximum,
854     UINT64                  Length,
855     UINT64                  Granularity,
856     UINT8                   Flags,
857     ACPI_PARSE_OBJECT       *MinOp,
858     ACPI_PARSE_OBJECT       *MaxOp,
859     ACPI_PARSE_OBJECT       *LengthOp,
860     ACPI_PARSE_OBJECT       *GranOp,
861     ACPI_PARSE_OBJECT       *Op);
862 
863 UINT16
864 RsGetStringDataLength (
865     ACPI_PARSE_OBJECT       *InitializerOp);
866 
867 ASL_RESOURCE_NODE *
868 RsAllocateResourceNode (
869     UINT32                  Size);
870 
871 void
872 RsCreateResourceField (
873     ACPI_PARSE_OBJECT       *Op,
874     char                    *Name,
875     UINT32                  ByteOffset,
876     UINT32                  BitOffset,
877     UINT32                  BitLength);
878 
879 void
880 RsSetFlagBits (
881     UINT8                   *Flags,
882     ACPI_PARSE_OBJECT       *Op,
883     UINT8                   Position,
884     UINT8                   DefaultBit);
885 
886 void
887 RsSetFlagBits16 (
888     UINT16                  *Flags,
889     ACPI_PARSE_OBJECT       *Op,
890     UINT8                   Position,
891     UINT8                   DefaultBit);
892 
893 ACPI_PARSE_OBJECT *
894 RsCompleteNodeAndGetNext (
895     ACPI_PARSE_OBJECT       *Op);
896 
897 void
898 RsCheckListForDuplicates (
899     ACPI_PARSE_OBJECT       *Op);
900 
901 ASL_RESOURCE_NODE *
902 RsDoOneResourceDescriptor (
903     ACPI_PARSE_OBJECT       *DescriptorTypeOp,
904     UINT32                  CurrentByteOffset,
905     UINT8                   *State);
906 
907 /* Values for State above */
908 
909 #define ACPI_RSTATE_NORMAL              0
910 #define ACPI_RSTATE_START_DEPENDENT     1
911 #define ACPI_RSTATE_DEPENDENT_LIST      2
912 
913 UINT32
914 RsLinkDescriptorChain (
915     ASL_RESOURCE_NODE       **PreviousRnode,
916     ASL_RESOURCE_NODE       *Rnode);
917 
918 void
919 RsDoResourceTemplate (
920     ACPI_PARSE_OBJECT       *Op);
921 
922 
923 /*
924  * aslrestype1 - Miscellaneous Small descriptors
925  */
926 ASL_RESOURCE_NODE *
927 RsDoEndTagDescriptor (
928     ACPI_PARSE_OBJECT       *Op,
929     UINT32                  CurrentByteOffset);
930 
931 ASL_RESOURCE_NODE *
932 RsDoEndDependentDescriptor (
933     ACPI_PARSE_OBJECT       *Op,
934     UINT32                  CurrentByteOffset);
935 
936 ASL_RESOURCE_NODE *
937 RsDoMemory24Descriptor (
938     ACPI_PARSE_OBJECT       *Op,
939     UINT32                  CurrentByteOffset);
940 
941 ASL_RESOURCE_NODE *
942 RsDoMemory32Descriptor (
943     ACPI_PARSE_OBJECT       *Op,
944     UINT32                  CurrentByteOffset);
945 
946 ASL_RESOURCE_NODE *
947 RsDoMemory32FixedDescriptor (
948     ACPI_PARSE_OBJECT       *Op,
949     UINT32                  CurrentByteOffset);
950 
951 ASL_RESOURCE_NODE *
952 RsDoStartDependentDescriptor (
953     ACPI_PARSE_OBJECT       *Op,
954     UINT32                  CurrentByteOffset);
955 
956 ASL_RESOURCE_NODE *
957 RsDoStartDependentNoPriDescriptor (
958     ACPI_PARSE_OBJECT       *Op,
959     UINT32                  CurrentByteOffset);
960 
961 ASL_RESOURCE_NODE *
962 RsDoVendorSmallDescriptor (
963     ACPI_PARSE_OBJECT       *Op,
964     UINT32                  CurrentByteOffset);
965 
966 
967 /*
968  * aslrestype1i - I/O-related Small descriptors
969  */
970 ASL_RESOURCE_NODE *
971 RsDoDmaDescriptor (
972     ACPI_PARSE_OBJECT       *Op,
973     UINT32                  CurrentByteOffset);
974 
975 ASL_RESOURCE_NODE *
976 RsDoFixedDmaDescriptor (
977     ACPI_PARSE_OBJECT       *Op,
978     UINT32                  CurrentByteOffset);
979 
980 ASL_RESOURCE_NODE *
981 RsDoFixedIoDescriptor (
982     ACPI_PARSE_OBJECT       *Op,
983     UINT32                  CurrentByteOffset);
984 
985 ASL_RESOURCE_NODE *
986 RsDoIoDescriptor (
987     ACPI_PARSE_OBJECT       *Op,
988     UINT32                  CurrentByteOffset);
989 
990 ASL_RESOURCE_NODE *
991 RsDoIrqDescriptor (
992     ACPI_PARSE_OBJECT       *Op,
993     UINT32                  CurrentByteOffset);
994 
995 ASL_RESOURCE_NODE *
996 RsDoIrqNoFlagsDescriptor (
997     ACPI_PARSE_OBJECT       *Op,
998     UINT32                  CurrentByteOffset);
999 
1000 
1001 /*
1002  * aslrestype2 - Large resource descriptors
1003  */
1004 ASL_RESOURCE_NODE *
1005 RsDoInterruptDescriptor (
1006     ACPI_PARSE_OBJECT       *Op,
1007     UINT32                  CurrentByteOffset);
1008 
1009 ASL_RESOURCE_NODE *
1010 RsDoVendorLargeDescriptor (
1011     ACPI_PARSE_OBJECT       *Op,
1012     UINT32                  CurrentByteOffset);
1013 
1014 ASL_RESOURCE_NODE *
1015 RsDoGeneralRegisterDescriptor (
1016     ACPI_PARSE_OBJECT       *Op,
1017     UINT32                  CurrentByteOffset);
1018 
1019 ASL_RESOURCE_NODE *
1020 RsDoGpioIntDescriptor (
1021     ACPI_PARSE_OBJECT       *Op,
1022     UINT32                  CurrentByteOffset);
1023 
1024 ASL_RESOURCE_NODE *
1025 RsDoGpioIoDescriptor (
1026     ACPI_PARSE_OBJECT       *Op,
1027     UINT32                  CurrentByteOffset);
1028 
1029 ASL_RESOURCE_NODE *
1030 RsDoI2cSerialBusDescriptor (
1031     ACPI_PARSE_OBJECT       *Op,
1032     UINT32                  CurrentByteOffset);
1033 
1034 ASL_RESOURCE_NODE *
1035 RsDoSpiSerialBusDescriptor (
1036     ACPI_PARSE_OBJECT       *Op,
1037     UINT32                  CurrentByteOffset);
1038 
1039 ASL_RESOURCE_NODE *
1040 RsDoUartSerialBusDescriptor (
1041     ACPI_PARSE_OBJECT       *Op,
1042     UINT32                  CurrentByteOffset);
1043 
1044 /*
1045  * aslrestype2d - DWord address descriptors
1046  */
1047 ASL_RESOURCE_NODE *
1048 RsDoDwordIoDescriptor (
1049     ACPI_PARSE_OBJECT       *Op,
1050     UINT32                  CurrentByteOffset);
1051 
1052 ASL_RESOURCE_NODE *
1053 RsDoDwordMemoryDescriptor (
1054     ACPI_PARSE_OBJECT       *Op,
1055     UINT32                  CurrentByteOffset);
1056 
1057 ASL_RESOURCE_NODE *
1058 RsDoDwordSpaceDescriptor (
1059     ACPI_PARSE_OBJECT       *Op,
1060     UINT32                  CurrentByteOffset);
1061 
1062 
1063 /*
1064  * aslrestype2e - Extended address descriptors
1065  */
1066 ASL_RESOURCE_NODE *
1067 RsDoExtendedIoDescriptor (
1068     ACPI_PARSE_OBJECT       *Op,
1069     UINT32                  CurrentByteOffset);
1070 
1071 ASL_RESOURCE_NODE *
1072 RsDoExtendedMemoryDescriptor (
1073     ACPI_PARSE_OBJECT       *Op,
1074     UINT32                  CurrentByteOffset);
1075 
1076 ASL_RESOURCE_NODE *
1077 RsDoExtendedSpaceDescriptor (
1078     ACPI_PARSE_OBJECT       *Op,
1079     UINT32                  CurrentByteOffset);
1080 
1081 
1082 /*
1083  * aslrestype2q - QWord address descriptors
1084  */
1085 ASL_RESOURCE_NODE *
1086 RsDoQwordIoDescriptor (
1087     ACPI_PARSE_OBJECT       *Op,
1088     UINT32                  CurrentByteOffset);
1089 
1090 ASL_RESOURCE_NODE *
1091 RsDoQwordMemoryDescriptor (
1092     ACPI_PARSE_OBJECT       *Op,
1093     UINT32                  CurrentByteOffset);
1094 
1095 ASL_RESOURCE_NODE *
1096 RsDoQwordSpaceDescriptor (
1097     ACPI_PARSE_OBJECT       *Op,
1098     UINT32                  CurrentByteOffset);
1099 
1100 
1101 /*
1102  * aslrestype2w - Word address descriptors
1103  */
1104 ASL_RESOURCE_NODE *
1105 RsDoWordIoDescriptor (
1106     ACPI_PARSE_OBJECT       *Op,
1107     UINT32                  CurrentByteOffset);
1108 
1109 ASL_RESOURCE_NODE *
1110 RsDoWordSpaceDescriptor (
1111     ACPI_PARSE_OBJECT       *Op,
1112     UINT32                  CurrentByteOffset);
1113 
1114 ASL_RESOURCE_NODE *
1115 RsDoWordBusNumberDescriptor (
1116     ACPI_PARSE_OBJECT       *Op,
1117     UINT32                  CurrentByteOffset);
1118 
1119 /*
1120  * Entry to data table compiler subsystem
1121  */
1122 ACPI_STATUS
1123 DtDoCompile(
1124     void);
1125 
1126 ACPI_STATUS
1127 DtCreateTemplates (
1128     char                    *Signature);
1129 
1130 #endif /*  __ASLCOMPILER_H */
1131 
1132