aslcompiler.h revision 1.1.1.2.2.2 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