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