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