xref: /freebsd/sys/contrib/dev/acpica/compiler/aslcompiler.h (revision 42fecd1294987e8ba9dc23c31c3f55307aca6406)
153289f6aSNate Lawson 
253289f6aSNate Lawson /******************************************************************************
353289f6aSNate Lawson  *
4fba7fc7eSJung-uk Kim  * Module Name: aslcompiler.h - common include file for iASL
553289f6aSNate Lawson  *
653289f6aSNate Lawson  *****************************************************************************/
753289f6aSNate Lawson 
853289f6aSNate Lawson /******************************************************************************
953289f6aSNate Lawson  *
1053289f6aSNate Lawson  * 1. Copyright Notice
1153289f6aSNate Lawson  *
129a179dd8SJung-uk Kim  * Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp.
1353289f6aSNate Lawson  * All rights reserved.
1453289f6aSNate Lawson  *
1553289f6aSNate Lawson  * 2. License
1653289f6aSNate Lawson  *
1753289f6aSNate Lawson  * 2.1. This is your license from Intel Corp. under its intellectual property
1853289f6aSNate Lawson  * rights.  You may have additional license terms from the party that provided
1953289f6aSNate Lawson  * you this software, covering your right to use that party's intellectual
2053289f6aSNate Lawson  * property rights.
2153289f6aSNate Lawson  *
2253289f6aSNate Lawson  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
2353289f6aSNate Lawson  * copy of the source code appearing in this file ("Covered Code") an
2453289f6aSNate Lawson  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
2553289f6aSNate Lawson  * base code distributed originally by Intel ("Original Intel Code") to copy,
2653289f6aSNate Lawson  * make derivatives, distribute, use and display any portion of the Covered
2753289f6aSNate Lawson  * Code in any form, with the right to sublicense such rights; and
2853289f6aSNate Lawson  *
2953289f6aSNate Lawson  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
3053289f6aSNate Lawson  * license (with the right to sublicense), under only those claims of Intel
3153289f6aSNate Lawson  * patents that are infringed by the Original Intel Code, to make, use, sell,
3253289f6aSNate Lawson  * offer to sell, and import the Covered Code and derivative works thereof
3353289f6aSNate Lawson  * solely to the minimum extent necessary to exercise the above copyright
3453289f6aSNate Lawson  * license, and in no event shall the patent license extend to any additions
3553289f6aSNate Lawson  * to or modifications of the Original Intel Code.  No other license or right
3653289f6aSNate Lawson  * is granted directly or by implication, estoppel or otherwise;
3753289f6aSNate Lawson  *
3853289f6aSNate Lawson  * The above copyright and patent license is granted only if the following
3953289f6aSNate Lawson  * conditions are met:
4053289f6aSNate Lawson  *
4153289f6aSNate Lawson  * 3. Conditions
4253289f6aSNate Lawson  *
4353289f6aSNate Lawson  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
4453289f6aSNate Lawson  * Redistribution of source code of any substantial portion of the Covered
4553289f6aSNate Lawson  * Code or modification with rights to further distribute source must include
4653289f6aSNate Lawson  * the above Copyright Notice, the above License, this list of Conditions,
4753289f6aSNate Lawson  * and the following Disclaimer and Export Compliance provision.  In addition,
4853289f6aSNate Lawson  * Licensee must cause all Covered Code to which Licensee contributes to
4953289f6aSNate Lawson  * contain a file documenting the changes Licensee made to create that Covered
5053289f6aSNate Lawson  * Code and the date of any change.  Licensee must include in that file the
5153289f6aSNate Lawson  * documentation of any changes made by any predecessor Licensee.  Licensee
5253289f6aSNate Lawson  * must include a prominent statement that the modification is derived,
5353289f6aSNate Lawson  * directly or indirectly, from Original Intel Code.
5453289f6aSNate Lawson  *
5553289f6aSNate Lawson  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
5653289f6aSNate Lawson  * Redistribution of source code of any substantial portion of the Covered
5753289f6aSNate Lawson  * Code or modification without rights to further distribute source must
5853289f6aSNate Lawson  * include the following Disclaimer and Export Compliance provision in the
5953289f6aSNate Lawson  * documentation and/or other materials provided with distribution.  In
6053289f6aSNate Lawson  * addition, Licensee may not authorize further sublicense of source of any
6153289f6aSNate Lawson  * portion of the Covered Code, and must include terms to the effect that the
6253289f6aSNate Lawson  * license from Licensee to its licensee is limited to the intellectual
6353289f6aSNate Lawson  * property embodied in the software Licensee provides to its licensee, and
6453289f6aSNate Lawson  * not to intellectual property embodied in modifications its licensee may
6553289f6aSNate Lawson  * make.
6653289f6aSNate Lawson  *
6753289f6aSNate Lawson  * 3.3. Redistribution of Executable. Redistribution in executable form of any
6853289f6aSNate Lawson  * substantial portion of the Covered Code or modification must reproduce the
6953289f6aSNate Lawson  * above Copyright Notice, and the following Disclaimer and Export Compliance
7053289f6aSNate Lawson  * provision in the documentation and/or other materials provided with the
7153289f6aSNate Lawson  * distribution.
7253289f6aSNate Lawson  *
7353289f6aSNate Lawson  * 3.4. Intel retains all right, title, and interest in and to the Original
7453289f6aSNate Lawson  * Intel Code.
7553289f6aSNate Lawson  *
7653289f6aSNate Lawson  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
7753289f6aSNate Lawson  * Intel shall be used in advertising or otherwise to promote the sale, use or
7853289f6aSNate Lawson  * other dealings in products derived from or relating to the Covered Code
7953289f6aSNate Lawson  * without prior written authorization from Intel.
8053289f6aSNate Lawson  *
8153289f6aSNate Lawson  * 4. Disclaimer and Export Compliance
8253289f6aSNate Lawson  *
8353289f6aSNate Lawson  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
8453289f6aSNate Lawson  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
8553289f6aSNate Lawson  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
8653289f6aSNate Lawson  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
8753289f6aSNate Lawson  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
8853289f6aSNate Lawson  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
8953289f6aSNate Lawson  * PARTICULAR PURPOSE.
9053289f6aSNate Lawson  *
9153289f6aSNate Lawson  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
9253289f6aSNate Lawson  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
9353289f6aSNate Lawson  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
9453289f6aSNate Lawson  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
9553289f6aSNate Lawson  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
9653289f6aSNate Lawson  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
9753289f6aSNate Lawson  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
9853289f6aSNate Lawson  * LIMITED REMEDY.
9953289f6aSNate Lawson  *
10053289f6aSNate Lawson  * 4.3. Licensee shall not export, either directly or indirectly, any of this
10153289f6aSNate Lawson  * software or system incorporating such software without first obtaining any
10253289f6aSNate Lawson  * required license or other approval from the U. S. Department of Commerce or
10353289f6aSNate Lawson  * any other agency or department of the United States Government.  In the
10453289f6aSNate Lawson  * event Licensee exports any such software from the United States or
10553289f6aSNate Lawson  * re-exports any such software from a foreign destination, Licensee shall
10653289f6aSNate Lawson  * ensure that the distribution and export/re-export of the software is in
10753289f6aSNate Lawson  * compliance with all laws, regulations, orders, or other restrictions of the
10853289f6aSNate Lawson  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
10953289f6aSNate Lawson  * any of its subsidiaries will export/re-export any technical data, process,
11053289f6aSNate Lawson  * software, or service, directly or indirectly, to any country for which the
11153289f6aSNate Lawson  * United States government or any agency thereof requires an export license,
11253289f6aSNate Lawson  * other governmental approval, or letter of assurance, without first obtaining
11353289f6aSNate Lawson  * such license, approval or letter.
11453289f6aSNate Lawson  *
11553289f6aSNate Lawson  *****************************************************************************/
11653289f6aSNate Lawson 
11753289f6aSNate Lawson 
11853289f6aSNate Lawson #ifndef __ASLCOMPILER_H
11953289f6aSNate Lawson #define __ASLCOMPILER_H
12053289f6aSNate Lawson 
12153289f6aSNate Lawson 
12253289f6aSNate Lawson /* Microsoft-specific */
12353289f6aSNate Lawson 
12453289f6aSNate Lawson #if (defined WIN32 || defined WIN64)
12553289f6aSNate Lawson 
12653289f6aSNate Lawson /* warn : used #pragma pack */
12753289f6aSNate Lawson #pragma warning(disable:4103)
12853289f6aSNate Lawson 
12953289f6aSNate Lawson /* warn : named type definition in parentheses */
13053289f6aSNate Lawson #pragma warning(disable:4115)
13153289f6aSNate Lawson #endif
13253289f6aSNate Lawson 
13353289f6aSNate Lawson #include <stdio.h>
13453289f6aSNate Lawson #include <stdlib.h>
13553289f6aSNate Lawson #include <stdarg.h>
13653289f6aSNate Lawson #include <string.h>
13753289f6aSNate Lawson #include <errno.h>
13853289f6aSNate Lawson #include <ctype.h>
13953289f6aSNate Lawson 
14053289f6aSNate Lawson 
141ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/acpi.h>
142ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/accommon.h>
143ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/amlresrc.h>
144ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/include/acdebug.h>
14553289f6aSNate Lawson 
146fba7fc7eSJung-uk Kim /* Compiler headers */
14753289f6aSNate Lawson 
148ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/compiler/asldefine.h>
149ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/compiler/asltypes.h>
150ab6f3bf9SJung-uk Kim #include <contrib/dev/acpica/compiler/aslglobal.h>
15153289f6aSNate Lawson 
15253289f6aSNate Lawson 
15353289f6aSNate Lawson /*******************************************************************************
15453289f6aSNate Lawson  *
15553289f6aSNate Lawson  * Compiler prototypes
15653289f6aSNate Lawson  *
15753289f6aSNate Lawson  ******************************************************************************/
15853289f6aSNate Lawson 
159fba7fc7eSJung-uk Kim /*
160fba7fc7eSJung-uk Kim  * parser - generated from flex/bison, lex/yacc, etc.
161fba7fc7eSJung-uk Kim  */
16253289f6aSNate Lawson int
16353289f6aSNate Lawson AslCompilerparse(
16453289f6aSNate Lawson     void);
16553289f6aSNate Lawson 
16653289f6aSNate Lawson ACPI_PARSE_OBJECT *
16753289f6aSNate Lawson AslDoError (
16853289f6aSNate Lawson     void);
16953289f6aSNate Lawson 
17053289f6aSNate Lawson int
17153289f6aSNate Lawson AslCompilerlex(
17253289f6aSNate Lawson     void);
17353289f6aSNate Lawson 
17453289f6aSNate Lawson void
17553289f6aSNate Lawson ResetCurrentLineBuffer (
17653289f6aSNate Lawson     void);
17753289f6aSNate Lawson 
17853289f6aSNate Lawson void
17953289f6aSNate Lawson InsertLineBuffer (
18053289f6aSNate Lawson     int                     SourceChar);
18153289f6aSNate Lawson 
18253289f6aSNate Lawson int
18353289f6aSNate Lawson AslPopInputFileStack (
18453289f6aSNate Lawson     void);
18553289f6aSNate Lawson 
18653289f6aSNate Lawson void
18753289f6aSNate Lawson AslPushInputFileStack (
18853289f6aSNate Lawson     FILE                    *InputFile,
18953289f6aSNate Lawson     char                    *Filename);
19053289f6aSNate Lawson 
191a9f12690SJung-uk Kim /*
192a88e22b7SJung-uk Kim  * aslstartup - entered from main()
193a9f12690SJung-uk Kim  */
194a88e22b7SJung-uk Kim void
195a88e22b7SJung-uk Kim AslInitializeGlobals (
196a88e22b7SJung-uk Kim     void);
197a88e22b7SJung-uk Kim 
198709fac06SJung-uk Kim typedef
199709fac06SJung-uk Kim ACPI_STATUS (*ASL_PATHNAME_CALLBACK) (
200709fac06SJung-uk Kim     char *);
201709fac06SJung-uk Kim 
202a9f12690SJung-uk Kim ACPI_STATUS
203a9f12690SJung-uk Kim AslDoOnePathname (
204709fac06SJung-uk Kim     char                    *Pathname,
205709fac06SJung-uk Kim     ASL_PATHNAME_CALLBACK   Callback);
206a9f12690SJung-uk Kim 
207a9f12690SJung-uk Kim ACPI_STATUS
208a9f12690SJung-uk Kim AslDoOneFile (
209a9f12690SJung-uk Kim     char                    *Filename);
21053289f6aSNate Lawson 
211fba7fc7eSJung-uk Kim /*
212fba7fc7eSJung-uk Kim  * aslcompile - compile mainline
213fba7fc7eSJung-uk Kim  */
21453289f6aSNate Lawson void
21553289f6aSNate Lawson AslCompilerSignon (
21653289f6aSNate Lawson     UINT32                  FileId);
21753289f6aSNate Lawson 
21853289f6aSNate Lawson void
21953289f6aSNate Lawson AslCompilerFileHeader (
22053289f6aSNate Lawson     UINT32                  FileId);
22153289f6aSNate Lawson 
22253289f6aSNate Lawson int
223fba7fc7eSJung-uk Kim CmDoCompile (
22453289f6aSNate Lawson     void);
22553289f6aSNate Lawson 
22653289f6aSNate Lawson void
227fba7fc7eSJung-uk Kim CmDoOutputFiles (
22853289f6aSNate Lawson     void);
22953289f6aSNate Lawson 
23053289f6aSNate Lawson void
231fba7fc7eSJung-uk Kim CmCleanupAndExit (
23253289f6aSNate Lawson     void);
23353289f6aSNate Lawson 
234a88e22b7SJung-uk Kim ACPI_STATUS
235a88e22b7SJung-uk Kim FlCheckForAscii (
236a88e22b7SJung-uk Kim     ASL_FILE_INFO           *FileInfo);
237a88e22b7SJung-uk Kim 
23853289f6aSNate Lawson 
23953289f6aSNate Lawson /*
240fba7fc7eSJung-uk Kim  * aslanalyze - semantic analysis
24153289f6aSNate Lawson  */
24253289f6aSNate Lawson ACPI_STATUS
24353289f6aSNate Lawson AnOtherSemanticAnalysisWalkBegin (
24453289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
24553289f6aSNate Lawson     UINT32                  Level,
24653289f6aSNate Lawson     void                    *Context);
24753289f6aSNate Lawson 
24853289f6aSNate Lawson ACPI_STATUS
24953289f6aSNate Lawson AnOtherSemanticAnalysisWalkEnd (
25053289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
25153289f6aSNate Lawson     UINT32                  Level,
25253289f6aSNate Lawson     void                    *Context);
25353289f6aSNate Lawson 
25453289f6aSNate Lawson ACPI_STATUS
25553289f6aSNate Lawson AnOperandTypecheckWalkBegin (
25653289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
25753289f6aSNate Lawson     UINT32                  Level,
25853289f6aSNate Lawson     void                    *Context);
25953289f6aSNate Lawson 
26053289f6aSNate Lawson ACPI_STATUS
26153289f6aSNate Lawson AnOperandTypecheckWalkEnd (
26253289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
26353289f6aSNate Lawson     UINT32                  Level,
26453289f6aSNate Lawson     void                    *Context);
26553289f6aSNate Lawson 
26653289f6aSNate Lawson ACPI_STATUS
26753289f6aSNate Lawson AnMethodAnalysisWalkBegin (
26853289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
26953289f6aSNate Lawson     UINT32                  Level,
27053289f6aSNate Lawson     void                    *Context);
27153289f6aSNate Lawson 
27253289f6aSNate Lawson ACPI_STATUS
27353289f6aSNate Lawson AnMethodAnalysisWalkEnd (
27453289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
27553289f6aSNate Lawson     UINT32                  Level,
27653289f6aSNate Lawson     void                    *Context);
27753289f6aSNate Lawson 
27853289f6aSNate Lawson ACPI_STATUS
27953289f6aSNate Lawson AnMethodTypingWalkBegin (
28053289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
28153289f6aSNate Lawson     UINT32                  Level,
28253289f6aSNate Lawson     void                    *Context);
28353289f6aSNate Lawson 
28453289f6aSNate Lawson ACPI_STATUS
28553289f6aSNate Lawson AnMethodTypingWalkEnd (
28653289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
28753289f6aSNate Lawson     UINT32                  Level,
28853289f6aSNate Lawson     void                    *Context);
28953289f6aSNate Lawson 
29053289f6aSNate Lawson 
29153289f6aSNate Lawson /*
292fba7fc7eSJung-uk Kim  * aslerror - error handling/reporting
29353289f6aSNate Lawson  */
294fba7fc7eSJung-uk Kim void
295fba7fc7eSJung-uk Kim AslError (
296fba7fc7eSJung-uk Kim     UINT8                   Level,
297fba7fc7eSJung-uk Kim     UINT8                   MessageId,
298fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
299fba7fc7eSJung-uk Kim     char                    *ExtraMessage);
30053289f6aSNate Lawson 
30153289f6aSNate Lawson void
302fba7fc7eSJung-uk Kim AslCoreSubsystemError (
303fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
304fba7fc7eSJung-uk Kim     ACPI_STATUS             Status,
305fba7fc7eSJung-uk Kim     char                    *ExtraMessage,
306fba7fc7eSJung-uk Kim     BOOLEAN                 Abort);
30753289f6aSNate Lawson 
308fba7fc7eSJung-uk Kim int
309fba7fc7eSJung-uk Kim AslCompilererror(
310fba7fc7eSJung-uk Kim     char                    *s);
311fba7fc7eSJung-uk Kim 
312fba7fc7eSJung-uk Kim void
313fba7fc7eSJung-uk Kim AslCommonError (
314fba7fc7eSJung-uk Kim     UINT8                   Level,
315fba7fc7eSJung-uk Kim     UINT8                   MessageId,
316fba7fc7eSJung-uk Kim     UINT32                  CurrentLineNumber,
317fba7fc7eSJung-uk Kim     UINT32                  LogicalLineNumber,
318fba7fc7eSJung-uk Kim     UINT32                  LogicalByteOffset,
319fba7fc7eSJung-uk Kim     UINT32                  Column,
320fba7fc7eSJung-uk Kim     char                    *Filename,
321fba7fc7eSJung-uk Kim     char                    *ExtraMessage);
322fba7fc7eSJung-uk Kim 
323fba7fc7eSJung-uk Kim void
324fba7fc7eSJung-uk Kim AePrintException (
325fba7fc7eSJung-uk Kim     UINT32                  FileId,
326fba7fc7eSJung-uk Kim     ASL_ERROR_MSG           *Enode,
327fba7fc7eSJung-uk Kim     char                    *Header);
328fba7fc7eSJung-uk Kim 
329fba7fc7eSJung-uk Kim void
330fba7fc7eSJung-uk Kim AePrintErrorLog (
331fba7fc7eSJung-uk Kim     UINT32                  FileId);
332fba7fc7eSJung-uk Kim 
333a9f12690SJung-uk Kim void
334a9f12690SJung-uk Kim AeClearErrorLog (
335a9f12690SJung-uk Kim     void);
336a9f12690SJung-uk Kim 
3371a39cfb0SJung-uk Kim ACPI_PHYSICAL_ADDRESS
338fba7fc7eSJung-uk Kim AeLocalGetRootPointer (
3391a39cfb0SJung-uk Kim     void);
340fba7fc7eSJung-uk Kim 
341fba7fc7eSJung-uk Kim 
342fba7fc7eSJung-uk Kim /*
343fba7fc7eSJung-uk Kim  * asllisting - generate all "listing" type files
344fba7fc7eSJung-uk Kim  */
345fba7fc7eSJung-uk Kim void
346fba7fc7eSJung-uk Kim LsDoListings (
347fba7fc7eSJung-uk Kim     void);
348fba7fc7eSJung-uk Kim 
349fba7fc7eSJung-uk Kim void
350fba7fc7eSJung-uk Kim LsWriteNodeToAsmListing (
351fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
352fba7fc7eSJung-uk Kim 
353fba7fc7eSJung-uk Kim void
354fba7fc7eSJung-uk Kim LsWriteNode (
355fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
356fba7fc7eSJung-uk Kim     UINT32                  FileId);
357fba7fc7eSJung-uk Kim 
358fba7fc7eSJung-uk Kim void
359fba7fc7eSJung-uk Kim LsDoHexOutput (
360fba7fc7eSJung-uk Kim     void);
361fba7fc7eSJung-uk Kim 
3621a39cfb0SJung-uk Kim void
3631a39cfb0SJung-uk Kim LsDumpParseTree (
3641a39cfb0SJung-uk Kim     void);
365fba7fc7eSJung-uk Kim 
366fba7fc7eSJung-uk Kim /*
367fba7fc7eSJung-uk Kim  * aslfold - constant folding
368fba7fc7eSJung-uk Kim  */
369fba7fc7eSJung-uk Kim ACPI_STATUS
370fba7fc7eSJung-uk Kim OpcAmlConstantWalk (
371fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
372fba7fc7eSJung-uk Kim     UINT32                  Level,
373fba7fc7eSJung-uk Kim     void                    *Context);
374fba7fc7eSJung-uk Kim 
375fba7fc7eSJung-uk Kim 
376fba7fc7eSJung-uk Kim /*
377fba7fc7eSJung-uk Kim  * aslopcodes - generate AML opcodes
378fba7fc7eSJung-uk Kim  */
379fba7fc7eSJung-uk Kim ACPI_STATUS
380fba7fc7eSJung-uk Kim OpcAmlOpcodeWalk (
381fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
382fba7fc7eSJung-uk Kim     UINT32                  Level,
383fba7fc7eSJung-uk Kim     void                    *Context);
384fba7fc7eSJung-uk Kim 
385fba7fc7eSJung-uk Kim ACPI_STATUS
386fba7fc7eSJung-uk Kim OpcAmlOpcodeUpdateWalk (
387fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
388fba7fc7eSJung-uk Kim     UINT32                  Level,
389fba7fc7eSJung-uk Kim     void                    *Context);
390fba7fc7eSJung-uk Kim 
391fba7fc7eSJung-uk Kim void
392fba7fc7eSJung-uk Kim OpcGenerateAmlOpcode (
393fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
394fba7fc7eSJung-uk Kim 
395fba7fc7eSJung-uk Kim UINT32
396fba7fc7eSJung-uk Kim OpcSetOptimalIntegerSize (
397fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
398fba7fc7eSJung-uk Kim 
399fba7fc7eSJung-uk Kim void
400fba7fc7eSJung-uk Kim OpcGetIntegerWidth (
401fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
402fba7fc7eSJung-uk Kim 
403fba7fc7eSJung-uk Kim 
404fba7fc7eSJung-uk Kim /*
405fba7fc7eSJung-uk Kim  * asloperands - generate AML operands for the AML opcodes
406fba7fc7eSJung-uk Kim  */
407fba7fc7eSJung-uk Kim ACPI_PARSE_OBJECT  *
408fba7fc7eSJung-uk Kim UtGetArg (
409fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
410fba7fc7eSJung-uk Kim     UINT32                  Argn);
411fba7fc7eSJung-uk Kim 
412fba7fc7eSJung-uk Kim void
413fba7fc7eSJung-uk Kim OpnGenerateAmlOperands (
414fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
415fba7fc7eSJung-uk Kim 
416fba7fc7eSJung-uk Kim void
417fba7fc7eSJung-uk Kim OpnDoPackage (
418fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
419fba7fc7eSJung-uk Kim 
420fba7fc7eSJung-uk Kim 
421fba7fc7eSJung-uk Kim /*
422fba7fc7eSJung-uk Kim  * aslopt - optmization
423fba7fc7eSJung-uk Kim  */
424fba7fc7eSJung-uk Kim void
425fba7fc7eSJung-uk Kim OptOptimizeNamePath (
426fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
427fba7fc7eSJung-uk Kim     UINT32                  Flags,
428fba7fc7eSJung-uk Kim     ACPI_WALK_STATE         *WalkState,
429fba7fc7eSJung-uk Kim     char                    *AmlNameString,
430fba7fc7eSJung-uk Kim     ACPI_NAMESPACE_NODE     *TargetNode);
431fba7fc7eSJung-uk Kim 
432fba7fc7eSJung-uk Kim 
433fba7fc7eSJung-uk Kim /*
434fba7fc7eSJung-uk Kim  * aslcodegen - code generation
435fba7fc7eSJung-uk Kim  */
436fba7fc7eSJung-uk Kim void
437fba7fc7eSJung-uk Kim CgGenerateAmlOutput (
438fba7fc7eSJung-uk Kim     void);
439fba7fc7eSJung-uk Kim 
440fba7fc7eSJung-uk Kim 
441fba7fc7eSJung-uk Kim /*
442a88e22b7SJung-uk Kim  * aslfile
443a88e22b7SJung-uk Kim  */
444a88e22b7SJung-uk Kim void
445a88e22b7SJung-uk Kim FlOpenFile (
446a88e22b7SJung-uk Kim     UINT32                  FileId,
447a88e22b7SJung-uk Kim     char                    *Filename,
448a88e22b7SJung-uk Kim     char                    *Mode);
449a88e22b7SJung-uk Kim 
450a88e22b7SJung-uk Kim 
451a88e22b7SJung-uk Kim /*
452fba7fc7eSJung-uk Kim  * asllength - calculate/adjust AML package lengths
453fba7fc7eSJung-uk Kim  */
454fba7fc7eSJung-uk Kim ACPI_STATUS
455fba7fc7eSJung-uk Kim LnPackageLengthWalk (
456fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
457fba7fc7eSJung-uk Kim     UINT32                  Level,
458fba7fc7eSJung-uk Kim     void                    *Context);
459fba7fc7eSJung-uk Kim 
460fba7fc7eSJung-uk Kim ACPI_STATUS
461fba7fc7eSJung-uk Kim LnInitLengthsWalk (
462fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
463fba7fc7eSJung-uk Kim     UINT32                  Level,
464fba7fc7eSJung-uk Kim     void                    *Context);
465fba7fc7eSJung-uk Kim 
466fba7fc7eSJung-uk Kim void
467fba7fc7eSJung-uk Kim CgGenerateAmlLengths (
468fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
469fba7fc7eSJung-uk Kim 
470fba7fc7eSJung-uk Kim 
471fba7fc7eSJung-uk Kim /*
472fba7fc7eSJung-uk Kim  * aslmap - opcode mappings and reserved method names
473fba7fc7eSJung-uk Kim  */
474fba7fc7eSJung-uk Kim ACPI_OBJECT_TYPE
475fba7fc7eSJung-uk Kim AslMapNamedOpcodeToDataType (
476fba7fc7eSJung-uk Kim     UINT16                  Opcode);
477fba7fc7eSJung-uk Kim 
478ca3cf4faSJung-uk Kim 
479ca3cf4faSJung-uk Kim /*
480ca3cf4faSJung-uk Kim  * aslpredef - ACPI predefined names support
481ca3cf4faSJung-uk Kim  */
482fba7fc7eSJung-uk Kim void
483ca3cf4faSJung-uk Kim ApCheckForPredefinedMethod (
484ca3cf4faSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
485ca3cf4faSJung-uk Kim     ASL_METHOD_INFO         *MethodInfo);
486ca3cf4faSJung-uk Kim 
4878c8be05fSJung-uk Kim void
4888c8be05fSJung-uk Kim ApCheckPredefinedReturnValue (
4898c8be05fSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
4908c8be05fSJung-uk Kim     ASL_METHOD_INFO         *MethodInfo);
4918c8be05fSJung-uk Kim 
492ca3cf4faSJung-uk Kim UINT32
493ca3cf4faSJung-uk Kim ApCheckForPredefinedName (
494ca3cf4faSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
495ca3cf4faSJung-uk Kim     char                    *Name);
496ca3cf4faSJung-uk Kim 
497ca3cf4faSJung-uk Kim void
498ca3cf4faSJung-uk Kim ApCheckForPredefinedObject (
499ca3cf4faSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
500ca3cf4faSJung-uk Kim     char                    *Name);
501ca3cf4faSJung-uk Kim 
502ca3cf4faSJung-uk Kim void
503ca3cf4faSJung-uk Kim ApDisplayReservedNames (
504fba7fc7eSJung-uk Kim     void);
505fba7fc7eSJung-uk Kim 
506fba7fc7eSJung-uk Kim 
507fba7fc7eSJung-uk Kim /*
508fba7fc7eSJung-uk Kim  * asltransform - parse tree transformations
509fba7fc7eSJung-uk Kim  */
510fba7fc7eSJung-uk Kim ACPI_STATUS
511fba7fc7eSJung-uk Kim TrAmlTransformWalk (
512fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
513fba7fc7eSJung-uk Kim     UINT32                  Level,
514fba7fc7eSJung-uk Kim     void                    *Context);
515fba7fc7eSJung-uk Kim 
516fba7fc7eSJung-uk Kim 
517fba7fc7eSJung-uk Kim /*
518fba7fc7eSJung-uk Kim  * asltree - parse tree support
519fba7fc7eSJung-uk Kim  */
520fba7fc7eSJung-uk Kim ACPI_STATUS
521fba7fc7eSJung-uk Kim TrWalkParseTree (
522fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
523fba7fc7eSJung-uk Kim     UINT32                  Visitation,
524fba7fc7eSJung-uk Kim     ASL_WALK_CALLBACK       DescendingCallback,
525fba7fc7eSJung-uk Kim     ASL_WALK_CALLBACK       AscendingCallback,
526fba7fc7eSJung-uk Kim     void                    *Context);
527fba7fc7eSJung-uk Kim 
528fba7fc7eSJung-uk Kim /* Values for "Visitation" parameter above */
529fba7fc7eSJung-uk Kim 
530fba7fc7eSJung-uk Kim #define ASL_WALK_VISIT_DOWNWARD     0x01
531fba7fc7eSJung-uk Kim #define ASL_WALK_VISIT_UPWARD       0x02
532fba7fc7eSJung-uk Kim #define ASL_WALK_VISIT_TWICE        (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD)
533fba7fc7eSJung-uk Kim 
534fba7fc7eSJung-uk Kim 
535fba7fc7eSJung-uk Kim ACPI_PARSE_OBJECT *
536fba7fc7eSJung-uk Kim TrAllocateNode (
537fba7fc7eSJung-uk Kim     UINT32                  ParseOpcode);
538fba7fc7eSJung-uk Kim 
539fba7fc7eSJung-uk Kim void
540fba7fc7eSJung-uk Kim TrReleaseNode (
541fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
542fba7fc7eSJung-uk Kim 
543fba7fc7eSJung-uk Kim ACPI_PARSE_OBJECT *
544fba7fc7eSJung-uk Kim TrUpdateNode (
545fba7fc7eSJung-uk Kim     UINT32                  ParseOpcode,
546fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
547fba7fc7eSJung-uk Kim 
548fba7fc7eSJung-uk Kim ACPI_PARSE_OBJECT *
549fba7fc7eSJung-uk Kim TrCreateNode (
550fba7fc7eSJung-uk Kim     UINT32                  ParseOpcode,
551fba7fc7eSJung-uk Kim     UINT32                  NumChildren,
552fba7fc7eSJung-uk Kim     ...);
553fba7fc7eSJung-uk Kim 
554fba7fc7eSJung-uk Kim ACPI_PARSE_OBJECT *
555fba7fc7eSJung-uk Kim TrCreateLeafNode (
556fba7fc7eSJung-uk Kim     UINT32                  ParseOpcode);
557fba7fc7eSJung-uk Kim 
558fba7fc7eSJung-uk Kim ACPI_PARSE_OBJECT *
559fba7fc7eSJung-uk Kim TrCreateValuedLeafNode (
560fba7fc7eSJung-uk Kim     UINT32                  ParseOpcode,
5619a179dd8SJung-uk Kim     UINT64                  Value);
562fba7fc7eSJung-uk Kim 
563fba7fc7eSJung-uk Kim ACPI_PARSE_OBJECT *
564fba7fc7eSJung-uk Kim TrLinkChildren (
565fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
566fba7fc7eSJung-uk Kim     UINT32                  NumChildren,
567fba7fc7eSJung-uk Kim     ...);
568fba7fc7eSJung-uk Kim 
569fba7fc7eSJung-uk Kim void
570fba7fc7eSJung-uk Kim TrSetEndLineNumber (
571fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
572fba7fc7eSJung-uk Kim 
573fba7fc7eSJung-uk Kim void
574fba7fc7eSJung-uk Kim TrWalkTree (
575fba7fc7eSJung-uk Kim     void);
576fba7fc7eSJung-uk Kim 
577fba7fc7eSJung-uk Kim ACPI_PARSE_OBJECT *
578fba7fc7eSJung-uk Kim TrLinkPeerNode (
579fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op1,
580fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op2);
581fba7fc7eSJung-uk Kim 
582fba7fc7eSJung-uk Kim ACPI_PARSE_OBJECT *
583fba7fc7eSJung-uk Kim TrLinkChildNode (
584fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op1,
585fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op2);
586fba7fc7eSJung-uk Kim 
587fba7fc7eSJung-uk Kim ACPI_PARSE_OBJECT *
588fba7fc7eSJung-uk Kim TrSetNodeFlags (
589fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
590fba7fc7eSJung-uk Kim     UINT32                  Flags);
591fba7fc7eSJung-uk Kim 
592fba7fc7eSJung-uk Kim ACPI_PARSE_OBJECT *
593fba7fc7eSJung-uk Kim TrLinkPeerNodes (
594fba7fc7eSJung-uk Kim     UINT32                  NumPeers,
595fba7fc7eSJung-uk Kim     ...);
596fba7fc7eSJung-uk Kim 
597fba7fc7eSJung-uk Kim 
598fba7fc7eSJung-uk Kim /*
599fba7fc7eSJung-uk Kim  * aslfiles - File I/O support
600fba7fc7eSJung-uk Kim  */
601fba7fc7eSJung-uk Kim void
602fba7fc7eSJung-uk Kim AslAbort (
603fba7fc7eSJung-uk Kim     void);
60453289f6aSNate Lawson 
60553289f6aSNate Lawson void
606d6dd1baeSJung-uk Kim FlAddIncludeDirectory (
607d6dd1baeSJung-uk Kim     char                    *Dir);
608d6dd1baeSJung-uk Kim 
609d6dd1baeSJung-uk Kim void
61053289f6aSNate Lawson FlOpenIncludeFile (
61153289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op);
61253289f6aSNate Lawson 
61353289f6aSNate Lawson void
61453289f6aSNate Lawson FlFileError (
61553289f6aSNate Lawson     UINT32                  FileId,
61653289f6aSNate Lawson     UINT8                   ErrorId);
61753289f6aSNate Lawson 
6183f5e024cSJung-uk Kim UINT32
6193f5e024cSJung-uk Kim FlGetFileSize (
6203f5e024cSJung-uk Kim     UINT32                  FileId);
6213f5e024cSJung-uk Kim 
62253289f6aSNate Lawson ACPI_STATUS
62353289f6aSNate Lawson FlReadFile (
62453289f6aSNate Lawson     UINT32                  FileId,
62553289f6aSNate Lawson     void                    *Buffer,
62653289f6aSNate Lawson     UINT32                  Length);
62753289f6aSNate Lawson 
62853289f6aSNate Lawson void
62953289f6aSNate Lawson FlWriteFile (
63053289f6aSNate Lawson     UINT32                  FileId,
63153289f6aSNate Lawson     void                    *Buffer,
63253289f6aSNate Lawson     UINT32                  Length);
63353289f6aSNate Lawson 
63453289f6aSNate Lawson void
63553289f6aSNate Lawson FlSeekFile (
63653289f6aSNate Lawson     UINT32                  FileId,
63753289f6aSNate Lawson     long                    Offset);
63853289f6aSNate Lawson 
63953289f6aSNate Lawson void
64053289f6aSNate Lawson FlCloseFile (
64153289f6aSNate Lawson     UINT32                  FileId);
64253289f6aSNate Lawson 
64353289f6aSNate Lawson void
64453289f6aSNate Lawson FlPrintFile (
64553289f6aSNate Lawson     UINT32                  FileId,
64653289f6aSNate Lawson     char                    *Format,
64753289f6aSNate Lawson     ...);
64853289f6aSNate Lawson 
64953289f6aSNate Lawson void
65053289f6aSNate Lawson FlSetLineNumber (
65153289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op);
65253289f6aSNate Lawson 
65353289f6aSNate Lawson ACPI_STATUS
65453289f6aSNate Lawson FlOpenInputFile (
65553289f6aSNate Lawson     char                    *InputFilename);
65653289f6aSNate Lawson 
65753289f6aSNate Lawson ACPI_STATUS
65853289f6aSNate Lawson FlOpenAmlOutputFile (
65953289f6aSNate Lawson     char                    *InputFilename);
66053289f6aSNate Lawson 
66153289f6aSNate Lawson ACPI_STATUS
66253289f6aSNate Lawson FlOpenMiscOutputFiles (
66353289f6aSNate Lawson     char                    *InputFilename);
66453289f6aSNate Lawson 
66553289f6aSNate Lawson 
666fba7fc7eSJung-uk Kim /*
667fba7fc7eSJung-uk Kim  * asload - load namespace in prep for cross reference
668fba7fc7eSJung-uk Kim  */
66953289f6aSNate Lawson ACPI_STATUS
67053289f6aSNate Lawson LdLoadNamespace (
67153289f6aSNate Lawson     ACPI_PARSE_OBJECT       *RootOp);
67253289f6aSNate Lawson 
67353289f6aSNate Lawson 
674fba7fc7eSJung-uk Kim /*
675fba7fc7eSJung-uk Kim  * asllookup - namespace cross reference
676fba7fc7eSJung-uk Kim  */
67753289f6aSNate Lawson ACPI_STATUS
678fba7fc7eSJung-uk Kim LkCrossReferenceNamespace (
679fba7fc7eSJung-uk Kim     void);
68053289f6aSNate Lawson 
6811a39cfb0SJung-uk Kim void
6821a39cfb0SJung-uk Kim LkFindUnreferencedObjects (
6831a39cfb0SJung-uk Kim     void);
6841a39cfb0SJung-uk Kim 
68553289f6aSNate Lawson ACPI_STATUS
68653289f6aSNate Lawson LsDisplayNamespace (
68753289f6aSNate Lawson     void);
68853289f6aSNate Lawson 
689*42fecd12SJung-uk Kim void
690*42fecd12SJung-uk Kim LsSetupNsList (
691*42fecd12SJung-uk Kim     void                    *Handle);
692*42fecd12SJung-uk Kim 
69353289f6aSNate Lawson 
694fba7fc7eSJung-uk Kim /*
695fba7fc7eSJung-uk Kim  * aslutils - common compiler utilites
696fba7fc7eSJung-uk Kim  */
697fba7fc7eSJung-uk Kim void
698fba7fc7eSJung-uk Kim DbgPrint (
699fba7fc7eSJung-uk Kim     UINT32                  Type,
700fba7fc7eSJung-uk Kim     char                    *Format,
701fba7fc7eSJung-uk Kim     ...);
70253289f6aSNate Lawson 
703fba7fc7eSJung-uk Kim /* Type values for above */
704fba7fc7eSJung-uk Kim 
705fba7fc7eSJung-uk Kim #define ASL_DEBUG_OUTPUT    0
706fba7fc7eSJung-uk Kim #define ASL_PARSE_OUTPUT    1
707fba7fc7eSJung-uk Kim #define ASL_TREE_OUTPUT     2
70853289f6aSNate Lawson 
70953289f6aSNate Lawson void
710a88e22b7SJung-uk Kim UtDisplaySupportedTables (
711a88e22b7SJung-uk Kim     void);
712a88e22b7SJung-uk Kim 
713a88e22b7SJung-uk Kim void
71453289f6aSNate Lawson UtDisplayConstantOpcodes (
71553289f6aSNate Lawson     void);
71653289f6aSNate Lawson 
717fba7fc7eSJung-uk Kim UINT8
71853289f6aSNate Lawson UtBeginEvent (
71953289f6aSNate Lawson     char                    *Name);
72053289f6aSNate Lawson 
72153289f6aSNate Lawson void
72253289f6aSNate Lawson UtEndEvent (
723fba7fc7eSJung-uk Kim     UINT8                   Event);
72453289f6aSNate Lawson 
72553289f6aSNate Lawson void *
72653289f6aSNate Lawson UtLocalCalloc (
72753289f6aSNate Lawson     UINT32                  Size);
72853289f6aSNate Lawson 
72953289f6aSNate Lawson void
73053289f6aSNate Lawson UtPrintFormattedName (
73153289f6aSNate Lawson     UINT16                  ParseOpcode,
73253289f6aSNate Lawson     UINT32                  Level);
73353289f6aSNate Lawson 
73453289f6aSNate Lawson void
73553289f6aSNate Lawson UtDisplaySummary (
73653289f6aSNate Lawson     UINT32                  FileId);
73753289f6aSNate Lawson 
73853289f6aSNate Lawson UINT8
73953289f6aSNate Lawson UtHexCharToValue (
740fba7fc7eSJung-uk Kim     int                     HexChar);
74153289f6aSNate Lawson 
74253289f6aSNate Lawson void
74353289f6aSNate Lawson UtConvertByteToHex (
74453289f6aSNate Lawson     UINT8                   RawByte,
74553289f6aSNate Lawson     UINT8                   *Buffer);
74653289f6aSNate Lawson 
74753289f6aSNate Lawson void
74853289f6aSNate Lawson UtConvertByteToAsmHex (
74953289f6aSNate Lawson     UINT8                   RawByte,
75053289f6aSNate Lawson     UINT8                   *Buffer);
75153289f6aSNate Lawson 
75253289f6aSNate Lawson char *
75353289f6aSNate Lawson UtGetOpName (
75453289f6aSNate Lawson     UINT32                  ParseOpcode);
75553289f6aSNate Lawson 
75653289f6aSNate Lawson void
75753289f6aSNate Lawson UtSetParseOpName (
75853289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op);
75953289f6aSNate Lawson 
76053289f6aSNate Lawson char *
76153289f6aSNate Lawson UtGetStringBuffer (
76253289f6aSNate Lawson     UINT32                  Length);
76353289f6aSNate Lawson 
76453289f6aSNate Lawson ACPI_STATUS
76553289f6aSNate Lawson UtInternalizeName (
76653289f6aSNate Lawson     char                    *ExternalName,
76753289f6aSNate Lawson     char                    **ConvertedName);
76853289f6aSNate Lawson 
76953289f6aSNate Lawson void
77053289f6aSNate Lawson UtAttachNamepathToOwner (
77153289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
77253289f6aSNate Lawson     ACPI_PARSE_OBJECT       *NameNode);
77353289f6aSNate Lawson 
77453289f6aSNate Lawson ACPI_PARSE_OBJECT *
77553289f6aSNate Lawson UtCheckIntegerRange (
77653289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
77753289f6aSNate Lawson     UINT32                  LowValue,
77853289f6aSNate Lawson     UINT32                  HighValue);
77953289f6aSNate Lawson 
7809a179dd8SJung-uk Kim UINT64
78153289f6aSNate Lawson UtDoConstant (
78253289f6aSNate Lawson     char                    *String);
78353289f6aSNate Lawson 
78453289f6aSNate Lawson 
78553289f6aSNate Lawson /*
786fba7fc7eSJung-uk Kim  * aslresource - Resource template generation utilities
78753289f6aSNate Lawson  */
7883f5e024cSJung-uk Kim void
7893f5e024cSJung-uk Kim RsSmallAddressCheck (
7903f5e024cSJung-uk Kim     UINT8                   Type,
7913f5e024cSJung-uk Kim     UINT32                  Minimum,
7923f5e024cSJung-uk Kim     UINT32                  Maximum,
7933f5e024cSJung-uk Kim     UINT32                  Length,
7943f5e024cSJung-uk Kim     UINT32                  Alignment,
7953f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *MinOp,
7963f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *MaxOp,
7973f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *LengthOp,
7983f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *AlignOp);
7993f5e024cSJung-uk Kim 
8003f5e024cSJung-uk Kim void
8013f5e024cSJung-uk Kim RsLargeAddressCheck (
8023f5e024cSJung-uk Kim     UINT64                  Minimum,
8033f5e024cSJung-uk Kim     UINT64                  Maximum,
8043f5e024cSJung-uk Kim     UINT64                  Length,
8053f5e024cSJung-uk Kim     UINT64                  Granularity,
8063f5e024cSJung-uk Kim     UINT8                   Flags,
8073f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *MinOp,
8083f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *MaxOp,
8093f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *LengthOp,
8103f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *GranOp);
8113f5e024cSJung-uk Kim 
8123f5e024cSJung-uk Kim UINT16
8133f5e024cSJung-uk Kim RsGetStringDataLength (
8143f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *InitializerOp);
8153f5e024cSJung-uk Kim 
81653289f6aSNate Lawson ASL_RESOURCE_NODE *
81753289f6aSNate Lawson RsAllocateResourceNode (
81853289f6aSNate Lawson     UINT32                  Size);
81953289f6aSNate Lawson 
82053289f6aSNate Lawson void
82153289f6aSNate Lawson RsCreateBitField (
82253289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
82353289f6aSNate Lawson     char                    *Name,
82453289f6aSNate Lawson     UINT32                  ByteOffset,
82553289f6aSNate Lawson     UINT32                  BitOffset);
82653289f6aSNate Lawson 
82753289f6aSNate Lawson void
82853289f6aSNate Lawson RsCreateByteField (
82953289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
83053289f6aSNate Lawson     char                    *Name,
83153289f6aSNate Lawson     UINT32                  ByteOffset);
83253289f6aSNate Lawson 
83353289f6aSNate Lawson void
83453289f6aSNate Lawson RsSetFlagBits (
83553289f6aSNate Lawson     UINT8                   *Flags,
83653289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
83753289f6aSNate Lawson     UINT8                   Position,
83853289f6aSNate Lawson     UINT8                   DefaultBit);
83953289f6aSNate Lawson 
84053289f6aSNate Lawson ACPI_PARSE_OBJECT *
84153289f6aSNate Lawson RsCompleteNodeAndGetNext (
84253289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op);
84353289f6aSNate Lawson 
844fba7fc7eSJung-uk Kim void
845fba7fc7eSJung-uk Kim RsCheckListForDuplicates (
846fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
847fba7fc7eSJung-uk Kim 
84853289f6aSNate Lawson ASL_RESOURCE_NODE *
84953289f6aSNate Lawson RsDoOneResourceDescriptor (
85053289f6aSNate Lawson     ACPI_PARSE_OBJECT       *DescriptorTypeOp,
85153289f6aSNate Lawson     UINT32                  CurrentByteOffset,
85253289f6aSNate Lawson     UINT8                   *State);
85353289f6aSNate Lawson 
854fba7fc7eSJung-uk Kim /* Values for State above */
855fba7fc7eSJung-uk Kim 
85653289f6aSNate Lawson #define ACPI_RSTATE_NORMAL              0
85753289f6aSNate Lawson #define ACPI_RSTATE_START_DEPENDENT     1
85853289f6aSNate Lawson #define ACPI_RSTATE_DEPENDENT_LIST      2
85953289f6aSNate Lawson 
86053289f6aSNate Lawson UINT32
86153289f6aSNate Lawson RsLinkDescriptorChain (
86253289f6aSNate Lawson     ASL_RESOURCE_NODE       **PreviousRnode,
86353289f6aSNate Lawson     ASL_RESOURCE_NODE       *Rnode);
86453289f6aSNate Lawson 
865fba7fc7eSJung-uk Kim void
866fba7fc7eSJung-uk Kim RsDoResourceTemplate (
867fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op);
868fba7fc7eSJung-uk Kim 
86953289f6aSNate Lawson 
87053289f6aSNate Lawson /*
8713f5e024cSJung-uk Kim  * aslrestype1 - Miscellaneous Small descriptors
87253289f6aSNate Lawson  */
87353289f6aSNate Lawson ASL_RESOURCE_NODE *
8741a39cfb0SJung-uk Kim RsDoEndTagDescriptor (
8751a39cfb0SJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
8761a39cfb0SJung-uk Kim     UINT32                  CurrentByteOffset);
8771a39cfb0SJung-uk Kim 
8781a39cfb0SJung-uk Kim ASL_RESOURCE_NODE *
87953289f6aSNate Lawson RsDoEndDependentDescriptor (
88053289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
88153289f6aSNate Lawson     UINT32                  CurrentByteOffset);
88253289f6aSNate Lawson 
88353289f6aSNate Lawson ASL_RESOURCE_NODE *
88453289f6aSNate Lawson RsDoMemory24Descriptor (
88553289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
88653289f6aSNate Lawson     UINT32                  CurrentByteOffset);
88753289f6aSNate Lawson 
88853289f6aSNate Lawson ASL_RESOURCE_NODE *
88953289f6aSNate Lawson RsDoMemory32Descriptor (
89053289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
89153289f6aSNate Lawson     UINT32                  CurrentByteOffset);
89253289f6aSNate Lawson 
89353289f6aSNate Lawson ASL_RESOURCE_NODE *
89453289f6aSNate Lawson RsDoMemory32FixedDescriptor (
89553289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
89653289f6aSNate Lawson     UINT32                  CurrentByteOffset);
89753289f6aSNate Lawson 
89853289f6aSNate Lawson ASL_RESOURCE_NODE *
89953289f6aSNate Lawson RsDoStartDependentDescriptor (
90053289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
90153289f6aSNate Lawson     UINT32                  CurrentByteOffset);
90253289f6aSNate Lawson 
90353289f6aSNate Lawson ASL_RESOURCE_NODE *
90453289f6aSNate Lawson RsDoStartDependentNoPriDescriptor (
90553289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
90653289f6aSNate Lawson     UINT32                  CurrentByteOffset);
90753289f6aSNate Lawson 
90853289f6aSNate Lawson ASL_RESOURCE_NODE *
90953289f6aSNate Lawson RsDoVendorSmallDescriptor (
91053289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
91153289f6aSNate Lawson     UINT32                  CurrentByteOffset);
91253289f6aSNate Lawson 
91353289f6aSNate Lawson 
91453289f6aSNate Lawson /*
9153f5e024cSJung-uk Kim  * aslrestype1i - I/O-related Small descriptors
9163f5e024cSJung-uk Kim  */
9173f5e024cSJung-uk Kim ASL_RESOURCE_NODE *
9183f5e024cSJung-uk Kim RsDoDmaDescriptor (
9193f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
9203f5e024cSJung-uk Kim     UINT32                  CurrentByteOffset);
9213f5e024cSJung-uk Kim 
9223f5e024cSJung-uk Kim ASL_RESOURCE_NODE *
9233f5e024cSJung-uk Kim RsDoFixedIoDescriptor (
9243f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
9253f5e024cSJung-uk Kim     UINT32                  CurrentByteOffset);
9263f5e024cSJung-uk Kim 
9273f5e024cSJung-uk Kim ASL_RESOURCE_NODE *
9283f5e024cSJung-uk Kim RsDoIoDescriptor (
9293f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
9303f5e024cSJung-uk Kim     UINT32                  CurrentByteOffset);
9313f5e024cSJung-uk Kim 
9323f5e024cSJung-uk Kim ASL_RESOURCE_NODE *
9333f5e024cSJung-uk Kim RsDoIrqDescriptor (
9343f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
9353f5e024cSJung-uk Kim     UINT32                  CurrentByteOffset);
9363f5e024cSJung-uk Kim 
9373f5e024cSJung-uk Kim ASL_RESOURCE_NODE *
9383f5e024cSJung-uk Kim RsDoIrqNoFlagsDescriptor (
9393f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
9403f5e024cSJung-uk Kim     UINT32                  CurrentByteOffset);
9413f5e024cSJung-uk Kim 
9423f5e024cSJung-uk Kim 
9433f5e024cSJung-uk Kim /*
9443f5e024cSJung-uk Kim  * aslrestype2 - Large resource descriptors
94553289f6aSNate Lawson  */
946fba7fc7eSJung-uk Kim ASL_RESOURCE_NODE *
947fba7fc7eSJung-uk Kim RsDoInterruptDescriptor (
948fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
949fba7fc7eSJung-uk Kim     UINT32                  CurrentByteOffset);
95053289f6aSNate Lawson 
95153289f6aSNate Lawson ASL_RESOURCE_NODE *
9523f5e024cSJung-uk Kim RsDoVendorLargeDescriptor (
9533f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
9543f5e024cSJung-uk Kim     UINT32                  CurrentByteOffset);
9553f5e024cSJung-uk Kim 
9563f5e024cSJung-uk Kim ASL_RESOURCE_NODE *
9573f5e024cSJung-uk Kim RsDoGeneralRegisterDescriptor (
9583f5e024cSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
9593f5e024cSJung-uk Kim     UINT32                  CurrentByteOffset);
9603f5e024cSJung-uk Kim 
9613f5e024cSJung-uk Kim 
9623f5e024cSJung-uk Kim /*
9633f5e024cSJung-uk Kim  * aslrestype2d - DWord address descriptors
9643f5e024cSJung-uk Kim  */
9653f5e024cSJung-uk Kim ASL_RESOURCE_NODE *
96653289f6aSNate Lawson RsDoDwordIoDescriptor (
96753289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
96853289f6aSNate Lawson     UINT32                  CurrentByteOffset);
96953289f6aSNate Lawson 
97053289f6aSNate Lawson ASL_RESOURCE_NODE *
97153289f6aSNate Lawson RsDoDwordMemoryDescriptor (
97253289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
97353289f6aSNate Lawson     UINT32                  CurrentByteOffset);
97453289f6aSNate Lawson 
97553289f6aSNate Lawson ASL_RESOURCE_NODE *
976fba7fc7eSJung-uk Kim RsDoDwordSpaceDescriptor (
977fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
978fba7fc7eSJung-uk Kim     UINT32                  CurrentByteOffset);
979fba7fc7eSJung-uk Kim 
9803f5e024cSJung-uk Kim 
9813f5e024cSJung-uk Kim /*
9823f5e024cSJung-uk Kim  * aslrestype2e - Extended address descriptors
9833f5e024cSJung-uk Kim  */
984fba7fc7eSJung-uk Kim ASL_RESOURCE_NODE *
985fba7fc7eSJung-uk Kim RsDoExtendedIoDescriptor (
986fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
987fba7fc7eSJung-uk Kim     UINT32                  CurrentByteOffset);
988fba7fc7eSJung-uk Kim 
989fba7fc7eSJung-uk Kim ASL_RESOURCE_NODE *
990fba7fc7eSJung-uk Kim RsDoExtendedMemoryDescriptor (
991fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
992fba7fc7eSJung-uk Kim     UINT32                  CurrentByteOffset);
993fba7fc7eSJung-uk Kim 
994fba7fc7eSJung-uk Kim ASL_RESOURCE_NODE *
995fba7fc7eSJung-uk Kim RsDoExtendedSpaceDescriptor (
996fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
997fba7fc7eSJung-uk Kim     UINT32                  CurrentByteOffset);
998fba7fc7eSJung-uk Kim 
9993f5e024cSJung-uk Kim 
10003f5e024cSJung-uk Kim /*
10013f5e024cSJung-uk Kim  * aslrestype2q - QWord address descriptors
10023f5e024cSJung-uk Kim  */
1003fba7fc7eSJung-uk Kim ASL_RESOURCE_NODE *
100453289f6aSNate Lawson RsDoQwordIoDescriptor (
100553289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
100653289f6aSNate Lawson     UINT32                  CurrentByteOffset);
100753289f6aSNate Lawson 
100853289f6aSNate Lawson ASL_RESOURCE_NODE *
100953289f6aSNate Lawson RsDoQwordMemoryDescriptor (
101053289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
101153289f6aSNate Lawson     UINT32                  CurrentByteOffset);
101253289f6aSNate Lawson 
101353289f6aSNate Lawson ASL_RESOURCE_NODE *
1014fba7fc7eSJung-uk Kim RsDoQwordSpaceDescriptor (
1015fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
1016fba7fc7eSJung-uk Kim     UINT32                  CurrentByteOffset);
1017fba7fc7eSJung-uk Kim 
10183f5e024cSJung-uk Kim 
10193f5e024cSJung-uk Kim /*
10203f5e024cSJung-uk Kim  * aslrestype2w - Word address descriptors
10213f5e024cSJung-uk Kim  */
1022fba7fc7eSJung-uk Kim ASL_RESOURCE_NODE *
102353289f6aSNate Lawson RsDoWordIoDescriptor (
102453289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
102553289f6aSNate Lawson     UINT32                  CurrentByteOffset);
102653289f6aSNate Lawson 
102753289f6aSNate Lawson ASL_RESOURCE_NODE *
1028fba7fc7eSJung-uk Kim RsDoWordSpaceDescriptor (
1029fba7fc7eSJung-uk Kim     ACPI_PARSE_OBJECT       *Op,
1030fba7fc7eSJung-uk Kim     UINT32                  CurrentByteOffset);
1031fba7fc7eSJung-uk Kim 
1032fba7fc7eSJung-uk Kim ASL_RESOURCE_NODE *
103353289f6aSNate Lawson RsDoWordBusNumberDescriptor (
103453289f6aSNate Lawson     ACPI_PARSE_OBJECT       *Op,
103553289f6aSNate Lawson     UINT32                  CurrentByteOffset);
103653289f6aSNate Lawson 
1037a88e22b7SJung-uk Kim /*
1038a88e22b7SJung-uk Kim  * Entry to data table compiler subsystem
1039a88e22b7SJung-uk Kim  */
1040a88e22b7SJung-uk Kim ACPI_STATUS
1041a88e22b7SJung-uk Kim DtDoCompile(
1042a88e22b7SJung-uk Kim     void);
1043a88e22b7SJung-uk Kim 
1044a88e22b7SJung-uk Kim ACPI_STATUS
1045a88e22b7SJung-uk Kim DtCreateTemplates (
1046a88e22b7SJung-uk Kim     char                    *Signature);
1047a88e22b7SJung-uk Kim 
104853289f6aSNate Lawson #endif /*  __ASLCOMPILER_H */
104953289f6aSNate Lawson 
1050