aslcompiler.h revision 204773
1101214Smarkm
268506Sjulian/******************************************************************************
368506Sjulian *
468506Sjulian * Module Name: aslcompiler.h - common include file for iASL
568506Sjulian *
675517Sbrian *****************************************************************************/
722195Sjulian
868506Sjulian/******************************************************************************
968506Sjulian *
1075517Sbrian * 1. Copyright Notice
1168506Sjulian *
1268506Sjulian * Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp.
1332468Sjulian * All rights reserved.
14101214Smarkm *
15161023Srik * 2. License
1668506Sjulian *
1722195Sjulian * 2.1. This is your license from Intel Corp. under its intellectual property
1868506Sjulian * rights.  You may have additional license terms from the party that provided
1970165Simp * you this software, covering your right to use that party's intellectual
2070165Simp * property rights.
2170165Simp *
2270165Simp * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
2367505Sjulian * copy of the source code appearing in this file ("Covered Code") an
2422195Sjulian * irrevocable, perpetual, worldwide license under Intel's copyrights in the
2568606Sjulian * base code distributed originally by Intel ("Original Intel Code") to copy,
26120708Sdds * make derivatives, distribute, use and display any portion of the Covered
27120708Sdds * Code in any form, with the right to sublicense such rights; and
2822195Sjulian *
2922195Sjulian * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
30161023Srik * license (with the right to sublicense), under only those claims of Intel
31161023Srik * patents that are infringed by the Original Intel Code, to make, use, sell,
32161023Srik * offer to sell, and import the Covered Code and derivative works thereof
33161023Srik * solely to the minimum extent necessary to exercise the above copyright
34161023Srik * license, and in no event shall the patent license extend to any additions
35161023Srik * to or modifications of the Original Intel Code.  No other license or right
36101214Smarkm * is granted directly or by implication, estoppel or otherwise;
3722195Sjulian *
3867657Sjulian * The above copyright and patent license is granted only if the following
3967657Sjulian * conditions are met:
40120708Sdds *
4168506Sjulian * 3. Conditions
4268506Sjulian *
4368506Sjulian * 3.1. Redistribution of Source with Rights to Further Distribute Source.
44120708Sdds * Redistribution of source code of any substantial portion of the Covered
45120708Sdds * Code or modification with rights to further distribute source must include
4668506Sjulian * the above Copyright Notice, the above License, this list of Conditions,
47101214Smarkm * and the following Disclaimer and Export Compliance provision.  In addition,
4868506Sjulian * Licensee must cause all Covered Code to which Licensee contributes to
49120708Sdds * contain a file documenting the changes Licensee made to create that Covered
50120708Sdds * Code and the date of any change.  Licensee must include in that file the
51120708Sdds * documentation of any changes made by any predecessor Licensee.  Licensee
52161023Srik * must include a prominent statement that the modification is derived,
53120708Sdds * directly or indirectly, from Original Intel Code.
54120708Sdds *
55120708Sdds * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
5668506Sjulian * Redistribution of source code of any substantial portion of the Covered
57120708Sdds * Code or modification without rights to further distribute source must
58120708Sdds * include the following Disclaimer and Export Compliance provision in the
5968506Sjulian * documentation and/or other materials provided with distribution.  In
6068506Sjulian * addition, Licensee may not authorize further sublicense of source of any
6168506Sjulian * portion of the Covered Code, and must include terms to the effect that the
6268506Sjulian * license from Licensee to its licensee is limited to the intellectual
6367505Sjulian * property embodied in the software Licensee provides to its licensee, and
64161023Srik * not to intellectual property embodied in modifications its licensee may
6567505Sjulian * make.
6667505Sjulian *
6767505Sjulian * 3.3. Redistribution of Executable. Redistribution in executable form of any
6867505Sjulian * substantial portion of the Covered Code or modification must reproduce the
6967505Sjulian * above Copyright Notice, and the following Disclaimer and Export Compliance
7067505Sjulian * provision in the documentation and/or other materials provided with the
7167505Sjulian * distribution.
7267505Sjulian *
7332468Sjulian * 3.4. Intel retains all right, title, and interest in and to the Original
7467505Sjulian * Intel Code.
7567505Sjulian *
7667505Sjulian * 3.5. Neither the name Intel nor any other trademark owned or controlled by
7767505Sjulian * Intel shall be used in advertising or otherwise to promote the sale, use or
7867505Sjulian * other dealings in products derived from or relating to the Covered Code
7967505Sjulian * without prior written authorization from Intel.
8067505Sjulian *
8167505Sjulian * 4. Disclaimer and Export Compliance
8267505Sjulian *
8367505Sjulian * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
8467505Sjulian * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
85161023Srik * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
8667653Sjulian * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
8722195Sjulian * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
8822195Sjulian * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
8967505Sjulian * PARTICULAR PURPOSE.
9067505Sjulian *
9167505Sjulian * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
9267505Sjulian * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
9322195Sjulian * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
94101214Smarkm * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
95161023Srik * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
96161118Srik * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
97161118Srik * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
98161023Srik * LIMITED REMEDY.
99161023Srik *
100161023Srik * 4.3. Licensee shall not export, either directly or indirectly, any of this
101161023Srik * software or system incorporating such software without first obtaining any
10222195Sjulian * required license or other approval from the U. S. Department of Commerce or
10322195Sjulian * any other agency or department of the United States Government.  In the
10467505Sjulian * event Licensee exports any such software from the United States or
105161118Srik * re-exports any such software from a foreign destination, Licensee shall
106161118Srik * ensure that the distribution and export/re-export of the software is in
107161118Srik * compliance with all laws, regulations, orders, or other restrictions of the
10867653Sjulian * U.S. Export Administration Regulations. Licensee agrees that neither it nor
10922195Sjulian * any of its subsidiaries will export/re-export any technical data, process,
11022195Sjulian * software, or service, directly or indirectly, to any country for which the
111120708Sdds * United States government or any agency thereof requires an export license,
11267505Sjulian * other governmental approval, or letter of assurance, without first obtaining
11367505Sjulian * such license, approval or letter.
11467505Sjulian *
11567505Sjulian *****************************************************************************/
11622195Sjulian
11767657Sjulian
11867657Sjulian#ifndef __ASLCOMPILER_H
11922195Sjulian#define __ASLCOMPILER_H
12067657Sjulian
12167657Sjulian
12267657Sjulian/* Microsoft-specific */
12367657Sjulian
12467657Sjulian#if (defined WIN32 || defined WIN64)
12567657Sjulian
12667657Sjulian/* warn : used #pragma pack */
12767657Sjulian#pragma warning(disable:4103)
12867657Sjulian
12967657Sjulian/* warn : named type definition in parentheses */
13067657Sjulian#pragma warning(disable:4115)
13167657Sjulian#endif
13267657Sjulian
13367657Sjulian#include <stdio.h>
13467657Sjulian#include <stdlib.h>
13567657Sjulian#include <stdarg.h>
13667657Sjulian#include <string.h>
13767657Sjulian#include <errno.h>
13867657Sjulian#include <ctype.h>
13967657Sjulian
14022195Sjulian
14122195Sjulian#include <contrib/dev/acpica/include/acpi.h>
14268533Sjulian#include <contrib/dev/acpica/include/accommon.h>
14368533Sjulian#include <contrib/dev/acpica/include/amlresrc.h>
14468533Sjulian#include <contrib/dev/acpica/include/acdebug.h>
14568533Sjulian
14622195Sjulian/* Compiler headers */
147101214Smarkm
148101214Smarkm#include <contrib/dev/acpica/compiler/asldefine.h>
149101214Smarkm#include <contrib/dev/acpica/compiler/asltypes.h>
15022195Sjulian#include <contrib/dev/acpica/compiler/aslglobal.h>
15122195Sjulian
15267505Sjulian
15322195Sjulian/*******************************************************************************
15467505Sjulian *
15522195Sjulian * Compiler prototypes
15667505Sjulian *
15767505Sjulian ******************************************************************************/
15886327Sarr
159101214Smarkm/*
160101214Smarkm * parser - generated from flex/bison, lex/yacc, etc.
161101214Smarkm */
16267505Sjulianint
16367505SjulianAslCompilerparse(
164120707Sdds    void);
16567505Sjulian
166120707SddsACPI_PARSE_OBJECT *
167120707SddsAslDoError (
16868606Sjulian    void);
16967505Sjulian
170101214Smarkmint
17167505SjulianAslCompilerlex(
17222195Sjulian    void);
173120708Sdds
17468506Sjulianvoid
17568506SjulianResetCurrentLineBuffer (
17667505Sjulian    void);
17767505Sjulian
17822195Sjulianvoid
17975517SbrianInsertLineBuffer (
18075517Sbrian    int                     SourceChar);
181120708Sdds
18275517Sbrianint
18370165SimpAslPopInputFileStack (
18470165Simp    void);
18570165Simp
186101214Smarkmvoid
187120708SddsAslPushInputFileStack (
18868606Sjulian    FILE                    *InputFile,
18968606Sjulian    char                    *Filename);
19068606Sjulian
191120708Sdds/*
19222195Sjulian * aslstartup - called from main
19368606Sjulian */
194120708SddsACPI_STATUS
19568606SjulianAslDoOnePathname (
19668606Sjulian    char                    *Pathname);
19768606Sjulian
19868606SjulianACPI_STATUS
19968606SjulianAslDoOneFile (
20068606Sjulian    char                    *Filename);
20168606Sjulian
20268606Sjulian/*
203120708Sdds * aslcompile - compile mainline
204120708Sdds */
205120708Sddsvoid
206120708SddsAslCompilerSignon (
20768606Sjulian    UINT32                  FileId);
208161022Srik
20968606Sjulianvoid
210120708SddsAslCompilerFileHeader (
211120708Sdds    UINT32                  FileId);
212101214Smarkm
21368606Sjulianint
214120708SddsCmDoCompile (
21567653Sjulian    void);
21667653Sjulian
21770165Simpvoid
21870165SimpCmDoOutputFiles (
21967505Sjulian    void);
22067505Sjulian
22167505Sjulianvoid
22267505SjulianCmCleanupAndExit (
22367505Sjulian    void);
22467505Sjulian
22567505Sjulian
22667505Sjulian/*
22767568Sjulian * aslanalyze - semantic analysis
228101214Smarkm */
22922195SjulianACPI_STATUS
230161022SrikAnOtherSemanticAnalysisWalkBegin (
231120707Sdds    ACPI_PARSE_OBJECT       *Op,
232120707Sdds    UINT32                  Level,
233120707Sdds    void                    *Context);
234120707Sdds
235120707SddsACPI_STATUS
236120707SddsAnOtherSemanticAnalysisWalkEnd (
237120707Sdds    ACPI_PARSE_OBJECT       *Op,
238120707Sdds    UINT32                  Level,
23967505Sjulian    void                    *Context);
24068630Sjulian
24168630SjulianACPI_STATUS
242101214SmarkmAnOperandTypecheckWalkBegin (
24370165Simp    ACPI_PARSE_OBJECT       *Op,
244120708Sdds    UINT32                  Level,
245120708Sdds    void                    *Context);
246120708Sdds
24770165SimpACPI_STATUS
24868606SjulianAnOperandTypecheckWalkEnd (
24968606Sjulian    ACPI_PARSE_OBJECT       *Op,
25068606Sjulian    UINT32                  Level,
25168606Sjulian    void                    *Context);
25222195Sjulian
25367505SjulianACPI_STATUS
25468533SjulianAnMethodAnalysisWalkBegin (
25568533Sjulian    ACPI_PARSE_OBJECT       *Op,
25668533Sjulian    UINT32                  Level,
25767505Sjulian    void                    *Context);
25867505Sjulian
25967505SjulianACPI_STATUS
26068506SjulianAnMethodAnalysisWalkEnd (
26167505Sjulian    ACPI_PARSE_OBJECT       *Op,
26267505Sjulian    UINT32                  Level,
26367505Sjulian    void                    *Context);
264227844Smarius
26567505SjulianACPI_STATUS
26667505SjulianAnMethodTypingWalkBegin (
26767505Sjulian    ACPI_PARSE_OBJECT       *Op,
26867505Sjulian    UINT32                  Level,
26967505Sjulian    void                    *Context);
27067505Sjulian
27167505SjulianACPI_STATUS
27267505SjulianAnMethodTypingWalkEnd (
27367505Sjulian    ACPI_PARSE_OBJECT       *Op,
27467505Sjulian    UINT32                  Level,
27568506Sjulian    void                    *Context);
27668506Sjulian
27770165Simp
27870165Simp/*
27970165Simp * aslerror - error handling/reporting
28070165Simp */
28170165Simpvoid
28268506SjulianAslError (
28368506Sjulian    UINT8                   Level,
28468506Sjulian    UINT8                   MessageId,
28568506Sjulian    ACPI_PARSE_OBJECT       *Op,
28668506Sjulian    char                    *ExtraMessage);
28768506Sjulian
28868506Sjulianvoid
28968506SjulianAslCoreSubsystemError (
29068506Sjulian    ACPI_PARSE_OBJECT       *Op,
29168506Sjulian    ACPI_STATUS             Status,
29268506Sjulian    char                    *ExtraMessage,
29368506Sjulian    BOOLEAN                 Abort);
29467505Sjulian
295120708Sddsint
29667505SjulianAslCompilererror(
29768533Sjulian    char                    *s);
29868533Sjulian
29968533Sjulianvoid
30068533SjulianAslCommonError (
30168533Sjulian    UINT8                   Level,
30275517Sbrian    UINT8                   MessageId,
30368533Sjulian    UINT32                  CurrentLineNumber,
30468533Sjulian    UINT32                  LogicalLineNumber,
30568533Sjulian    UINT32                  LogicalByteOffset,
30668506Sjulian    UINT32                  Column,
30768506Sjulian    char                    *Filename,
30868506Sjulian    char                    *ExtraMessage);
30968533Sjulian
31068533Sjulianvoid
31168533SjulianAePrintException (
31268533Sjulian    UINT32                  FileId,
31368533Sjulian    ASL_ERROR_MSG           *Enode,
31468533Sjulian    char                    *Header);
315101214Smarkm
31668533Sjulianvoid
31768533SjulianAePrintErrorLog (
31868533Sjulian    UINT32                  FileId);
31970165Simp
32070165Simpvoid
32168533SjulianAeClearErrorLog (
32275517Sbrian    void);
32375517Sbrian
32468533SjulianACPI_PHYSICAL_ADDRESS
32568533SjulianAeLocalGetRootPointer (
32668533Sjulian    void);
32768506Sjulian
32868506Sjulian
32968506Sjulian/*
33068506Sjulian * asllisting - generate all "listing" type files
33168506Sjulian */
33268506Sjulianvoid
33368506SjulianLsDoListings (
33468506Sjulian    void);
33568506Sjulian
33668506Sjulianvoid
33768506SjulianLsWriteNodeToAsmListing (
33868533Sjulian    ACPI_PARSE_OBJECT       *Op);
33968506Sjulian
34068506Sjulianvoid
34168506SjulianLsWriteNode (
34268506Sjulian    ACPI_PARSE_OBJECT       *Op,
34368506Sjulian    UINT32                  FileId);
344120708Sdds
345120708Sddsvoid
34668506SjulianLsDoHexOutput (
34768748Sjulian    void);
34868748Sjulian
34968748Sjulianvoid
350101214SmarkmLsDumpParseTree (
351120708Sdds    void);
35268506Sjulian
35368506Sjulian/*
35468506Sjulian * aslfold - constant folding
35568506Sjulian */
35668506SjulianACPI_STATUS
35768506SjulianOpcAmlConstantWalk (
35868506Sjulian    ACPI_PARSE_OBJECT       *Op,
35968506Sjulian    UINT32                  Level,
36068506Sjulian    void                    *Context);
36168506Sjulian
36268506Sjulian
36368506Sjulian/*
36468506Sjulian * aslopcodes - generate AML opcodes
365120708Sdds */
36668506SjulianACPI_STATUS
36768506SjulianOpcAmlOpcodeWalk (
36868506Sjulian    ACPI_PARSE_OBJECT       *Op,
36968506Sjulian    UINT32                  Level,
37068506Sjulian    void                    *Context);
37168533Sjulian
37270165SimpACPI_STATUS
37370165SimpOpcAmlOpcodeUpdateWalk (
37470165Simp    ACPI_PARSE_OBJECT       *Op,
37570165Simp    UINT32                  Level,
37668533Sjulian    void                    *Context);
37768506Sjulian
37868506Sjulianvoid
37968506SjulianOpcGenerateAmlOpcode (
38068506Sjulian    ACPI_PARSE_OBJECT       *Op);
38167505Sjulian
38267505SjulianUINT32
383101214SmarkmOpcSetOptimalIntegerSize (
38468533Sjulian    ACPI_PARSE_OBJECT       *Op);
38568533Sjulian
38668533Sjulianvoid
38768533SjulianOpcGetIntegerWidth (
38867505Sjulian    ACPI_PARSE_OBJECT       *Op);
38922195Sjulian
39067505Sjulian
39122195Sjulian/*
39267505Sjulian * asloperands - generate AML operands for the AML opcodes
39368506Sjulian */
39470165SimpACPI_PARSE_OBJECT  *
39568506SjulianUtGetArg (
39622195Sjulian    ACPI_PARSE_OBJECT       *Op,
39767505Sjulian    UINT32                  Argn);
39867505Sjulian
39967505Sjulianvoid
40022195SjulianOpnGenerateAmlOperands (
401120708Sdds    ACPI_PARSE_OBJECT       *Op);
40267505Sjulian
403120708Sddsvoid
40475517SbrianOpnDoPackage (
40575517Sbrian    ACPI_PARSE_OBJECT       *Op);
40667505Sjulian
40768748Sjulian
40868748Sjulian/*
40968748Sjulian * aslopt - optmization
41068748Sjulian */
41168748Sjulianvoid
41268748SjulianOptOptimizeNamePath (
41368748Sjulian    ACPI_PARSE_OBJECT       *Op,
414120708Sdds    UINT32                  Flags,
41522195Sjulian    ACPI_WALK_STATE         *WalkState,
41668506Sjulian    char                    *AmlNameString,
41767505Sjulian    ACPI_NAMESPACE_NODE     *TargetNode);
41867505Sjulian
41967505Sjulian
42067505Sjulian/*
421120708Sdds * aslcodegen - code generation
42267505Sjulian */
42367653Sjulianvoid
42467505SjulianCgGenerateAmlOutput (
42567505Sjulian    void);
42667505Sjulian
42767505Sjulian
42867505Sjulian/*
429101214Smarkm * asllength - calculate/adjust AML package lengths
43068506Sjulian */
43168748SjulianACPI_STATUS
43268748SjulianLnPackageLengthWalk (
43367505Sjulian    ACPI_PARSE_OBJECT       *Op,
43468748Sjulian    UINT32                  Level,
43567505Sjulian    void                    *Context);
43668533Sjulian
43768533SjulianACPI_STATUS
43875517SbrianLnInitLengthsWalk (
43968748Sjulian    ACPI_PARSE_OBJECT       *Op,
44068748Sjulian    UINT32                  Level,
44168748Sjulian    void                    *Context);
44268748Sjulian
44368748Sjulianvoid
444120708SddsCgGenerateAmlLengths (
445101214Smarkm    ACPI_PARSE_OBJECT       *Op);
446101214Smarkm
44768748Sjulian
44868748Sjulian/*
44968748Sjulian * aslmap - opcode mappings and reserved method names
450101214Smarkm */
45168748SjulianACPI_OBJECT_TYPE
45268748SjulianAslMapNamedOpcodeToDataType (
453101214Smarkm    UINT16                  Opcode);
45468748Sjulian
45568748Sjulian
45668748Sjulian/*
45768748Sjulian * aslpredef - ACPI predefined names support
45868533Sjulian */
45968533Sjulianvoid
46068748SjulianApCheckForPredefinedMethod (
46168748Sjulian    ACPI_PARSE_OBJECT       *Op,
46267505Sjulian    ASL_METHOD_INFO         *MethodInfo);
46368533Sjulian
46468533SjulianUINT32
46568533SjulianApCheckForPredefinedName (
46668506Sjulian    ACPI_PARSE_OBJECT       *Op,
46768506Sjulian    char                    *Name);
468120708Sdds
469101214Smarkmvoid
470101214SmarkmApCheckForPredefinedObject (
47168506Sjulian    ACPI_PARSE_OBJECT       *Op,
47267505Sjulian    char                    *Name);
47367653Sjulian
47467653Sjulianvoid
47568533SjulianApDisplayReservedNames (
47668533Sjulian    void);
47768533Sjulian
47867653Sjulian
47968533Sjulian/*
48068533Sjulian * asltransform - parse tree transformations
48168533Sjulian */
48268533SjulianACPI_STATUS
48368533SjulianTrAmlTransformWalk (
48468533Sjulian    ACPI_PARSE_OBJECT       *Op,
48568533Sjulian    UINT32                  Level,
48668533Sjulian    void                    *Context);
48768748Sjulian
488222179Suqs
489120708Sdds/*
490120708Sdds * asltree - parse tree support
491120708Sdds */
49268533SjulianACPI_STATUS
49367653SjulianTrWalkParseTree (
49468533Sjulian    ACPI_PARSE_OBJECT       *Op,
495120708Sdds    UINT32                  Visitation,
496120708Sdds    ASL_WALK_CALLBACK       DescendingCallback,
49767505Sjulian    ASL_WALK_CALLBACK       AscendingCallback,
49868533Sjulian    void                    *Context);
49968533Sjulian
50068533Sjulian/* Values for "Visitation" parameter above */
50175517Sbrian
50275517Sbrian#define ASL_WALK_VISIT_DOWNWARD     0x01
50368533Sjulian#define ASL_WALK_VISIT_UPWARD       0x02
50468533Sjulian#define ASL_WALK_VISIT_TWICE        (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD)
50568533Sjulian
50668533Sjulian
50767505SjulianACPI_PARSE_OBJECT *
50867505SjulianTrAllocateNode (
509120708Sdds    UINT32                  ParseOpcode);
51067505Sjulian
51167505Sjulianvoid
51222195SjulianTrReleaseNode (
51368533Sjulian    ACPI_PARSE_OBJECT       *Op);
51467505Sjulian
51522195SjulianACPI_PARSE_OBJECT *
51622195SjulianTrUpdateNode (
51722195Sjulian    UINT32                  ParseOpcode,
51868533Sjulian    ACPI_PARSE_OBJECT       *Op);
51922195Sjulian
52068533SjulianACPI_PARSE_OBJECT *
52168606SjulianTrCreateNode (
522120708Sdds    UINT32                  ParseOpcode,
52322195Sjulian    UINT32                  NumChildren,
52422195Sjulian    ...);
52567505Sjulian
52622195SjulianACPI_PARSE_OBJECT *
52768606SjulianTrCreateLeafNode (
52870165Simp    UINT32                  ParseOpcode);
52968606Sjulian
53068606SjulianACPI_PARSE_OBJECT *
531101214SmarkmTrCreateValuedLeafNode (
53268606Sjulian    UINT32                  ParseOpcode,
53368606Sjulian    UINT64                  Value);
53468606Sjulian
53568606SjulianACPI_PARSE_OBJECT *
536101214SmarkmTrLinkChildren (
537120708Sdds    ACPI_PARSE_OBJECT       *Op,
53868606Sjulian    UINT32                  NumChildren,
53968606Sjulian    ...);
54068606Sjulian
54168606Sjulianvoid
54268606SjulianTrSetEndLineNumber (
54368606Sjulian    ACPI_PARSE_OBJECT       *Op);
54468606Sjulian
54570165Simpvoid
54668606SjulianTrWalkTree (
54768606Sjulian    void);
54868606Sjulian
54968606SjulianACPI_PARSE_OBJECT *
55068606SjulianTrLinkPeerNode (
55170165Simp    ACPI_PARSE_OBJECT       *Op1,
55270165Simp    ACPI_PARSE_OBJECT       *Op2);
55370165Simp
55470165SimpACPI_PARSE_OBJECT *
55570165SimpTrLinkChildNode (
55668606Sjulian    ACPI_PARSE_OBJECT       *Op1,
557101214Smarkm    ACPI_PARSE_OBJECT       *Op2);
558101214Smarkm
559101214SmarkmACPI_PARSE_OBJECT *
56068606SjulianTrSetNodeFlags (
56168606Sjulian    ACPI_PARSE_OBJECT       *Op,
56268606Sjulian    UINT32                  Flags);
56368606Sjulian
56468606SjulianACPI_PARSE_OBJECT *
56568606SjulianTrLinkPeerNodes (
56668606Sjulian    UINT32                  NumPeers,
56768606Sjulian    ...);
56868606Sjulian
56968606Sjulian
57068606Sjulian/*
57168606Sjulian * aslfiles - File I/O support
57268606Sjulian */
57368606Sjulianvoid
57468606SjulianAslAbort (
57568630Sjulian    void);
57670165Simp
57770165Simpvoid
57870165SimpFlAddIncludeDirectory (
57970165Simp    char                    *Dir);
58070165Simp
58168606Sjulianvoid
58268606SjulianFlOpenIncludeFile (
58368606Sjulian    ACPI_PARSE_OBJECT       *Op);
58468606Sjulian
58568606Sjulianvoid
58668606SjulianFlFileError (
58768606Sjulian    UINT32                  FileId,
58870165Simp    UINT8                   ErrorId);
58968606Sjulian
59068606SjulianACPI_STATUS
59168606SjulianFlReadFile (
59268748Sjulian    UINT32                  FileId,
59375517Sbrian    void                    *Buffer,
59468748Sjulian    UINT32                  Length);
59570165Simp
59668748Sjulianvoid
59768748SjulianFlWriteFile (
59868748Sjulian    UINT32                  FileId,
59968748Sjulian    void                    *Buffer,
60068748Sjulian    UINT32                  Length);
60168748Sjulian
60268606Sjulianvoid
60368606SjulianFlSeekFile (
60468606Sjulian    UINT32                  FileId,
60568606Sjulian    long                    Offset);
60668606Sjulian
60768606Sjulianvoid
60868606SjulianFlCloseFile (
60968606Sjulian    UINT32                  FileId);
61068606Sjulian
61168606Sjulianvoid
61270165SimpFlPrintFile (
613101214Smarkm    UINT32                  FileId,
61468606Sjulian    char                    *Format,
61568606Sjulian    ...);
61668606Sjulian
61768606Sjulianvoid
61868606SjulianFlSetLineNumber (
61968606Sjulian    ACPI_PARSE_OBJECT       *Op);
62068606Sjulian
62170165SimpACPI_STATUS
62268606SjulianFlOpenInputFile (
62368606Sjulian    char                    *InputFilename);
624101214Smarkm
62568606SjulianACPI_STATUS
62668606SjulianFlOpenAmlOutputFile (
62768606Sjulian    char                    *InputFilename);
62868606Sjulian
62968606SjulianACPI_STATUS
63068606SjulianFlOpenMiscOutputFiles (
63168606Sjulian    char                    *InputFilename);
63268606Sjulian
63370165Simp
63468606Sjulian/*
63568606Sjulian * asload - load namespace in prep for cross reference
63668606Sjulian */
63768606SjulianACPI_STATUS
63868606SjulianLdLoadNamespace (
63970165Simp    ACPI_PARSE_OBJECT       *RootOp);
64070165Simp
64175517Sbrian
64270165Simp/*
64370165Simp * asllookup - namespace cross reference
64468606Sjulian */
64570165SimpACPI_STATUS
64668606SjulianLkCrossReferenceNamespace (
64770165Simp    void);
64867653Sjulian
64940591Sbdevoid
65067653SjulianLkFindUnreferencedObjects (
65167653Sjulian    void);
65268606Sjulian
65367653SjulianACPI_STATUS
654101214SmarkmLsDisplayNamespace (
65567653Sjulian    void);
65667653Sjulian
65768533Sjulian
65868533Sjulian/*
65967653Sjulian * aslutils - common compiler utilites
660120708Sdds */
66168533Sjulianvoid
66268533SjulianDbgPrint (
66368533Sjulian    UINT32                  Type,
66470165Simp    char                    *Format,
66570165Simp    ...);
66670165Simp
66770165Simp/* Type values for above */
66870165Simp
66975517Sbrian#define ASL_DEBUG_OUTPUT    0
67070165Simp#define ASL_PARSE_OUTPUT    1
67175517Sbrian#define ASL_TREE_OUTPUT     2
67268533Sjulian
67367568Sjulianvoid
674120708SddsUtDisplayConstantOpcodes (
67567568Sjulian    void);
67667653Sjulian
677120708SddsUINT8
678101214SmarkmUtBeginEvent (
67968606Sjulian    char                    *Name);
68067568Sjulian
68168533Sjulianvoid
68268533SjulianUtEndEvent (
68368533Sjulian    UINT8                   Event);
68468533Sjulian
68570165Simpvoid *
68670165SimpUtLocalCalloc (
68770165Simp    UINT32                  Size);
68870165Simp
68968533Sjulianvoid
69068533SjulianUtPrintFormattedName (
69167505Sjulian    UINT16                  ParseOpcode,
69267653Sjulian    UINT32                  Level);
69367653Sjulian
69467653Sjulianvoid
695120708SddsUtDisplaySummary (
69667653Sjulian    UINT32                  FileId);
69768606Sjulian
69867653SjulianUINT8
69967505SjulianUtHexCharToValue (
70040591Sbde    int                     HexChar);
70167505Sjulian
70270165Simpvoid
70367505SjulianUtConvertByteToHex (
70467568Sjulian    UINT8                   RawByte,
70522195Sjulian    UINT8                   *Buffer);
70667653Sjulian
70767653Sjulianvoid
708101214SmarkmUtConvertByteToAsmHex (
709101214Smarkm    UINT8                   RawByte,
71067653Sjulian    UINT8                   *Buffer);
71170165Simp
71270165Simpchar *
71370165SimpUtGetOpName (
71470165Simp    UINT32                  ParseOpcode);
71570165Simp
71667653Sjulianvoid
71767653SjulianUtSetParseOpName (
71867653Sjulian    ACPI_PARSE_OBJECT       *Op);
71967653Sjulian
72067653Sjulianchar *
72167653SjulianUtGetStringBuffer (
72267653Sjulian    UINT32                  Length);
72367653Sjulian
72467568SjulianACPI_STATUS
725101214SmarkmUtInternalizeName (
72667568Sjulian    char                    *ExternalName,
72767653Sjulian    char                    **ConvertedName);
72867653Sjulian
72967653Sjulianvoid
73067653SjulianUtAttachNamepathToOwner (
731120708Sdds    ACPI_PARSE_OBJECT       *Op,
73267653Sjulian    ACPI_PARSE_OBJECT       *NameNode);
73367653Sjulian
73468533SjulianACPI_PARSE_OBJECT *
73567653SjulianUtCheckIntegerRange (
73667653Sjulian    ACPI_PARSE_OBJECT       *Op,
73767653Sjulian    UINT32                  LowValue,
73867653Sjulian    UINT32                  HighValue);
73967653Sjulian
74067653SjulianUINT64
74167653SjulianUtDoConstant (
74270165Simp    char                    *String);
743120708Sdds
74467653Sjulian
74567653Sjulian/*
74667653Sjulian * aslresource - Resource template generation utilities
747101214Smarkm */
74867653SjulianASL_RESOURCE_NODE *
74967653SjulianRsAllocateResourceNode (
75067653Sjulian    UINT32                  Size);
75168533Sjulian
752101214Smarkmvoid
75367653SjulianRsCreateBitField (
75467653Sjulian    ACPI_PARSE_OBJECT       *Op,
75567653Sjulian    char                    *Name,
75667653Sjulian    UINT32                  ByteOffset,
757101214Smarkm    UINT32                  BitOffset);
75867653Sjulian
75967653Sjulianvoid
76068506SjulianRsCreateByteField (
76167653Sjulian    ACPI_PARSE_OBJECT       *Op,
762101214Smarkm    char                    *Name,
76367653Sjulian    UINT32                  ByteOffset);
76467653Sjulian
76567653Sjulianvoid
76667653SjulianRsSetFlagBits (
76767653Sjulian    UINT8                   *Flags,
768120708Sdds    ACPI_PARSE_OBJECT       *Op,
76967653Sjulian    UINT8                   Position,
770120708Sdds    UINT8                   DefaultBit);
77167653Sjulian
77267653SjulianACPI_PARSE_OBJECT *
77367653SjulianRsCompleteNodeAndGetNext (
77467653Sjulian    ACPI_PARSE_OBJECT       *Op);
77567653Sjulian
77670165Simpvoid
77767653SjulianRsCheckListForDuplicates (
77867653Sjulian    ACPI_PARSE_OBJECT       *Op);
77967568Sjulian
78067568SjulianASL_RESOURCE_NODE *
78167568SjulianRsDoOneResourceDescriptor (
78267568Sjulian    ACPI_PARSE_OBJECT       *DescriptorTypeOp,
78367568Sjulian    UINT32                  CurrentByteOffset,
78467568Sjulian    UINT8                   *State);
78567568Sjulian
78667568Sjulian/* Values for State above */
78767568Sjulian
78867568Sjulian#define ACPI_RSTATE_NORMAL              0
78967568Sjulian#define ACPI_RSTATE_START_DEPENDENT     1
79067568Sjulian#define ACPI_RSTATE_DEPENDENT_LIST      2
79167568Sjulian
79268748SjulianUINT32
79367568SjulianRsLinkDescriptorChain (
79467568Sjulian    ASL_RESOURCE_NODE       **PreviousRnode,
79567568Sjulian    ASL_RESOURCE_NODE       *Rnode);
79667568Sjulian
79768748Sjulianvoid
79867568SjulianRsDoResourceTemplate (
79967568Sjulian    ACPI_PARSE_OBJECT       *Op);
80067568Sjulian
80167568Sjulian
80267568Sjulian/*
80367568Sjulian * aslrestype1 - generate Small descriptors
80467568Sjulian */
80567568SjulianASL_RESOURCE_NODE *
806101214SmarkmRsDoEndTagDescriptor (
80767568Sjulian    ACPI_PARSE_OBJECT       *Op,
80867505Sjulian    UINT32                  CurrentByteOffset);
80922195Sjulian
81022195SjulianASL_RESOURCE_NODE *
81140591SbdeRsDoDmaDescriptor (
81267505Sjulian    ACPI_PARSE_OBJECT       *Op,
81322195Sjulian    UINT32                  CurrentByteOffset);
81470165Simp
81567505SjulianASL_RESOURCE_NODE *
816101214SmarkmRsDoEndDependentDescriptor (
817120708Sdds    ACPI_PARSE_OBJECT       *Op,
81870165Simp    UINT32                  CurrentByteOffset);
81970165Simp
82070165SimpASL_RESOURCE_NODE *
82122195SjulianRsDoFixedIoDescriptor (
822120708Sdds    ACPI_PARSE_OBJECT       *Op,
82322195Sjulian    UINT32                  CurrentByteOffset);
82422195Sjulian
82522195SjulianASL_RESOURCE_NODE *
82667505SjulianRsDoIoDescriptor (
827161022Srik    ACPI_PARSE_OBJECT       *Op,
82822195Sjulian    UINT32                  CurrentByteOffset);
82970165Simp
83067505SjulianASL_RESOURCE_NODE *
831120708SddsRsDoIrqDescriptor (
83222195Sjulian    ACPI_PARSE_OBJECT       *Op,
83367505Sjulian    UINT32                  CurrentByteOffset);
834120708Sdds
83568506SjulianASL_RESOURCE_NODE *
836101214SmarkmRsDoIrqNoFlagsDescriptor (
83768506Sjulian    ACPI_PARSE_OBJECT       *Op,
83822195Sjulian    UINT32                  CurrentByteOffset);
83967505Sjulian
84022195SjulianASL_RESOURCE_NODE *
84122195SjulianRsDoMemory24Descriptor (
84222195Sjulian    ACPI_PARSE_OBJECT       *Op,
84367505Sjulian    UINT32                  CurrentByteOffset);
84422195Sjulian
84522195SjulianASL_RESOURCE_NODE *
846120708SddsRsDoMemory32Descriptor (
84722195Sjulian    ACPI_PARSE_OBJECT       *Op,
84867505Sjulian    UINT32                  CurrentByteOffset);
849161022Srik
85022195SjulianASL_RESOURCE_NODE *
85170165SimpRsDoMemory32FixedDescriptor (
85222195Sjulian    ACPI_PARSE_OBJECT       *Op,
853101214Smarkm    UINT32                  CurrentByteOffset);
854120708Sdds
85522195SjulianASL_RESOURCE_NODE *
856120708SddsRsDoStartDependentDescriptor (
85722195Sjulian    ACPI_PARSE_OBJECT       *Op,
85822195Sjulian    UINT32                  CurrentByteOffset);
85922195Sjulian
86067505SjulianASL_RESOURCE_NODE *
861161022SrikRsDoStartDependentNoPriDescriptor (
86222195Sjulian    ACPI_PARSE_OBJECT       *Op,
86370165Simp    UINT32                  CurrentByteOffset);
86422195Sjulian
865101214SmarkmASL_RESOURCE_NODE *
866120708SddsRsDoVendorSmallDescriptor (
86722195Sjulian    ACPI_PARSE_OBJECT       *Op,
868120708Sdds    UINT32                  CurrentByteOffset);
86922195Sjulian
87022195Sjulian
87122195Sjulian/*
87267505Sjulian * aslrestype2 - generate Large descriptors
873161022Srik */
87422195SjulianASL_RESOURCE_NODE *
87570165SimpRsDoInterruptDescriptor (
87667505Sjulian    ACPI_PARSE_OBJECT       *Op,
87722195Sjulian    UINT32                  CurrentByteOffset);
878101214Smarkm
879120708SddsASL_RESOURCE_NODE *
880120708SddsRsDoDwordIoDescriptor (
88122195Sjulian    ACPI_PARSE_OBJECT       *Op,
882120708Sdds    UINT32                  CurrentByteOffset);
88322195Sjulian
88422195SjulianASL_RESOURCE_NODE *
88522195SjulianRsDoDwordMemoryDescriptor (
88622195Sjulian    ACPI_PARSE_OBJECT       *Op,
88767505Sjulian    UINT32                  CurrentByteOffset);
888161022Srik
88922195SjulianASL_RESOURCE_NODE *
89070165SimpRsDoDwordSpaceDescriptor (
89122195Sjulian    ACPI_PARSE_OBJECT       *Op,
89222195Sjulian    UINT32                  CurrentByteOffset);
893101214Smarkm
894120708SddsASL_RESOURCE_NODE *
895120708SddsRsDoExtendedIoDescriptor (
89622195Sjulian    ACPI_PARSE_OBJECT       *Op,
897120708Sdds    UINT32                  CurrentByteOffset);
89822195Sjulian
89922195SjulianASL_RESOURCE_NODE *
90022195SjulianRsDoExtendedMemoryDescriptor (
90122195Sjulian    ACPI_PARSE_OBJECT       *Op,
90267505Sjulian    UINT32                  CurrentByteOffset);
903161022Srik
90422195SjulianASL_RESOURCE_NODE *
90570165SimpRsDoExtendedSpaceDescriptor (
90622195Sjulian    ACPI_PARSE_OBJECT       *Op,
907101214Smarkm    UINT32                  CurrentByteOffset);
90868506Sjulian
90968506SjulianASL_RESOURCE_NODE *
91022195SjulianRsDoQwordIoDescriptor (
911120708Sdds    ACPI_PARSE_OBJECT       *Op,
912120708Sdds    UINT32                  CurrentByteOffset);
913101214Smarkm
91422195SjulianASL_RESOURCE_NODE *
91522195SjulianRsDoQwordMemoryDescriptor (
91622195Sjulian    ACPI_PARSE_OBJECT       *Op,
91722195Sjulian    UINT32                  CurrentByteOffset);
91822195Sjulian
91922195SjulianASL_RESOURCE_NODE *
92022195SjulianRsDoQwordSpaceDescriptor (
92167505Sjulian    ACPI_PARSE_OBJECT       *Op,
922161022Srik    UINT32                  CurrentByteOffset);
92322195Sjulian
92470165SimpASL_RESOURCE_NODE *
92522195SjulianRsDoWordIoDescriptor (
926101214Smarkm    ACPI_PARSE_OBJECT       *Op,
927120708Sdds    UINT32                  CurrentByteOffset);
92822195Sjulian
929120708SddsASL_RESOURCE_NODE *
930120708SddsRsDoWordSpaceDescriptor (
93122195Sjulian    ACPI_PARSE_OBJECT       *Op,
93222195Sjulian    UINT32                  CurrentByteOffset);
93322195Sjulian
93422195SjulianASL_RESOURCE_NODE *
93567505SjulianRsDoWordBusNumberDescriptor (
93622195Sjulian    ACPI_PARSE_OBJECT       *Op,
93722195Sjulian    UINT32                  CurrentByteOffset);
938120708Sdds
93922195SjulianASL_RESOURCE_NODE *
94022195SjulianRsDoVendorLargeDescriptor (
94122195Sjulian    ACPI_PARSE_OBJECT       *Op,
94222195Sjulian    UINT32                  CurrentByteOffset);
94322195Sjulian
94422195SjulianASL_RESOURCE_NODE *
94522195SjulianRsDoGeneralRegisterDescriptor (
94622195Sjulian    ACPI_PARSE_OBJECT       *Op,
94722195Sjulian    UINT32                  CurrentByteOffset);
94822195Sjulian
949120708Sdds#endif /*  __ASLCOMPILER_H */
95022195Sjulian
951120708Sdds