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 */
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
832RsCreateBitField (
833    ACPI_PARSE_OBJECT       *Op,
834    char                    *Name,
835    UINT32                  ByteOffset,
836    UINT32                  BitOffset);
837
838void
839RsCreateByteField (
840    ACPI_PARSE_OBJECT       *Op,
841    char                    *Name,
842    UINT32                  ByteOffset);
843
844void
845RsSetFlagBits (
846    UINT8                   *Flags,
847    ACPI_PARSE_OBJECT       *Op,
848    UINT8                   Position,
849    UINT8                   DefaultBit);
850
851ACPI_PARSE_OBJECT *
852RsCompleteNodeAndGetNext (
853    ACPI_PARSE_OBJECT       *Op);
854
855void
856RsCheckListForDuplicates (
857    ACPI_PARSE_OBJECT       *Op);
858
859ASL_RESOURCE_NODE *
860RsDoOneResourceDescriptor (
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
871UINT32
872RsLinkDescriptorChain (
873    ASL_RESOURCE_NODE       **PreviousRnode,
874    ASL_RESOURCE_NODE       *Rnode);
875
876void
877RsDoResourceTemplate (
878    ACPI_PARSE_OBJECT       *Op);
879
880
881/*
882 * aslrestype1 - Miscellaneous Small descriptors
883 */
884ASL_RESOURCE_NODE *
885RsDoEndTagDescriptor (
886    ACPI_PARSE_OBJECT       *Op,
887    UINT32                  CurrentByteOffset);
888
889ASL_RESOURCE_NODE *
890RsDoEndDependentDescriptor (
891    ACPI_PARSE_OBJECT       *Op,
892    UINT32                  CurrentByteOffset);
893
894ASL_RESOURCE_NODE *
895RsDoMemory24Descriptor (
896    ACPI_PARSE_OBJECT       *Op,
897    UINT32                  CurrentByteOffset);
898
899ASL_RESOURCE_NODE *
900RsDoMemory32Descriptor (
901    ACPI_PARSE_OBJECT       *Op,
902    UINT32                  CurrentByteOffset);
903
904ASL_RESOURCE_NODE *
905RsDoMemory32FixedDescriptor (
906    ACPI_PARSE_OBJECT       *Op,
907    UINT32                  CurrentByteOffset);
908
909ASL_RESOURCE_NODE *
910RsDoStartDependentDescriptor (
911    ACPI_PARSE_OBJECT       *Op,
912    UINT32                  CurrentByteOffset);
913
914ASL_RESOURCE_NODE *
915RsDoStartDependentNoPriDescriptor (
916    ACPI_PARSE_OBJECT       *Op,
917    UINT32                  CurrentByteOffset);
918
919ASL_RESOURCE_NODE *
920RsDoVendorSmallDescriptor (
921    ACPI_PARSE_OBJECT       *Op,
922    UINT32                  CurrentByteOffset);
923
924
925/*
926 * aslrestype1i - I/O-related Small descriptors
927 */
928ASL_RESOURCE_NODE *
929RsDoDmaDescriptor (
930    ACPI_PARSE_OBJECT       *Op,
931    UINT32                  CurrentByteOffset);
932
933ASL_RESOURCE_NODE *
934RsDoFixedIoDescriptor (
935    ACPI_PARSE_OBJECT       *Op,
936    UINT32                  CurrentByteOffset);
937
938ASL_RESOURCE_NODE *
939RsDoIoDescriptor (
940    ACPI_PARSE_OBJECT       *Op,
941    UINT32                  CurrentByteOffset);
942
943ASL_RESOURCE_NODE *
944RsDoIrqDescriptor (
945    ACPI_PARSE_OBJECT       *Op,
946    UINT32                  CurrentByteOffset);
947
948ASL_RESOURCE_NODE *
949RsDoIrqNoFlagsDescriptor (
950    ACPI_PARSE_OBJECT       *Op,
951    UINT32                  CurrentByteOffset);
952
953
954/*
955 * aslrestype2 - Large resource descriptors
956 */
957ASL_RESOURCE_NODE *
958RsDoInterruptDescriptor (
959    ACPI_PARSE_OBJECT       *Op,
960    UINT32                  CurrentByteOffset);
961
962ASL_RESOURCE_NODE *
963RsDoVendorLargeDescriptor (
964    ACPI_PARSE_OBJECT       *Op,
965    UINT32                  CurrentByteOffset);
966
967ASL_RESOURCE_NODE *
968RsDoGeneralRegisterDescriptor (
969    ACPI_PARSE_OBJECT       *Op,
970    UINT32                  CurrentByteOffset);
971
972
973/*
974 * aslrestype2d - DWord address descriptors
975 */
976ASL_RESOURCE_NODE *
977RsDoDwordIoDescriptor (
978    ACPI_PARSE_OBJECT       *Op,
979    UINT32                  CurrentByteOffset);
980
981ASL_RESOURCE_NODE *
982RsDoDwordMemoryDescriptor (
983    ACPI_PARSE_OBJECT       *Op,
984    UINT32                  CurrentByteOffset);
985
986ASL_RESOURCE_NODE *
987RsDoDwordSpaceDescriptor (
988    ACPI_PARSE_OBJECT       *Op,
989    UINT32                  CurrentByteOffset);
990
991
992/*
993 * aslrestype2e - Extended address descriptors
994 */
995ASL_RESOURCE_NODE *
996RsDoExtendedIoDescriptor (
997    ACPI_PARSE_OBJECT       *Op,
998    UINT32                  CurrentByteOffset);
999
1000ASL_RESOURCE_NODE *
1001RsDoExtendedMemoryDescriptor (
1002    ACPI_PARSE_OBJECT       *Op,
1003    UINT32                  CurrentByteOffset);
1004
1005ASL_RESOURCE_NODE *
1006RsDoExtendedSpaceDescriptor (
1007    ACPI_PARSE_OBJECT       *Op,
1008    UINT32                  CurrentByteOffset);
1009
1010
1011/*
1012 * aslrestype2q - QWord address descriptors
1013 */
1014ASL_RESOURCE_NODE *
1015RsDoQwordIoDescriptor (
1016    ACPI_PARSE_OBJECT       *Op,
1017    UINT32                  CurrentByteOffset);
1018
1019ASL_RESOURCE_NODE *
1020RsDoQwordMemoryDescriptor (
1021    ACPI_PARSE_OBJECT       *Op,
1022    UINT32                  CurrentByteOffset);
1023
1024ASL_RESOURCE_NODE *
1025RsDoQwordSpaceDescriptor (
1026    ACPI_PARSE_OBJECT       *Op,
1027    UINT32                  CurrentByteOffset);
1028
1029
1030/*
1031 * aslrestype2w - Word address descriptors
1032 */
1033ASL_RESOURCE_NODE *
1034RsDoWordIoDescriptor (
1035    ACPI_PARSE_OBJECT       *Op,
1036    UINT32                  CurrentByteOffset);
1037
1038ASL_RESOURCE_NODE *
1039RsDoWordSpaceDescriptor (
1040    ACPI_PARSE_OBJECT       *Op,
1041    UINT32                  CurrentByteOffset);
1042
1043ASL_RESOURCE_NODE *
1044RsDoWordBusNumberDescriptor (
1045    ACPI_PARSE_OBJECT       *Op,
1046    UINT32                  CurrentByteOffset);
1047
1048/*
1049 * Entry to data table compiler subsystem
1050 */
1051ACPI_STATUS
1052DtDoCompile(
1053    void);
1054
1055ACPI_STATUS
1056DtCreateTemplates (
1057    char                    *Signature);
1058
1059#endif /*  __ASLCOMPILER_H */
1060
1061