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