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