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