aslcompiler.h revision 218590
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 */
89int
90AslCompilerparse(
91    void);
92
93ACPI_PARSE_OBJECT *
94AslDoError (
95    void);
96
97int
98AslCompilerlex(
99    void);
100
101void
102ResetCurrentLineBuffer (
103    void);
104
105void
106InsertLineBuffer (
107    int                     SourceChar);
108
109int
110AslPopInputFileStack (
111    void);
112
113void
114AslPushInputFileStack (
115    FILE                    *InputFile,
116    char                    *Filename);
117
118/*
119 * aslstartup - entered from main()
120 */
121void
122AslInitializeGlobals (
123    void);
124
125typedef
126ACPI_STATUS (*ASL_PATHNAME_CALLBACK) (
127    char *);
128
129ACPI_STATUS
130AslDoOnePathname (
131    char                    *Pathname,
132    ASL_PATHNAME_CALLBACK   Callback);
133
134ACPI_STATUS
135AslDoOneFile (
136    char                    *Filename);
137
138/*
139 * aslcompile - compile mainline
140 */
141void
142AslCompilerSignon (
143    UINT32                  FileId);
144
145void
146AslCompilerFileHeader (
147    UINT32                  FileId);
148
149int
150CmDoCompile (
151    void);
152
153void
154CmDoOutputFiles (
155    void);
156
157void
158CmCleanupAndExit (
159    void);
160
161ACPI_STATUS
162FlCheckForAscii (
163    ASL_FILE_INFO           *FileInfo);
164
165
166/*
167 * aslwalks - semantic analysis and parse tree walks
168 */
169ACPI_STATUS
170AnOtherSemanticAnalysisWalkBegin (
171    ACPI_PARSE_OBJECT       *Op,
172    UINT32                  Level,
173    void                    *Context);
174
175ACPI_STATUS
176AnOtherSemanticAnalysisWalkEnd (
177    ACPI_PARSE_OBJECT       *Op,
178    UINT32                  Level,
179    void                    *Context);
180
181ACPI_STATUS
182AnOperandTypecheckWalkEnd (
183    ACPI_PARSE_OBJECT       *Op,
184    UINT32                  Level,
185    void                    *Context);
186
187ACPI_STATUS
188AnMethodAnalysisWalkBegin (
189    ACPI_PARSE_OBJECT       *Op,
190    UINT32                  Level,
191    void                    *Context);
192
193ACPI_STATUS
194AnMethodAnalysisWalkEnd (
195    ACPI_PARSE_OBJECT       *Op,
196    UINT32                  Level,
197    void                    *Context);
198
199ACPI_STATUS
200AnMethodTypingWalkEnd (
201    ACPI_PARSE_OBJECT       *Op,
202    UINT32                  Level,
203    void                    *Context);
204
205
206/*
207 * aslbtypes - bitfield data types
208 */
209UINT32
210AnMapObjTypeToBtype (
211    ACPI_PARSE_OBJECT       *Op);
212
213UINT32
214AnMapArgTypeToBtype (
215    UINT32                  ArgType);
216
217UINT32
218AnGetBtype (
219    ACPI_PARSE_OBJECT       *Op);
220
221void
222AnFormatBtype (
223    char                    *Buffer,
224    UINT32                  Btype);
225
226
227/*
228 * aslanalyze - Support functions for parse tree walks
229 */
230void
231AnCheckId (
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
240BOOLEAN
241AnIsInternalMethod (
242    ACPI_PARSE_OBJECT       *Op);
243
244UINT32
245AnGetInternalMethodReturnType (
246    ACPI_PARSE_OBJECT       *Op);
247
248BOOLEAN
249AnLastStatementIsReturn (
250    ACPI_PARSE_OBJECT       *Op);
251
252void
253AnCheckMethodReturnValue (
254    ACPI_PARSE_OBJECT       *Op,
255    const ACPI_OPCODE_INFO  *OpInfo,
256    ACPI_PARSE_OBJECT       *ArgOp,
257    UINT32                  RequiredBtypes,
258    UINT32                  ThisNodeBtype);
259
260BOOLEAN
261AnIsResultUsed (
262    ACPI_PARSE_OBJECT       *Op);
263
264void
265ApCheckForGpeNameConflict (
266    ACPI_PARSE_OBJECT       *Op);
267
268
269/*
270 * aslerror - error handling/reporting
271 */
272void
273AslError (
274    UINT8                   Level,
275    UINT8                   MessageId,
276    ACPI_PARSE_OBJECT       *Op,
277    char                    *ExtraMessage);
278
279void
280AslCoreSubsystemError (
281    ACPI_PARSE_OBJECT       *Op,
282    ACPI_STATUS             Status,
283    char                    *ExtraMessage,
284    BOOLEAN                 Abort);
285
286int
287AslCompilererror(
288    char                    *s);
289
290void
291AslCommonError (
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
301void
302AePrintException (
303    UINT32                  FileId,
304    ASL_ERROR_MSG           *Enode,
305    char                    *Header);
306
307void
308AePrintErrorLog (
309    UINT32                  FileId);
310
311void
312AeClearErrorLog (
313    void);
314
315ACPI_PHYSICAL_ADDRESS
316AeLocalGetRootPointer (
317    void);
318
319
320/*
321 * asllisting - generate all "listing" type files
322 */
323void
324LsDoListings (
325    void);
326
327void
328LsWriteNodeToAsmListing (
329    ACPI_PARSE_OBJECT       *Op);
330
331void
332LsWriteNode (
333    ACPI_PARSE_OBJECT       *Op,
334    UINT32                  FileId);
335
336void
337LsDoHexOutput (
338    void);
339
340void
341LsDumpParseTree (
342    void);
343
344/*
345 * aslfold - constant folding
346 */
347ACPI_STATUS
348OpcAmlConstantWalk (
349    ACPI_PARSE_OBJECT       *Op,
350    UINT32                  Level,
351    void                    *Context);
352
353
354/*
355 * aslopcodes - generate AML opcodes
356 */
357ACPI_STATUS
358OpcAmlOpcodeWalk (
359    ACPI_PARSE_OBJECT       *Op,
360    UINT32                  Level,
361    void                    *Context);
362
363ACPI_STATUS
364OpcAmlOpcodeUpdateWalk (
365    ACPI_PARSE_OBJECT       *Op,
366    UINT32                  Level,
367    void                    *Context);
368
369void
370OpcGenerateAmlOpcode (
371    ACPI_PARSE_OBJECT       *Op);
372
373UINT32
374OpcSetOptimalIntegerSize (
375    ACPI_PARSE_OBJECT       *Op);
376
377void
378OpcGetIntegerWidth (
379    ACPI_PARSE_OBJECT       *Op);
380
381
382/*
383 * asloperands - generate AML operands for the AML opcodes
384 */
385ACPI_PARSE_OBJECT  *
386UtGetArg (
387    ACPI_PARSE_OBJECT       *Op,
388    UINT32                  Argn);
389
390void
391OpnGenerateAmlOperands (
392    ACPI_PARSE_OBJECT       *Op);
393
394void
395OpnDoPackage (
396    ACPI_PARSE_OBJECT       *Op);
397
398
399/*
400 * aslopt - optmization
401 */
402void
403OptOptimizeNamePath (
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 */
414void
415CgGenerateAmlOutput (
416    void);
417
418
419/*
420 * aslfile
421 */
422void
423FlOpenFile (
424    UINT32                  FileId,
425    char                    *Filename,
426    char                    *Mode);
427
428
429/*
430 * asllength - calculate/adjust AML package lengths
431 */
432ACPI_STATUS
433LnPackageLengthWalk (
434    ACPI_PARSE_OBJECT       *Op,
435    UINT32                  Level,
436    void                    *Context);
437
438ACPI_STATUS
439LnInitLengthsWalk (
440    ACPI_PARSE_OBJECT       *Op,
441    UINT32                  Level,
442    void                    *Context);
443
444void
445CgGenerateAmlLengths (
446    ACPI_PARSE_OBJECT       *Op);
447
448
449/*
450 * aslmap - opcode mappings and reserved method names
451 */
452ACPI_OBJECT_TYPE
453AslMapNamedOpcodeToDataType (
454    UINT16                  Opcode);
455
456
457/*
458 * aslpredef - ACPI predefined names support
459 */
460void
461ApCheckForPredefinedMethod (
462    ACPI_PARSE_OBJECT       *Op,
463    ASL_METHOD_INFO         *MethodInfo);
464
465void
466ApCheckPredefinedReturnValue (
467    ACPI_PARSE_OBJECT       *Op,
468    ASL_METHOD_INFO         *MethodInfo);
469
470UINT32
471ApCheckForPredefinedName (
472    ACPI_PARSE_OBJECT       *Op,
473    char                    *Name);
474
475void
476ApCheckForPredefinedObject (
477    ACPI_PARSE_OBJECT       *Op,
478    char                    *Name);
479
480void
481ApDisplayReservedNames (
482    void);
483
484
485/*
486 * asltransform - parse tree transformations
487 */
488ACPI_STATUS
489TrAmlTransformWalk (
490    ACPI_PARSE_OBJECT       *Op,
491    UINT32                  Level,
492    void                    *Context);
493
494
495/*
496 * asltree - parse tree support
497 */
498ACPI_STATUS
499TrWalkParseTree (
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
513ACPI_PARSE_OBJECT *
514TrAllocateNode (
515    UINT32                  ParseOpcode);
516
517void
518TrReleaseNode (
519    ACPI_PARSE_OBJECT       *Op);
520
521ACPI_PARSE_OBJECT *
522TrUpdateNode (
523    UINT32                  ParseOpcode,
524    ACPI_PARSE_OBJECT       *Op);
525
526ACPI_PARSE_OBJECT *
527TrCreateNode (
528    UINT32                  ParseOpcode,
529    UINT32                  NumChildren,
530    ...);
531
532ACPI_PARSE_OBJECT *
533TrCreateLeafNode (
534    UINT32                  ParseOpcode);
535
536ACPI_PARSE_OBJECT *
537TrCreateValuedLeafNode (
538    UINT32                  ParseOpcode,
539    UINT64                  Value);
540
541ACPI_PARSE_OBJECT *
542TrCreateConstantLeafNode (
543    UINT32                  ParseOpcode);
544
545ACPI_PARSE_OBJECT *
546TrLinkChildren (
547    ACPI_PARSE_OBJECT       *Op,
548    UINT32                  NumChildren,
549    ...);
550
551void
552TrSetEndLineNumber (
553    ACPI_PARSE_OBJECT       *Op);
554
555void
556TrWalkTree (
557    void);
558
559ACPI_PARSE_OBJECT *
560TrLinkPeerNode (
561    ACPI_PARSE_OBJECT       *Op1,
562    ACPI_PARSE_OBJECT       *Op2);
563
564ACPI_PARSE_OBJECT *
565TrLinkChildNode (
566    ACPI_PARSE_OBJECT       *Op1,
567    ACPI_PARSE_OBJECT       *Op2);
568
569ACPI_PARSE_OBJECT *
570TrSetNodeFlags (
571    ACPI_PARSE_OBJECT       *Op,
572    UINT32                  Flags);
573
574ACPI_PARSE_OBJECT *
575TrLinkPeerNodes (
576    UINT32                  NumPeers,
577    ...);
578
579
580/*
581 * aslfiles - File I/O support
582 */
583void
584AslAbort (
585    void);
586
587void
588FlAddIncludeDirectory (
589    char                    *Dir);
590
591void
592FlOpenIncludeFile (
593    ACPI_PARSE_OBJECT       *Op);
594
595void
596FlFileError (
597    UINT32                  FileId,
598    UINT8                   ErrorId);
599
600UINT32
601FlGetFileSize (
602    UINT32                  FileId);
603
604ACPI_STATUS
605FlReadFile (
606    UINT32                  FileId,
607    void                    *Buffer,
608    UINT32                  Length);
609
610void
611FlWriteFile (
612    UINT32                  FileId,
613    void                    *Buffer,
614    UINT32                  Length);
615
616void
617FlSeekFile (
618    UINT32                  FileId,
619    long                    Offset);
620
621void
622FlCloseFile (
623    UINT32                  FileId);
624
625void
626FlPrintFile (
627    UINT32                  FileId,
628    char                    *Format,
629    ...);
630
631void
632FlSetLineNumber (
633    ACPI_PARSE_OBJECT       *Op);
634
635ACPI_STATUS
636FlOpenInputFile (
637    char                    *InputFilename);
638
639ACPI_STATUS
640FlOpenAmlOutputFile (
641    char                    *InputFilename);
642
643ACPI_STATUS
644FlOpenMiscOutputFiles (
645    char                    *InputFilename);
646
647
648/*
649 * asload - load namespace in prep for cross reference
650 */
651ACPI_STATUS
652LdLoadNamespace (
653    ACPI_PARSE_OBJECT       *RootOp);
654
655
656/*
657 * asllookup - namespace cross reference
658 */
659ACPI_STATUS
660LkCrossReferenceNamespace (
661    void);
662
663void
664LkFindUnreferencedObjects (
665    void);
666
667ACPI_STATUS
668LsDisplayNamespace (
669    void);
670
671void
672LsSetupNsList (
673    void                    *Handle);
674
675
676/*
677 * aslutils - common compiler utilites
678 */
679void
680DbgPrint (
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
691void
692UtDisplaySupportedTables (
693    void);
694
695void
696UtDisplayConstantOpcodes (
697    void);
698
699UINT8
700UtBeginEvent (
701    char                    *Name);
702
703void
704UtEndEvent (
705    UINT8                   Event);
706
707void *
708UtLocalCalloc (
709    UINT32                  Size);
710
711void
712UtPrintFormattedName (
713    UINT16                  ParseOpcode,
714    UINT32                  Level);
715
716void
717UtDisplaySummary (
718    UINT32                  FileId);
719
720UINT8
721UtHexCharToValue (
722    int                     HexChar);
723
724void
725UtConvertByteToHex (
726    UINT8                   RawByte,
727    UINT8                   *Buffer);
728
729void
730UtConvertByteToAsmHex (
731    UINT8                   RawByte,
732    UINT8                   *Buffer);
733
734char *
735UtGetOpName (
736    UINT32                  ParseOpcode);
737
738void
739UtSetParseOpName (
740    ACPI_PARSE_OBJECT       *Op);
741
742char *
743UtGetStringBuffer (
744    UINT32                  Length);
745
746ACPI_STATUS
747UtInternalizeName (
748    char                    *ExternalName,
749    char                    **ConvertedName);
750
751void
752UtAttachNamepathToOwner (
753    ACPI_PARSE_OBJECT       *Op,
754    ACPI_PARSE_OBJECT       *NameNode);
755
756ACPI_PARSE_OBJECT *
757UtCheckIntegerRange (
758    ACPI_PARSE_OBJECT       *Op,
759    UINT32                  LowValue,
760    UINT32                  HighValue);
761
762UINT64
763UtDoConstant (
764    char                    *String);
765
766/*
767 * asluuid - UUID support
768 */
769ACPI_STATUS
770AuValidateUuid (
771    char                    *InString);
772
773ACPI_STATUS
774AuConvertStringToUuid (
775    char                    *InString,
776    char                    *UuIdBuffer);
777
778ACPI_STATUS
779AuConvertUuidToString (
780    char                    *UuIdBuffer,
781    char                    *OutString);
782
783/*
784 * aslresource - Resource template generation utilities
785 */
786void
787RsSmallAddressCheck (
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
799void
800RsLargeAddressCheck (
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
812UINT16
813RsGetStringDataLength (
814    ACPI_PARSE_OBJECT       *InitializerOp);
815
816ASL_RESOURCE_NODE *
817RsAllocateResourceNode (
818    UINT32                  Size);
819
820void
821RsCreateBitField (
822    ACPI_PARSE_OBJECT       *Op,
823    char                    *Name,
824    UINT32                  ByteOffset,
825    UINT32                  BitOffset);
826
827void
828RsCreateByteField (
829    ACPI_PARSE_OBJECT       *Op,
830    char                    *Name,
831    UINT32                  ByteOffset);
832
833void
834RsSetFlagBits (
835    UINT8                   *Flags,
836    ACPI_PARSE_OBJECT       *Op,
837    UINT8                   Position,
838    UINT8                   DefaultBit);
839
840ACPI_PARSE_OBJECT *
841RsCompleteNodeAndGetNext (
842    ACPI_PARSE_OBJECT       *Op);
843
844void
845RsCheckListForDuplicates (
846    ACPI_PARSE_OBJECT       *Op);
847
848ASL_RESOURCE_NODE *
849RsDoOneResourceDescriptor (
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
860UINT32
861RsLinkDescriptorChain (
862    ASL_RESOURCE_NODE       **PreviousRnode,
863    ASL_RESOURCE_NODE       *Rnode);
864
865void
866RsDoResourceTemplate (
867    ACPI_PARSE_OBJECT       *Op);
868
869
870/*
871 * aslrestype1 - Miscellaneous Small descriptors
872 */
873ASL_RESOURCE_NODE *
874RsDoEndTagDescriptor (
875    ACPI_PARSE_OBJECT       *Op,
876    UINT32                  CurrentByteOffset);
877
878ASL_RESOURCE_NODE *
879RsDoEndDependentDescriptor (
880    ACPI_PARSE_OBJECT       *Op,
881    UINT32                  CurrentByteOffset);
882
883ASL_RESOURCE_NODE *
884RsDoMemory24Descriptor (
885    ACPI_PARSE_OBJECT       *Op,
886    UINT32                  CurrentByteOffset);
887
888ASL_RESOURCE_NODE *
889RsDoMemory32Descriptor (
890    ACPI_PARSE_OBJECT       *Op,
891    UINT32                  CurrentByteOffset);
892
893ASL_RESOURCE_NODE *
894RsDoMemory32FixedDescriptor (
895    ACPI_PARSE_OBJECT       *Op,
896    UINT32                  CurrentByteOffset);
897
898ASL_RESOURCE_NODE *
899RsDoStartDependentDescriptor (
900    ACPI_PARSE_OBJECT       *Op,
901    UINT32                  CurrentByteOffset);
902
903ASL_RESOURCE_NODE *
904RsDoStartDependentNoPriDescriptor (
905    ACPI_PARSE_OBJECT       *Op,
906    UINT32                  CurrentByteOffset);
907
908ASL_RESOURCE_NODE *
909RsDoVendorSmallDescriptor (
910    ACPI_PARSE_OBJECT       *Op,
911    UINT32                  CurrentByteOffset);
912
913
914/*
915 * aslrestype1i - I/O-related Small descriptors
916 */
917ASL_RESOURCE_NODE *
918RsDoDmaDescriptor (
919    ACPI_PARSE_OBJECT       *Op,
920    UINT32                  CurrentByteOffset);
921
922ASL_RESOURCE_NODE *
923RsDoFixedIoDescriptor (
924    ACPI_PARSE_OBJECT       *Op,
925    UINT32                  CurrentByteOffset);
926
927ASL_RESOURCE_NODE *
928RsDoIoDescriptor (
929    ACPI_PARSE_OBJECT       *Op,
930    UINT32                  CurrentByteOffset);
931
932ASL_RESOURCE_NODE *
933RsDoIrqDescriptor (
934    ACPI_PARSE_OBJECT       *Op,
935    UINT32                  CurrentByteOffset);
936
937ASL_RESOURCE_NODE *
938RsDoIrqNoFlagsDescriptor (
939    ACPI_PARSE_OBJECT       *Op,
940    UINT32                  CurrentByteOffset);
941
942
943/*
944 * aslrestype2 - Large resource descriptors
945 */
946ASL_RESOURCE_NODE *
947RsDoInterruptDescriptor (
948    ACPI_PARSE_OBJECT       *Op,
949    UINT32                  CurrentByteOffset);
950
951ASL_RESOURCE_NODE *
952RsDoVendorLargeDescriptor (
953    ACPI_PARSE_OBJECT       *Op,
954    UINT32                  CurrentByteOffset);
955
956ASL_RESOURCE_NODE *
957RsDoGeneralRegisterDescriptor (
958    ACPI_PARSE_OBJECT       *Op,
959    UINT32                  CurrentByteOffset);
960
961
962/*
963 * aslrestype2d - DWord address descriptors
964 */
965ASL_RESOURCE_NODE *
966RsDoDwordIoDescriptor (
967    ACPI_PARSE_OBJECT       *Op,
968    UINT32                  CurrentByteOffset);
969
970ASL_RESOURCE_NODE *
971RsDoDwordMemoryDescriptor (
972    ACPI_PARSE_OBJECT       *Op,
973    UINT32                  CurrentByteOffset);
974
975ASL_RESOURCE_NODE *
976RsDoDwordSpaceDescriptor (
977    ACPI_PARSE_OBJECT       *Op,
978    UINT32                  CurrentByteOffset);
979
980
981/*
982 * aslrestype2e - Extended address descriptors
983 */
984ASL_RESOURCE_NODE *
985RsDoExtendedIoDescriptor (
986    ACPI_PARSE_OBJECT       *Op,
987    UINT32                  CurrentByteOffset);
988
989ASL_RESOURCE_NODE *
990RsDoExtendedMemoryDescriptor (
991    ACPI_PARSE_OBJECT       *Op,
992    UINT32                  CurrentByteOffset);
993
994ASL_RESOURCE_NODE *
995RsDoExtendedSpaceDescriptor (
996    ACPI_PARSE_OBJECT       *Op,
997    UINT32                  CurrentByteOffset);
998
999
1000/*
1001 * aslrestype2q - QWord address descriptors
1002 */
1003ASL_RESOURCE_NODE *
1004RsDoQwordIoDescriptor (
1005    ACPI_PARSE_OBJECT       *Op,
1006    UINT32                  CurrentByteOffset);
1007
1008ASL_RESOURCE_NODE *
1009RsDoQwordMemoryDescriptor (
1010    ACPI_PARSE_OBJECT       *Op,
1011    UINT32                  CurrentByteOffset);
1012
1013ASL_RESOURCE_NODE *
1014RsDoQwordSpaceDescriptor (
1015    ACPI_PARSE_OBJECT       *Op,
1016    UINT32                  CurrentByteOffset);
1017
1018
1019/*
1020 * aslrestype2w - Word address descriptors
1021 */
1022ASL_RESOURCE_NODE *
1023RsDoWordIoDescriptor (
1024    ACPI_PARSE_OBJECT       *Op,
1025    UINT32                  CurrentByteOffset);
1026
1027ASL_RESOURCE_NODE *
1028RsDoWordSpaceDescriptor (
1029    ACPI_PARSE_OBJECT       *Op,
1030    UINT32                  CurrentByteOffset);
1031
1032ASL_RESOURCE_NODE *
1033RsDoWordBusNumberDescriptor (
1034    ACPI_PARSE_OBJECT       *Op,
1035    UINT32                  CurrentByteOffset);
1036
1037/*
1038 * Entry to data table compiler subsystem
1039 */
1040ACPI_STATUS
1041DtDoCompile(
1042    void);
1043
1044ACPI_STATUS
1045DtCreateTemplates (
1046    char                    *Signature);
1047
1048#endif /*  __ASLCOMPILER_H */
1049
1050