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