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