xref: /freebsd/sys/contrib/dev/acpica/compiler/aslcompiler.h (revision 19261079b74319502c6ffa1249920079f0f69a72)
1 /******************************************************************************
2  *
3  * Module Name: aslcompiler.h - common include file for iASL
4  *
5  *****************************************************************************/
6 
7 /******************************************************************************
8  *
9  * 1. Copyright Notice
10  *
11  * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp.
12  * All rights reserved.
13  *
14  * 2. License
15  *
16  * 2.1. This is your license from Intel Corp. under its intellectual property
17  * rights. You may have additional license terms from the party that provided
18  * you this software, covering your right to use that party's intellectual
19  * property rights.
20  *
21  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22  * copy of the source code appearing in this file ("Covered Code") an
23  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24  * base code distributed originally by Intel ("Original Intel Code") to copy,
25  * make derivatives, distribute, use and display any portion of the Covered
26  * Code in any form, with the right to sublicense such rights; and
27  *
28  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29  * license (with the right to sublicense), under only those claims of Intel
30  * patents that are infringed by the Original Intel Code, to make, use, sell,
31  * offer to sell, and import the Covered Code and derivative works thereof
32  * solely to the minimum extent necessary to exercise the above copyright
33  * license, and in no event shall the patent license extend to any additions
34  * to or modifications of the Original Intel Code. No other license or right
35  * is granted directly or by implication, estoppel or otherwise;
36  *
37  * The above copyright and patent license is granted only if the following
38  * conditions are met:
39  *
40  * 3. Conditions
41  *
42  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43  * Redistribution of source code of any substantial portion of the Covered
44  * Code or modification with rights to further distribute source must include
45  * the above Copyright Notice, the above License, this list of Conditions,
46  * and the following Disclaimer and Export Compliance provision. In addition,
47  * Licensee must cause all Covered Code to which Licensee contributes to
48  * contain a file documenting the changes Licensee made to create that Covered
49  * Code and the date of any change. Licensee must include in that file the
50  * documentation of any changes made by any predecessor Licensee. Licensee
51  * must include a prominent statement that the modification is derived,
52  * directly or indirectly, from Original Intel Code.
53  *
54  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55  * Redistribution of source code of any substantial portion of the Covered
56  * Code or modification without rights to further distribute source must
57  * include the following Disclaimer and Export Compliance provision in the
58  * documentation and/or other materials provided with distribution. In
59  * addition, Licensee may not authorize further sublicense of source of any
60  * portion of the Covered Code, and must include terms to the effect that the
61  * license from Licensee to its licensee is limited to the intellectual
62  * property embodied in the software Licensee provides to its licensee, and
63  * not to intellectual property embodied in modifications its licensee may
64  * make.
65  *
66  * 3.3. Redistribution of Executable. Redistribution in executable form of any
67  * substantial portion of the Covered Code or modification must reproduce the
68  * above Copyright Notice, and the following Disclaimer and Export Compliance
69  * provision in the documentation and/or other materials provided with the
70  * distribution.
71  *
72  * 3.4. Intel retains all right, title, and interest in and to the Original
73  * Intel Code.
74  *
75  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76  * Intel shall be used in advertising or otherwise to promote the sale, use or
77  * other dealings in products derived from or relating to the Covered Code
78  * without prior written authorization from Intel.
79  *
80  * 4. Disclaimer and Export Compliance
81  *
82  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83  * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
85  * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
86  * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
87  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
88  * PARTICULAR PURPOSE.
89  *
90  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
96  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
97  * LIMITED REMEDY.
98  *
99  * 4.3. Licensee shall not export, either directly or indirectly, any of this
100  * software or system incorporating such software without first obtaining any
101  * required license or other approval from the U. S. Department of Commerce or
102  * any other agency or department of the United States Government. In the
103  * event Licensee exports any such software from the United States or
104  * re-exports any such software from a foreign destination, Licensee shall
105  * ensure that the distribution and export/re-export of the software is in
106  * compliance with all laws, regulations, orders, or other restrictions of the
107  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108  * any of its subsidiaries will export/re-export any technical data, process,
109  * software, or service, directly or indirectly, to any country for which the
110  * United States government or any agency thereof requires an export license,
111  * other governmental approval, or letter of assurance, without first obtaining
112  * such license, approval or letter.
113  *
114  *****************************************************************************
115  *
116  * Alternatively, you may choose to be licensed under the terms of the
117  * following license:
118  *
119  * Redistribution and use in source and binary forms, with or without
120  * modification, are permitted provided that the following conditions
121  * are met:
122  * 1. Redistributions of source code must retain the above copyright
123  *    notice, this list of conditions, and the following disclaimer,
124  *    without modification.
125  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
126  *    substantially similar to the "NO WARRANTY" disclaimer below
127  *    ("Disclaimer") and any redistribution must be conditioned upon
128  *    including a substantially similar Disclaimer requirement for further
129  *    binary redistribution.
130  * 3. Neither the names of the above-listed copyright holders nor the names
131  *    of any contributors may be used to endorse or promote products derived
132  *    from this software without specific prior written permission.
133  *
134  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
135  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
136  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
137  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
138  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
139  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
140  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
141  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
142  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
143  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
144  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
145  *
146  * Alternatively, you may choose to be licensed under the terms of the
147  * GNU General Public License ("GPL") version 2 as published by the Free
148  * Software Foundation.
149  *
150  *****************************************************************************/
151 
152 #ifndef __ASLCOMPILER_H
153 #define __ASLCOMPILER_H
154 
155 #include <contrib/dev/acpica/include/acpi.h>
156 #include <contrib/dev/acpica/include/accommon.h>
157 #include <contrib/dev/acpica/include/amlresrc.h>
158 #include <contrib/dev/acpica/include/acdebug.h>
159 
160 /* Microsoft-specific */
161 
162 #if (defined WIN32 || defined WIN64)
163 
164 /* warn : used #pragma pack */
165 #pragma warning(disable:4103)
166 
167 /* warn : named type definition in parentheses */
168 #pragma warning(disable:4115)
169 #endif
170 
171 #include <stdio.h>
172 #include <stdlib.h>
173 #include <string.h>
174 #include <errno.h>
175 #include <ctype.h>
176 
177 /* Compiler headers */
178 
179 #include <contrib/dev/acpica/compiler/asldefine.h>
180 #include <contrib/dev/acpica/compiler/asltypes.h>
181 #include <contrib/dev/acpica/compiler/aslmessages.h>
182 #include <contrib/dev/acpica/compiler/aslglobal.h>
183 #include <contrib/dev/acpica/compiler/preprocess.h>
184 #include <contrib/dev/acpica/compiler/dtcompiler.h>
185 
186 
187 /*******************************************************************************
188  *
189  * Compiler prototypes
190  *
191  ******************************************************************************/
192 
193 /*
194  * Main ASL parser - generated from flex/bison, lex/yacc, etc.
195  */
196 ACPI_PARSE_OBJECT *
197 AslDoError (
198     void);
199 
200 int
201 AslCompilerlex(
202     void);
203 
204 void
205 AslResetCurrentLineBuffer (
206     void);
207 
208 void
209 AslInsertLineBuffer (
210     int                     SourceChar);
211 
212 int
213 AslPopInputFileStack (
214     void);
215 
216 void
217 AslPushInputFileStack (
218     FILE                    *InputFile,
219     char                    *Filename);
220 
221 void
222 AslParserCleanup (
223     void);
224 
225 
226 /*
227  * aslstartup - entered from main()
228  */
229 void
230 AslInitializeGlobals (
231     void);
232 
233 typedef
234 ACPI_STATUS (*ASL_PATHNAME_CALLBACK) (
235     char *);
236 
237 ACPI_STATUS
238 AslDoOneFile (
239     char                    *Filename);
240 
241 ACPI_STATUS
242 AslCheckForErrorExit (
243     void);
244 
245 
246 /*
247  * aslcompile - compile mainline
248  */
249 void
250 AslCompilerSignon (
251     UINT32                  FileId);
252 
253 void
254 AslCompilerFileHeader (
255     UINT32                  FileId);
256 
257 ACPI_STATUS
258 CmDoCompile (
259     void);
260 
261 int
262 CmDoAslMiddleAndBackEnd (
263     void);
264 
265 void
266 CmDoOutputFiles (
267     void);
268 
269 int
270 CmCleanupAndExit (
271     void);
272 
273 ACPI_STATUS
274 AslDoDisassembly (
275     void);
276 
277 
278 /*
279  * aslallocate - memory allocation
280  */
281 void *
282 UtLocalCalloc (
283     UINT32                  Size);
284 
285 void
286 UtExpandLineBuffers (
287     void);
288 
289 void
290 UtReallocLineBuffers (
291     char                    **Buffer,
292     UINT32                  OldSize,
293     UINT32                  NewSize);
294 
295 void
296 UtFreeLineBuffers (
297     void);
298 
299 
300 /*
301  * aslcache - local cache support
302  */
303 char *
304 UtLocalCacheCalloc (
305     UINT32                  Length);
306 
307 ACPI_PARSE_OBJECT *
308 UtParseOpCacheCalloc (
309     void);
310 
311 DT_SUBTABLE *
312 UtSubtableCacheCalloc (
313     void);
314 
315 DT_FIELD *
316 UtFieldCacheCalloc (
317     void);
318 
319 void
320 UtDeleteLocalCaches (
321     void);
322 
323 
324 /*
325  * aslascii - ascii support
326  */
327 ACPI_STATUS
328 FlIsFileAsciiSource (
329     char                    *Filename,
330     BOOLEAN                 DisplayErrors);
331 
332 
333 /*
334  * aslwalks - semantic analysis and parse tree walks
335  */
336 ACPI_STATUS
337 AnOtherSemanticAnalysisWalkBegin (
338     ACPI_PARSE_OBJECT       *Op,
339     UINT32                  Level,
340     void                    *Context);
341 
342 ACPI_STATUS
343 AnOtherSemanticAnalysisWalkEnd (
344     ACPI_PARSE_OBJECT       *Op,
345     UINT32                  Level,
346     void                    *Context);
347 
348 ACPI_STATUS
349 AnOperandTypecheckWalkEnd (
350     ACPI_PARSE_OBJECT       *Op,
351     UINT32                  Level,
352     void                    *Context);
353 
354 ACPI_STATUS
355 AnMethodTypingWalkEnd (
356     ACPI_PARSE_OBJECT       *Op,
357     UINT32                  Level,
358     void                    *Context);
359 
360 
361 /*
362  * aslmethod - Control method analysis walk
363  */
364 ACPI_STATUS
365 MtMethodAnalysisWalkBegin (
366     ACPI_PARSE_OBJECT       *Op,
367     UINT32                  Level,
368     void                    *Context);
369 
370 ACPI_STATUS
371 MtMethodAnalysisWalkEnd (
372     ACPI_PARSE_OBJECT       *Op,
373     UINT32                  Level,
374     void                    *Context);
375 
376 UINT32
377 MtProcessTypeOp (
378     ACPI_PARSE_OBJECT       *TypeOp);
379 
380 UINT8
381 MtProcessParameterTypeList (
382     ACPI_PARSE_OBJECT       *ParamTypeOp,
383     UINT32                  *TypeList);
384 
385 
386 /*
387  * aslbtypes - bitfield data types
388  */
389 UINT32
390 AnMapObjTypeToBtype (
391     ACPI_PARSE_OBJECT       *Op);
392 
393 UINT32
394 AnMapArgTypeToBtype (
395     UINT32                  ArgType);
396 
397 UINT32
398 AnGetBtype (
399     ACPI_PARSE_OBJECT       *Op);
400 
401 void
402 AnFormatBtype (
403     char                    *Buffer,
404     UINT32                  Btype);
405 
406 
407 /*
408  * aslanalyze - Support functions for parse tree walks
409  */
410 void
411 AnCheckId (
412     ACPI_PARSE_OBJECT       *Op,
413     ACPI_NAME               Type);
414 
415 /* Values for Type argument above */
416 
417 #define ASL_TYPE_HID        0
418 #define ASL_TYPE_CID        1
419 
420 BOOLEAN
421 AnIsInternalMethod (
422     ACPI_PARSE_OBJECT       *Op);
423 
424 UINT32
425 AnGetInternalMethodReturnType (
426     ACPI_PARSE_OBJECT       *Op);
427 
428 BOOLEAN
429 AnLastStatementIsReturn (
430     ACPI_PARSE_OBJECT       *Op);
431 
432 void
433 AnCheckMethodReturnValue (
434     ACPI_PARSE_OBJECT       *Op,
435     const ACPI_OPCODE_INFO  *OpInfo,
436     ACPI_PARSE_OBJECT       *ArgOp,
437     UINT32                  RequiredBtypes,
438     UINT32                  ThisNodeBtype);
439 
440 BOOLEAN
441 AnIsResultUsed (
442     ACPI_PARSE_OBJECT       *Op);
443 
444 void
445 ApCheckForGpeNameConflict (
446     ACPI_PARSE_OBJECT       *Op);
447 
448 void
449 ApCheckRegMethod (
450     ACPI_PARSE_OBJECT       *Op);
451 
452 BOOLEAN
453 ApFindNameInScope (
454     char                    *Name,
455     ACPI_PARSE_OBJECT       *Op);
456 
457 BOOLEAN
458 ApFindNameInDeviceTree (
459     char                    *Name,
460     ACPI_PARSE_OBJECT       *Op);
461 
462 /*
463  * aslerror - error handling/reporting
464  */
465 void
466 AslAbort (
467     void);
468 
469 void
470 AslDualParseOpError (
471     UINT8                   Level,
472     UINT16                  MainMessageId,
473     ACPI_PARSE_OBJECT       *MainOp,
474     char                    *MainMessage,
475     UINT16                  SecondMessageId,
476     ACPI_PARSE_OBJECT       *SecondOp,
477     char                    *SecondaryMessage);
478 
479 void
480 AslError (
481     UINT8                   Level,
482     UINT16                  MessageId,
483     ACPI_PARSE_OBJECT       *Op,
484     char                    *ExtraMessage);
485 
486 void
487 AslCheckExpectedExceptions (
488     void);
489 
490 ACPI_STATUS
491 AslLogExpectedException (
492     char                    *MessageIdString);
493 
494 ACPI_STATUS
495 AslElevateException (
496     char                    *MessageIdString);
497 
498 ACPI_STATUS
499 AslDisableException (
500     char                    *MessageIdString);
501 
502 BOOLEAN
503 AslIsExceptionIgnored (
504     char                    *Filename,
505     UINT32                  LineNumber,
506     UINT8                   Level,
507     UINT16                  MessageId);
508 
509 void
510 AslLogExpectedExceptionByLine (
511     char                    *MessageIdString);
512 
513 void
514 AslCoreSubsystemError (
515     ACPI_PARSE_OBJECT       *Op,
516     ACPI_STATUS             Status,
517     char                    *ExtraMessage,
518     BOOLEAN                 Abort);
519 
520 int
521 AslCompilererror(
522     const char              *s);
523 
524 void
525 AslCommonError (
526     UINT8                   Level,
527     UINT16                  MessageId,
528     UINT32                  CurrentLineNumber,
529     UINT32                  LogicalLineNumber,
530     UINT32                  LogicalByteOffset,
531     UINT32                  Column,
532     char                    *Filename,
533     char                    *ExtraMessage);
534 
535 void
536 AslCommonError2 (
537     UINT8                   Level,
538     UINT16                  MessageId,
539     UINT32                  LineNumber,
540     UINT32                  Column,
541     char                    *SourceLine,
542     char                    *Filename,
543     char                    *ExtraMessage);
544 
545 void
546 AePrintException (
547     UINT32                  FileId,
548     ASL_ERROR_MSG           *Enode,
549     char                    *Header);
550 
551 void
552 AePrintErrorLog (
553     UINT32                  FileId);
554 
555 void
556 AeClearErrorLog (
557     void);
558 
559 
560 /*
561  * asllisting - generate all "listing" type files
562  */
563 void
564 LsDoListings (
565     void);
566 
567 void
568 LsWriteNodeToAsmListing (
569     ACPI_PARSE_OBJECT       *Op);
570 
571 void
572 LsWriteNode (
573     ACPI_PARSE_OBJECT       *Op,
574     UINT32                  FileId);
575 
576 void
577 LsDumpParseTree (
578     void);
579 
580 
581 /*
582  * asllistsup - Listing file support utilities
583  */
584 void
585 LsDumpAscii (
586     UINT32                  FileId,
587     UINT32                  Count,
588     UINT8                   *Buffer);
589 
590 void
591 LsDumpAsciiInComment (
592     UINT32                  FileId,
593     UINT32                  Count,
594     UINT8                   *Buffer);
595 
596 void
597 LsCheckException (
598     UINT32                  LineNumber,
599     UINT32                  FileId);
600 
601 void
602 LsFlushListingBuffer (
603     UINT32                  FileId);
604 
605 void
606 LsWriteListingHexBytes (
607     UINT8                   *Buffer,
608     UINT32                  Length,
609     UINT32                  FileId);
610 
611 void
612 LsWriteSourceLines (
613     UINT32                  ToLineNumber,
614     UINT32                  ToLogicalLineNumber,
615     UINT32                  FileId);
616 
617 UINT32
618 LsWriteOneSourceLine (
619     UINT32                  FileId);
620 
621 void
622 LsPushNode (
623     char                    *Filename);
624 
625 ASL_LISTING_NODE *
626 LsPopNode (
627     void);
628 
629 
630 /*
631  * aslhex - generate all "hex" output files (C, ASM, ASL)
632  */
633 void
634 HxDoHexOutput (
635     void);
636 
637 
638 /*
639  * aslfold - constant folding
640  */
641 ACPI_STATUS
642 OpcAmlConstantWalk (
643     ACPI_PARSE_OBJECT       *Op,
644     UINT32                  Level,
645     void                    *Context);
646 
647 
648 /*
649  * aslmessages - exception strings
650  */
651 const char *
652 AeDecodeMessageId (
653     UINT16                  MessageId);
654 
655 const char *
656 AeDecodeExceptionLevel (
657     UINT8                   Level);
658 
659 UINT16
660 AeBuildFullExceptionCode (
661     UINT8                   Level,
662     UINT16                  MessageId);
663 
664 /*
665  * asloffset - generate C offset file for BIOS support
666  */
667 ACPI_STATUS
668 LsAmlOffsetWalk (
669     ACPI_PARSE_OBJECT       *Op,
670     UINT32                  Level,
671     void                    *Context);
672 
673 void
674 LsDoOffsetTableHeader (
675     UINT32                  FileId);
676 
677 void
678 LsDoOffsetTableFooter (
679     UINT32                  FileId);
680 
681 
682 /*
683  * aslopcodes - generate AML opcodes
684  */
685 ACPI_STATUS
686 OpcAmlOpcodeWalk (
687     ACPI_PARSE_OBJECT       *Op,
688     UINT32                  Level,
689     void                    *Context);
690 
691 ACPI_STATUS
692 OpcAmlOpcodeUpdateWalk (
693     ACPI_PARSE_OBJECT       *Op,
694     UINT32                  Level,
695     void                    *Context);
696 
697 void
698 OpcGenerateAmlOpcode (
699     ACPI_PARSE_OBJECT       *Op);
700 
701 UINT32
702 OpcSetOptimalIntegerSize (
703     ACPI_PARSE_OBJECT       *Op);
704 
705 void
706 OpcGetIntegerWidth (
707     ACPI_PARSE_OBJECT       *Op);
708 
709 
710 /*
711  * asloperands - generate AML operands for the AML opcodes
712  */
713 ACPI_PARSE_OBJECT  *
714 UtGetArg (
715     ACPI_PARSE_OBJECT       *Op,
716     UINT32                  Argn);
717 
718 void
719 OpnGenerateAmlOperands (
720     ACPI_PARSE_OBJECT       *Op);
721 
722 void
723 OpnDoPackage (
724     ACPI_PARSE_OBJECT       *Op);
725 
726 
727 /*
728  * aslopt - optimization
729  */
730 void
731 OptOptimizeNamePath (
732     ACPI_PARSE_OBJECT       *Op,
733     UINT32                  Flags,
734     ACPI_WALK_STATE         *WalkState,
735     char                    *AmlNameString,
736     ACPI_NAMESPACE_NODE     *TargetNode);
737 
738 
739 /*
740  * aslpld - ToPLD macro support
741  */
742 void
743 OpcDoPld (
744     ACPI_PARSE_OBJECT       *Op);
745 
746 
747 /*
748  * aslprintf - Printf/Fprintf macros
749  */
750 void
751 OpcDoPrintf (
752     ACPI_PARSE_OBJECT       *Op);
753 
754 void
755 OpcDoFprintf (
756     ACPI_PARSE_OBJECT       *Op);
757 
758 
759 /*
760  * aslprune - parse tree pruner
761  */
762 void
763 AslPruneParseTree (
764     UINT32                  PruneDepth,
765     UINT32                  Type);
766 
767 
768 /*
769  * aslcodegen - code generation
770  */
771 void
772 CgGenerateAmlOutput (
773     void);
774 
775 void
776 CgLocalWriteAmlData (
777     ACPI_PARSE_OBJECT       *Op,
778     void                    *Buffer,
779     UINT32                  Length);
780 
781 
782 /*
783  * aslfile
784  */
785 void
786 FlOpenFile (
787     UINT32                  FileId,
788     char                    *Filename,
789     char                    *Mode);
790 
791 
792 /*
793  * asllength - calculate/adjust AML package lengths
794  */
795 ACPI_STATUS
796 LnPackageLengthWalk (
797     ACPI_PARSE_OBJECT       *Op,
798     UINT32                  Level,
799     void                    *Context);
800 
801 ACPI_STATUS
802 LnInitLengthsWalk (
803     ACPI_PARSE_OBJECT       *Op,
804     UINT32                  Level,
805     void                    *Context);
806 
807 void
808 CgGenerateAmlLengths (
809     ACPI_PARSE_OBJECT       *Op);
810 
811 
812 /*
813  * aslmap - opcode mappings and reserved method names
814  */
815 ACPI_OBJECT_TYPE
816 AslMapNamedOpcodeToDataType (
817     UINT16                  Opcode);
818 
819 
820 /*
821  * aslpredef - ACPI predefined names support
822  */
823 BOOLEAN
824 ApCheckForPredefinedMethod (
825     ACPI_PARSE_OBJECT       *Op,
826     ASL_METHOD_INFO         *MethodInfo);
827 
828 void
829 ApCheckPredefinedReturnValue (
830     ACPI_PARSE_OBJECT       *Op,
831     ASL_METHOD_INFO         *MethodInfo);
832 
833 UINT32
834 ApCheckForPredefinedName (
835     ACPI_PARSE_OBJECT       *Op,
836     char                    *Name);
837 
838 void
839 ApCheckForPredefinedObject (
840     ACPI_PARSE_OBJECT       *Op,
841     char                    *Name);
842 
843 ACPI_STATUS
844 ApCheckObjectType (
845     const char              *PredefinedName,
846     ACPI_PARSE_OBJECT       *Op,
847     UINT32                  ExpectedBtypes,
848     UINT32                  PackageIndex);
849 
850 void
851 ApDisplayReservedNames (
852     void);
853 
854 
855 /*
856  * aslprepkg - ACPI predefined names support for packages
857  */
858 void
859 ApCheckPackage (
860     ACPI_PARSE_OBJECT           *ParentOp,
861     const ACPI_PREDEFINED_INFO  *Predefined);
862 
863 
864 /*
865  * asltransform - parse tree transformations
866  */
867 ACPI_STATUS
868 TrAmlTransformWalkBegin (
869     ACPI_PARSE_OBJECT       *Op,
870     UINT32                  Level,
871     void                    *Context);
872 
873 ACPI_STATUS
874 TrAmlTransformWalkEnd (
875     ACPI_PARSE_OBJECT       *Op,
876     UINT32                  Level,
877     void                    *Context);
878 
879 
880 /*
881  * aslexternal - External opcode support
882  */
883 ACPI_STATUS
884 ExAmlExternalWalkBegin (
885     ACPI_PARSE_OBJECT       *Op,
886     UINT32                  Level,
887     void                    *Context);
888 
889 ACPI_STATUS
890 ExAmlExternalWalkEnd (
891     ACPI_PARSE_OBJECT       *Op,
892     UINT32                  Level,
893     void                    *Context);
894 
895 void
896 ExDoExternal (
897     ACPI_PARSE_OBJECT       *Op);
898 
899 /* Values for "Visitation" parameter above */
900 
901 #define ASL_WALK_VISIT_DOWNWARD         0x01
902 #define ASL_WALK_VISIT_UPWARD           0x02
903 #define ASL_WALK_VISIT_DB_SEPARATELY    0x04
904 #define ASL_WALK_VISIT_TWICE            (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD)
905 
906 
907 /*
908  * aslparseop.c - Parse op create/allocate/cache
909  */
910 ACPI_PARSE_OBJECT *
911 TrCreateOp (
912     UINT32                  ParseOpcode,
913     UINT32                  NumChildren,
914     ...);
915 
916 ACPI_PARSE_OBJECT *
917 TrCreateLeafOp (
918     UINT32                  ParseOpcode);
919 
920 ACPI_PARSE_OBJECT *
921 TrCreateNullTargetOp (
922     void);
923 
924 ACPI_PARSE_OBJECT *
925 TrCreateAssignmentOp (
926     ACPI_PARSE_OBJECT       *Target,
927     ACPI_PARSE_OBJECT       *Source);
928 
929 ACPI_PARSE_OBJECT *
930 TrCreateTargetOp (
931     ACPI_PARSE_OBJECT       *OriginalOp,
932     ACPI_PARSE_OBJECT       *ParentOp);
933 
934 ACPI_PARSE_OBJECT *
935 TrCreateValuedLeafOp (
936     UINT32                  ParseOpcode,
937     UINT64                  Value);
938 
939 ACPI_PARSE_OBJECT *
940 TrCreateConstantLeafOp (
941     UINT32                  ParseOpcode);
942 
943 ACPI_PARSE_OBJECT *
944 TrAllocateOp (
945     UINT32                  ParseOpcode);
946 
947 void
948 TrPrintOpFlags (
949     UINT32                  Flags,
950     UINT32                  OutputLevel);
951 
952 
953 /*
954  * asltree.c - Parse tree management
955  */
956 void
957 TrSetOpParent (
958     ACPI_PARSE_OBJECT       *Op,
959     ACPI_PARSE_OBJECT       *ParentOp);
960 
961 ACPI_PARSE_OBJECT *
962 TrSetOpIntegerValue (
963     UINT32                  ParseOpcode,
964     ACPI_PARSE_OBJECT       *Op);
965 
966 void
967 TrSetOpEndLineNumber (
968     ACPI_PARSE_OBJECT       *Op);
969 
970 void
971 TrSetOpCurrentFilename (
972     ACPI_PARSE_OBJECT       *Op);
973 
974 void
975 TrSetOpIntegerWidth (
976     ACPI_PARSE_OBJECT       *TableSignature,
977     ACPI_PARSE_OBJECT       *Revision);
978 
979 ACPI_PARSE_OBJECT *
980 TrLinkOpChildren (
981     ACPI_PARSE_OBJECT       *Op,
982     UINT32                  NumChildren,
983     ...);
984 
985 ACPI_PARSE_OBJECT *
986 TrLinkPeerOp (
987     ACPI_PARSE_OBJECT       *Op1,
988     ACPI_PARSE_OBJECT       *Op2);
989 
990 ACPI_PARSE_OBJECT *
991 TrLinkChildOp (
992     ACPI_PARSE_OBJECT       *Op1,
993     ACPI_PARSE_OBJECT       *Op2);
994 
995 ACPI_PARSE_OBJECT *
996 TrSetOpFlags (
997     ACPI_PARSE_OBJECT       *Op,
998     UINT32                  Flags);
999 
1000 ACPI_PARSE_OBJECT *
1001 TrSetOpAmlLength (
1002     ACPI_PARSE_OBJECT       *Op,
1003     UINT32                  Length);
1004 
1005 ACPI_PARSE_OBJECT *
1006 TrLinkPeerOps (
1007     UINT32                  NumPeers,
1008     ...);
1009 
1010 ACPI_STATUS
1011 TrWalkParseTree (
1012     ACPI_PARSE_OBJECT       *Op,
1013     UINT32                  Visitation,
1014     ASL_WALK_CALLBACK       DescendingCallback,
1015     ASL_WALK_CALLBACK       AscendingCallback,
1016     void                    *Context);
1017 
1018 
1019 /*
1020  * aslfiles - File I/O support
1021  */
1022 void
1023 FlAddIncludeDirectory (
1024     char                    *Dir);
1025 
1026 char *
1027 FlMergePathnames (
1028     char                    *PrefixDir,
1029     char                    *FilePathname);
1030 
1031 void
1032 FlOpenIncludeFile (
1033     ACPI_PARSE_OBJECT       *Op);
1034 
1035 void
1036 FlFileError (
1037     UINT32                  FileId,
1038     UINT8                   ErrorId);
1039 
1040 UINT32
1041 FlGetFileSize (
1042     UINT32                  FileId);
1043 
1044 ACPI_STATUS
1045 FlReadFile (
1046     UINT32                  FileId,
1047     void                    *Buffer,
1048     UINT32                  Length);
1049 
1050 void
1051 FlWriteFile (
1052     UINT32                  FileId,
1053     void                    *Buffer,
1054     UINT32                  Length);
1055 
1056 void
1057 FlSeekFile (
1058     UINT32                  FileId,
1059     long                    Offset);
1060 
1061 void
1062 FlSeekFileSet (
1063     UINT32                  FileId,
1064     long                    Offset);
1065 
1066 void
1067 FlCloseFile (
1068     UINT32                  FileId);
1069 
1070 ACPI_PRINTF_LIKE (2)
1071 void
1072 FlPrintFile (
1073     UINT32                  FileId,
1074     char                    *Format,
1075     ...);
1076 
1077 void
1078 FlDeleteFile (
1079     UINT32                  FileId);
1080 
1081 void
1082 FlSetLineNumber (
1083     UINT32                  LineNumber);
1084 
1085 void
1086 FlSetFilename (
1087     char                    *Filename);
1088 
1089 ACPI_STATUS
1090 FlOpenInputFile (
1091     char                    *InputFilename);
1092 
1093 ACPI_STATUS
1094 FlOpenAmlOutputFile (
1095     char                    *InputFilename);
1096 
1097 ACPI_STATUS
1098 FlOpenMiscOutputFiles (
1099     char                    *InputFilename);
1100 
1101 ACPI_STATUS
1102 FlInitOneFile (
1103     char                    *InputFilename);
1104 
1105 ASL_FILE_SWITCH_STATUS
1106 FlSwitchFileSet (
1107     char                    *InputFilename);
1108 
1109 FILE *
1110 FlGetFileHandle (
1111     UINT32                  OutFileId,
1112     UINT32                  InFileId,
1113     char                    *Filename);
1114 
1115 ASL_GLOBAL_FILE_NODE *
1116 FlGetFileNode (
1117     UINT32                  FileId,
1118     char                    *Filename);
1119 
1120 ASL_GLOBAL_FILE_NODE *
1121 FlGetCurrentFileNode (
1122     void);
1123 
1124 
1125 /*
1126  * aslhwmap - hardware map summary
1127  */
1128 void
1129 MpEmitMappingInfo (
1130     void);
1131 
1132 
1133 /*
1134  * asload - load namespace in prep for cross reference
1135  */
1136 ACPI_STATUS
1137 LdLoadNamespace (
1138     ACPI_PARSE_OBJECT       *RootOp);
1139 
1140 /*
1141  * asllookup - namespace lookup functions
1142  */
1143 void
1144 LkFindUnreferencedObjects (
1145     void);
1146 
1147 
1148 /*
1149  * aslhelp - help screens
1150  */
1151 void
1152 Usage (
1153     void);
1154 
1155 void
1156 AslFilenameHelp (
1157     void);
1158 
1159 void
1160 AslDisassemblyHelp (
1161     void);
1162 
1163 
1164 /*
1165  * aslnamesp - namespace output file generation
1166  */
1167 ACPI_STATUS
1168 NsDisplayNamespace (
1169     void);
1170 
1171 void
1172 NsSetupNamespaceListing (
1173     void                    *Handle);
1174 
1175 
1176 /*
1177  * asloptions - command line processing
1178  */
1179 int
1180 AslCommandLine (
1181     int                     argc,
1182     char                    **argv);
1183 
1184 
1185 /*
1186  * aslxref - namespace cross reference
1187  */
1188 ACPI_STATUS
1189 XfCrossReferenceNamespace (
1190     void);
1191 
1192 
1193 /*
1194  * aslxrefout
1195  */
1196 void
1197 OtPrintHeaders (
1198     char                    *Message);
1199 
1200 void
1201 OtCreateXrefFile (
1202     void);
1203 
1204 void
1205 OtXrefWalkPart1 (
1206     ACPI_PARSE_OBJECT       *Op,
1207     UINT32                  Level,
1208     ASL_METHOD_INFO         *MethodInfo);
1209 
1210 
1211 /*
1212  * aslutils - common compiler utilities
1213  */
1214 ACPI_PRINTF_LIKE(2)
1215 void
1216 DbgPrint (
1217     UINT32                  Type,
1218     char                    *Format,
1219     ...);
1220 
1221 /* Type values for above */
1222 
1223 #define ASL_DEBUG_OUTPUT    0
1224 #define ASL_PARSE_OUTPUT    1
1225 #define ASL_TREE_OUTPUT     2
1226 
1227 BOOLEAN
1228 UtIsIdInteger (
1229     UINT8                   *Target);
1230 
1231 UINT8
1232 UtIsBigEndianMachine (
1233     void);
1234 
1235 BOOLEAN
1236 UtQueryForOverwrite (
1237     char                    *Pathname);
1238 
1239 void
1240 UtDumpStringOp (
1241     ACPI_PARSE_OBJECT       *Op,
1242     UINT32                  Level);
1243 
1244 void
1245 UtDumpIntegerOp (
1246     ACPI_PARSE_OBJECT       *Op,
1247     UINT32                  Level,
1248     UINT32                  IntegerLength);
1249 
1250 void
1251 UtDumpBasicOp (
1252     ACPI_PARSE_OBJECT       *Op,
1253     UINT32                  Level);
1254 
1255 ACPI_NAMESPACE_NODE *
1256 UtGetParentMethodNode (
1257     ACPI_NAMESPACE_NODE     *Node);
1258 
1259 ACPI_PARSE_OBJECT *
1260 UtGetParentMethodOp (
1261     ACPI_PARSE_OBJECT       *Op);
1262 
1263 BOOLEAN
1264 UtNodeIsDescendantOf (
1265     ACPI_NAMESPACE_NODE     *Node1,
1266     ACPI_NAMESPACE_NODE     *Node2);
1267 
1268 void
1269 UtDisplaySupportedTables (
1270     void);
1271 
1272 void
1273 UtDisplayConstantOpcodes (
1274     void);
1275 
1276 UINT8
1277 UtBeginEvent (
1278     char                    *Name);
1279 
1280 void
1281 UtEndEvent (
1282     UINT8                   Event);
1283 
1284 void
1285 UtDisplaySummary (
1286     UINT32                  FileId);
1287 
1288 void
1289 UtDisplayOneSummary (
1290     UINT32                  FileId,
1291     BOOLEAN                 DisplayErrorSummary);
1292 
1293 void
1294 UtConvertByteToHex (
1295     UINT8                   RawByte,
1296     UINT8                   *Buffer);
1297 
1298 void
1299 UtConvertByteToAsmHex (
1300     UINT8                   RawByte,
1301     UINT8                   *Buffer);
1302 
1303 char *
1304 UtGetOpName (
1305     UINT32                  ParseOpcode);
1306 
1307 void
1308 UtSetParseOpName (
1309     ACPI_PARSE_OBJECT       *Op);
1310 
1311 ACPI_STATUS
1312 UtInternalizeName (
1313     char                    *ExternalName,
1314     char                    **ConvertedName);
1315 
1316 BOOLEAN
1317 UtNameContainsAllPrefix (
1318     ACPI_PARSE_OBJECT       *Op);
1319 
1320 void
1321 UtAttachNamepathToOwner (
1322     ACPI_PARSE_OBJECT       *Op,
1323     ACPI_PARSE_OBJECT       *NameNode);
1324 
1325 ACPI_PARSE_OBJECT *
1326 UtCheckIntegerRange (
1327     ACPI_PARSE_OBJECT       *Op,
1328     UINT32                  LowValue,
1329     UINT32                  HighValue);
1330 
1331 UINT64
1332 UtDoConstant (
1333     char                    *String);
1334 
1335 char *
1336 AcpiUtStrdup (
1337     char                    *String);
1338 
1339 char *
1340 AcpiUtStrcat (
1341     char                    *String1,
1342     char                    *String2);
1343 
1344 
1345 /*
1346  * asluuid - UUID support
1347  */
1348 ACPI_STATUS
1349 AuValidateUuid (
1350     char                    *InString);
1351 
1352 ACPI_STATUS
1353 AuConvertUuidToString (
1354     char                    *UuIdBuffer,
1355     char                    *OutString);
1356 
1357 
1358 /*
1359  * aslresource - Resource template generation utilities
1360  */
1361 void
1362 RsSmallAddressCheck (
1363     UINT8                   Type,
1364     UINT32                  Minimum,
1365     UINT32                  Maximum,
1366     UINT32                  Length,
1367     UINT32                  Alignment,
1368     ACPI_PARSE_OBJECT       *MinOp,
1369     ACPI_PARSE_OBJECT       *MaxOp,
1370     ACPI_PARSE_OBJECT       *LengthOp,
1371     ACPI_PARSE_OBJECT       *AlignOp,
1372     ACPI_PARSE_OBJECT       *Op);
1373 
1374 void
1375 RsLargeAddressCheck (
1376     UINT64                  Minimum,
1377     UINT64                  Maximum,
1378     UINT64                  Length,
1379     UINT64                  Granularity,
1380     UINT8                   Flags,
1381     ACPI_PARSE_OBJECT       *MinOp,
1382     ACPI_PARSE_OBJECT       *MaxOp,
1383     ACPI_PARSE_OBJECT       *LengthOp,
1384     ACPI_PARSE_OBJECT       *GranOp,
1385     ACPI_PARSE_OBJECT       *Op);
1386 
1387 UINT16
1388 RsGetStringDataLength (
1389     ACPI_PARSE_OBJECT       *InitializerOp);
1390 
1391 ASL_RESOURCE_NODE *
1392 RsAllocateResourceNode (
1393     UINT32                  Size);
1394 
1395 void
1396 RsCreateResourceField (
1397     ACPI_PARSE_OBJECT       *Op,
1398     char                    *Name,
1399     UINT32                  ByteOffset,
1400     UINT32                  BitOffset,
1401     UINT32                  BitLength);
1402 
1403 void
1404 RsSetFlagBits (
1405     UINT8                   *Flags,
1406     ACPI_PARSE_OBJECT       *Op,
1407     UINT8                   Position,
1408     UINT8                   DefaultBit);
1409 
1410 void
1411 RsSetFlagBits16 (
1412     UINT16                  *Flags,
1413     ACPI_PARSE_OBJECT       *Op,
1414     UINT8                   Position,
1415     UINT8                   DefaultBit);
1416 
1417 ACPI_PARSE_OBJECT *
1418 RsCompleteNodeAndGetNext (
1419     ACPI_PARSE_OBJECT       *Op);
1420 
1421 void
1422 RsCheckListForDuplicates (
1423     ACPI_PARSE_OBJECT       *Op);
1424 
1425 ASL_RESOURCE_NODE *
1426 RsDoOneResourceDescriptor (
1427     ASL_RESOURCE_INFO       *Info,
1428     UINT8                   *State);
1429 
1430 /* Values for State above */
1431 
1432 #define ACPI_RSTATE_NORMAL              0
1433 #define ACPI_RSTATE_START_DEPENDENT     1
1434 #define ACPI_RSTATE_DEPENDENT_LIST      2
1435 
1436 UINT32
1437 RsLinkDescriptorChain (
1438     ASL_RESOURCE_NODE       **PreviousRnode,
1439     ASL_RESOURCE_NODE       *Rnode);
1440 
1441 void
1442 RsDoResourceTemplate (
1443     ACPI_PARSE_OBJECT       *Op);
1444 
1445 
1446 /*
1447  * aslrestype1 - Miscellaneous Small descriptors
1448  */
1449 ASL_RESOURCE_NODE *
1450 RsDoEndTagDescriptor (
1451     ASL_RESOURCE_INFO       *Info);
1452 
1453 ASL_RESOURCE_NODE *
1454 RsDoEndDependentDescriptor (
1455     ASL_RESOURCE_INFO       *Info);
1456 
1457 ASL_RESOURCE_NODE *
1458 RsDoMemory24Descriptor (
1459     ASL_RESOURCE_INFO       *Info);
1460 
1461 ASL_RESOURCE_NODE *
1462 RsDoMemory32Descriptor (
1463     ASL_RESOURCE_INFO       *Info);
1464 
1465 ASL_RESOURCE_NODE *
1466 RsDoMemory32FixedDescriptor (
1467     ASL_RESOURCE_INFO       *Info);
1468 
1469 ASL_RESOURCE_NODE *
1470 RsDoStartDependentDescriptor (
1471     ASL_RESOURCE_INFO       *Info);
1472 
1473 ASL_RESOURCE_NODE *
1474 RsDoStartDependentNoPriDescriptor (
1475     ASL_RESOURCE_INFO       *Info);
1476 
1477 ASL_RESOURCE_NODE *
1478 RsDoVendorSmallDescriptor (
1479     ASL_RESOURCE_INFO       *Info);
1480 
1481 
1482 /*
1483  * aslrestype1i - I/O-related Small descriptors
1484  */
1485 ASL_RESOURCE_NODE *
1486 RsDoDmaDescriptor (
1487     ASL_RESOURCE_INFO       *Info);
1488 
1489 ASL_RESOURCE_NODE *
1490 RsDoFixedDmaDescriptor (
1491     ASL_RESOURCE_INFO       *Info);
1492 
1493 ASL_RESOURCE_NODE *
1494 RsDoFixedIoDescriptor (
1495     ASL_RESOURCE_INFO       *Info);
1496 
1497 ASL_RESOURCE_NODE *
1498 RsDoIoDescriptor (
1499     ASL_RESOURCE_INFO       *Info);
1500 
1501 ASL_RESOURCE_NODE *
1502 RsDoIrqDescriptor (
1503     ASL_RESOURCE_INFO       *Info);
1504 
1505 ASL_RESOURCE_NODE *
1506 RsDoIrqNoFlagsDescriptor (
1507     ASL_RESOURCE_INFO       *Info);
1508 
1509 
1510 /*
1511  * aslrestype2 - Large resource descriptors
1512  */
1513 ASL_RESOURCE_NODE *
1514 RsDoInterruptDescriptor (
1515     ASL_RESOURCE_INFO       *Info);
1516 
1517 ASL_RESOURCE_NODE *
1518 RsDoVendorLargeDescriptor (
1519     ASL_RESOURCE_INFO       *Info);
1520 
1521 ASL_RESOURCE_NODE *
1522 RsDoGeneralRegisterDescriptor (
1523     ASL_RESOURCE_INFO       *Info);
1524 
1525 ASL_RESOURCE_NODE *
1526 RsDoGpioIntDescriptor (
1527     ASL_RESOURCE_INFO       *Info);
1528 
1529 ASL_RESOURCE_NODE *
1530 RsDoGpioIoDescriptor (
1531     ASL_RESOURCE_INFO       *Info);
1532 
1533 ASL_RESOURCE_NODE *
1534 RsDoI2cSerialBusDescriptor (
1535     ASL_RESOURCE_INFO       *Info);
1536 
1537 ASL_RESOURCE_NODE *
1538 RsDoSpiSerialBusDescriptor (
1539     ASL_RESOURCE_INFO       *Info);
1540 
1541 ASL_RESOURCE_NODE *
1542 RsDoUartSerialBusDescriptor (
1543     ASL_RESOURCE_INFO       *Info);
1544 
1545 ASL_RESOURCE_NODE *
1546 RsDoCsi2SerialBusDescriptor (
1547     ASL_RESOURCE_INFO       *Info);
1548 
1549 ASL_RESOURCE_NODE *
1550 RsDoPinFunctionDescriptor (
1551     ASL_RESOURCE_INFO       *Info);
1552 
1553 ASL_RESOURCE_NODE *
1554 RsDoPinConfigDescriptor (
1555     ASL_RESOURCE_INFO       *Info);
1556 
1557 ASL_RESOURCE_NODE *
1558 RsDoPinGroupDescriptor (
1559     ASL_RESOURCE_INFO       *Info);
1560 
1561 ASL_RESOURCE_NODE *
1562 RsDoPinGroupFunctionDescriptor (
1563     ASL_RESOURCE_INFO       *Info);
1564 
1565 ASL_RESOURCE_NODE *
1566 RsDoPinGroupConfigDescriptor (
1567     ASL_RESOURCE_INFO       *Info);
1568 
1569 
1570 /*
1571  * aslrestype2d - DWord address descriptors
1572  */
1573 ASL_RESOURCE_NODE *
1574 RsDoDwordIoDescriptor (
1575     ASL_RESOURCE_INFO       *Info);
1576 
1577 ASL_RESOURCE_NODE *
1578 RsDoDwordMemoryDescriptor (
1579     ASL_RESOURCE_INFO       *Info);
1580 
1581 ASL_RESOURCE_NODE *
1582 RsDoDwordSpaceDescriptor (
1583     ASL_RESOURCE_INFO       *Info);
1584 
1585 
1586 /*
1587  * aslrestype2e - Extended address descriptors
1588  */
1589 ASL_RESOURCE_NODE *
1590 RsDoExtendedIoDescriptor (
1591     ASL_RESOURCE_INFO       *Info);
1592 
1593 ASL_RESOURCE_NODE *
1594 RsDoExtendedMemoryDescriptor (
1595     ASL_RESOURCE_INFO       *Info);
1596 
1597 ASL_RESOURCE_NODE *
1598 RsDoExtendedSpaceDescriptor (
1599     ASL_RESOURCE_INFO       *Info);
1600 
1601 
1602 /*
1603  * aslrestype2q - QWord address descriptors
1604  */
1605 ASL_RESOURCE_NODE *
1606 RsDoQwordIoDescriptor (
1607     ASL_RESOURCE_INFO       *Info);
1608 
1609 ASL_RESOURCE_NODE *
1610 RsDoQwordMemoryDescriptor (
1611     ASL_RESOURCE_INFO       *Info);
1612 
1613 ASL_RESOURCE_NODE *
1614 RsDoQwordSpaceDescriptor (
1615     ASL_RESOURCE_INFO       *Info);
1616 
1617 
1618 /*
1619  * aslrestype2w - Word address descriptors
1620  */
1621 ASL_RESOURCE_NODE *
1622 RsDoWordIoDescriptor (
1623     ASL_RESOURCE_INFO       *Info);
1624 
1625 ASL_RESOURCE_NODE *
1626 RsDoWordSpaceDescriptor (
1627     ASL_RESOURCE_INFO       *Info);
1628 
1629 ASL_RESOURCE_NODE *
1630 RsDoWordBusNumberDescriptor (
1631     ASL_RESOURCE_INFO       *Info);
1632 
1633 
1634 /*
1635  * Entry to data table compiler subsystem
1636  */
1637 ACPI_STATUS
1638 DtDoCompile(
1639     void);
1640 
1641 ACPI_STATUS
1642 DtCreateTemplates (
1643     char                    **argv);
1644 
1645 
1646 /*
1647  * ASL/ASL+ converter debug
1648  */
1649 ACPI_PRINTF_LIKE (1)
1650 void
1651 CvDbgPrint (
1652     char                    *Fmt,
1653     ...);
1654 
1655 
1656 #endif /*  __ASLCOMPILER_H */
1657