aslcompiler.h revision 118611
10SN/A
24000SN/A/******************************************************************************
30SN/A *
40SN/A * Module Name: aslcompiler.h - common include file
50SN/A *              $Revision: 127 $
60SN/A *
7553SN/A *****************************************************************************/
80SN/A
9553SN/A/******************************************************************************
100SN/A *
110SN/A * 1. Copyright Notice
120SN/A *
130SN/A * Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
140SN/A * All rights reserved.
150SN/A *
160SN/A * 2. License
170SN/A *
180SN/A * 2.1. This is your license from Intel Corp. under its intellectual property
190SN/A * rights.  You may have additional license terms from the party that provided
200SN/A * you this software, covering your right to use that party's intellectual
21553SN/A * property rights.
22553SN/A *
23553SN/A * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
240SN/A * copy of the source code appearing in this file ("Covered Code") an
250SN/A * irrevocable, perpetual, worldwide license under Intel's copyrights in the
263233SN/A * base code distributed originally by Intel ("Original Intel Code") to copy,
270SN/A * make derivatives, distribute, use and display any portion of the Covered
281356SN/A * Code in any form, with the right to sublicense such rights; and
294089SN/A *
301356SN/A * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
313226SN/A * license (with the right to sublicense), under only those claims of Intel
323233SN/A * patents that are infringed by the Original Intel Code, to make, use, sell,
333294SN/A * offer to sell, and import the Covered Code and derivative works thereof
343233SN/A * solely to the minimum extent necessary to exercise the above copyright
353233SN/A * license, and in no event shall the patent license extend to any additions
363786SN/A * to or modifications of the Original Intel Code.  No other license or right
372223SN/A * is granted directly or by implication, estoppel or otherwise;
383233SN/A *
391356SN/A * The above copyright and patent license is granted only if the following
403233SN/A * conditions are met:
413786SN/A *
423786SN/A * 3. Conditions
433233SN/A *
443233SN/A * 3.1. Redistribution of Source with Rights to Further Distribute Source.
453233SN/A * Redistribution of source code of any substantial portion of the Covered
463233SN/A * Code or modification with rights to further distribute source must include
473233SN/A * the above Copyright Notice, the above License, this list of Conditions,
483233SN/A * and the following Disclaimer and Export Compliance provision.  In addition,
493233SN/A * Licensee must cause all Covered Code to which Licensee contributes to
503606SN/A * contain a file documenting the changes Licensee made to create that Covered
513233SN/A * Code and the date of any change.  Licensee must include in that file the
523233SN/A * documentation of any changes made by any predecessor Licensee.  Licensee
533233SN/A * must include a prominent statement that the modification is derived,
543233SN/A * directly or indirectly, from Original Intel Code.
553606SN/A *
563233SN/A * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
573233SN/A * Redistribution of source code of any substantial portion of the Covered
584267Sksrini * Code or modification without rights to further distribute source must
594089SN/A * include the following Disclaimer and Export Compliance provision in the
603233SN/A * documentation and/or other materials provided with distribution.  In
614089SN/A * addition, Licensee may not authorize further sublicense of source of any
623233SN/A * portion of the Covered Code, and must include terms to the effect that the
633233SN/A * license from Licensee to its licensee is limited to the intellectual
640SN/A * property embodied in the software Licensee provides to its licensee, and
650SN/A * not to intellectual property embodied in modifications its licensee may
660SN/A * make.
674190Sksrini *
680SN/A * 3.3. Redistribution of Executable. Redistribution in executable form of any
690SN/A * substantial portion of the Covered Code or modification must reproduce the
704267Sksrini * above Copyright Notice, and the following Disclaimer and Export Compliance
714267Sksrini * provision in the documentation and/or other materials provided with the
724267Sksrini * distribution.
734267Sksrini *
744267Sksrini * 3.4. Intel retains all right, title, and interest in and to the Original
750SN/A * Intel Code.
760SN/A *
770SN/A * 3.5. Neither the name Intel nor any other trademark owned or controlled by
780SN/A * Intel shall be used in advertising or otherwise to promote the sale, use or
790SN/A * other dealings in products derived from or relating to the Covered Code
804190Sksrini * without prior written authorization from Intel.
814072SN/A *
824072SN/A * 4. Disclaimer and Export Compliance
834072SN/A *
844072SN/A * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
850SN/A * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
860SN/A * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
870SN/A * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
880SN/A * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
890SN/A * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
900SN/A * PARTICULAR PURPOSE.
910SN/A *
920SN/A * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
930SN/A * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
940SN/A * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
950SN/A * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
960SN/A * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
970SN/A * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
980SN/A * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
990SN/A * LIMITED REMEDY.
1000SN/A *
1010SN/A * 4.3. Licensee shall not export, either directly or indirectly, any of this
1020SN/A * software or system incorporating such software without first obtaining any
1030SN/A * required license or other approval from the U. S. Department of Commerce or
1043606SN/A * any other agency or department of the United States Government.  In the
1050SN/A * event Licensee exports any such software from the United States or
1060SN/A * re-exports any such software from a foreign destination, Licensee shall
1070SN/A * ensure that the distribution and export/re-export of the software is in
1080SN/A * compliance with all laws, regulations, orders, or other restrictions of the
1093786SN/A * U.S. Export Administration Regulations. Licensee agrees that neither it nor
1100SN/A * any of its subsidiaries will export/re-export any technical data, process,
1110SN/A * software, or service, directly or indirectly, to any country for which the
1120SN/A * United States government or any agency thereof requires an export license,
1131412SN/A * other governmental approval, or letter of assurance, without first obtaining
1140SN/A * such license, approval or letter.
1150SN/A *
1160SN/A *****************************************************************************/
1170SN/A
1180SN/A
1190SN/A#ifndef __ASLCOMPILER_H
1201409SN/A#define __ASLCOMPILER_H
1211409SN/A
1221409SN/A
1230SN/A/* Microsoft-specific */
1240SN/A
1250SN/A#if (defined WIN32 || defined WIN64)
1260SN/A
1270SN/A/* warn : used #pragma pack */
1280SN/A#pragma warning(disable:4103)
1290SN/A
1300SN/A/* warn : named type definition in parentheses */
1310SN/A#pragma warning(disable:4115)
1320SN/A#endif
1330SN/A
1340SN/A#include <stdio.h>
1350SN/A#include <stdlib.h>
1360SN/A#include <stdarg.h>
1370SN/A#include <string.h>
1380SN/A#include <errno.h>
1390SN/A#include <ctype.h>
1400SN/A
1413233SN/A
1423233SN/A#include "acpi.h"
1433233SN/A#include "amlresrc.h"
1443233SN/A#include "acdebug.h"
1453233SN/A#include "asltypes.h"
1460SN/A#include "aslglobal.h"
1470SN/A
1480SN/A
1490SN/A/*
1500SN/A * Compiler versions and names
1510SN/A */
1520SN/A
153139SN/A#define CompilerCreatorRevision     ACPI_CA_VERSION
1540SN/A
1552539SN/A#define IntelAcpiCA                 "Intel ACPI Component Architecture"
1560SN/A#define CompilerId                  "ASL Optimizing Compiler / AML Disassembler"
1570SN/A#define CompilerCopyright           "Copyright (C) 2000 - 2003 Intel Corporation"
1583595SN/A#define CompilerCompliance          "ACPI 2.0b"
1590SN/A#define CompilerName                "iasl"
16073SN/A#define CompilerCreatorId           "INTL"
1610SN/A
1620SN/A
1633595SN/A/* Configuration constants */
1640SN/A
16573SN/A#define ASL_MAX_ERROR_COUNT         200
1660SN/A#define ASL_NODE_CACHE_SIZE         1024
1670SN/A#define ASL_STRING_CACHE_SIZE       32768
1683595SN/A
1690SN/A#define ASL_FIRST_PARSE_OPCODE      PARSEOP_ACCESSAS
1703505SN/A#define ASL_YYTNAME_START           3
1710SN/A
1720SN/A/*
1732539SN/A * Macros
1742539SN/A */
1752539SN/A
1763233SN/A#define ASL_RESDESC_OFFSET(m)       ACPI_OFFSET (ASL_RESOURCE_DESC, m)
1773233SN/A#define ASL_PTR_DIFF(a,b)           ((UINT8 *)(b) - (UINT8 *)(a))
1783233SN/A#define ASL_PTR_ADD(a,b)            ((UINT8 *)(a) = ((UINT8 *)(a) + (b)))
1793233SN/A#define ASL_GET_CHILD_NODE(a)       (a)->Asl.Child
1803233SN/A#define ASL_GET_PEER_NODE(a)        (a)->Asl.Next
1813233SN/A#define OP_TABLE_ENTRY(a,b,c,d)     {b,d,a,c}
1822539SN/A
1830SN/A
1840SN/A#define ASL_PARSE_OPCODE_BASE       PARSEOP_ACCESSAS        /* First Lex type */
1850SN/A
1860SN/A
1870SN/A/* Internal AML opcodes */
1880SN/A
1890SN/A#define AML_RAW_DATA_BYTE           (UINT16) 0xAA01 /* write one raw byte */
1900SN/A#define AML_RAW_DATA_WORD           (UINT16) 0xAA02 /* write 2 raw bytes */
1910SN/A#define AML_RAW_DATA_DWORD          (UINT16) 0xAA04 /* write 4 raw bytes */
1920SN/A#define AML_RAW_DATA_QWORD          (UINT16) 0xAA08 /* write 8 raw bytes */
1930SN/A#define AML_RAW_DATA_BUFFER         (UINT16) 0xAA0B /* raw buffer with length */
1940SN/A#define AML_RAW_DATA_CHAIN          (UINT16) 0xAA0C /* chain of raw buffers */
1950SN/A#define AML_PACKAGE_LENGTH          (UINT16) 0xAA10
1960SN/A#define AML_UNASSIGNED_OPCODE       (UINT16) 0xEEEE
1970SN/A#define AML_DEFAULT_ARG_OP          (UINT16) 0xDDDD
1980SN/A
1990SN/A
2000SN/A/* filename suffixes for output files */
2010SN/A
2020SN/A#define FILE_SUFFIX_AML_CODE        "aml"
2030SN/A#define FILE_SUFFIX_LISTING         "lst"
2040SN/A#define FILE_SUFFIX_HEX_DUMP        "hex"
2050SN/A#define FILE_SUFFIX_DEBUG           "txt"
2060SN/A#define FILE_SUFFIX_SOURCE          "src"
2070SN/A#define FILE_SUFFIX_NAMESPACE       "nsp"
2080SN/A#define FILE_SUFFIX_ASM_SOURCE      "asm"
2090SN/A#define FILE_SUFFIX_C_SOURCE        "c"
2100SN/A#define FILE_SUFFIX_DISASSEMBLY     "dsl"
2110SN/A#define FILE_SUFFIX_ASM_INCLUDE     "inc"
2120SN/A#define FILE_SUFFIX_C_INCLUDE       "h"
2130SN/A
2140SN/A
2150SN/A/* Misc */
2160SN/A
2170SN/A#define ASL_EXTERNAL_METHOD         255
2180SN/A#define ASL_ABORT                   TRUE
2191605SN/A#define ASL_NO_ABORT                FALSE
2201605SN/A
2211605SN/A
2221605SN/A/*******************************************************************************
2231605SN/A *
2241605SN/A * Compiler prototypes
2250SN/A *
2260SN/A ******************************************************************************/
2270SN/A
2280SN/A
2290SN/Avoid
2300SN/Aend_stmt (void);
2310SN/A
2320SN/A
2333896SN/A/* parser */
2343896SN/A
2353896SN/Aint
2363896SN/AAslCompilerparse(
2373896SN/A    void);
2383294SN/A
2393294SN/AACPI_PARSE_OBJECT *
2403294SN/AAslDoError (
2413294SN/A    void);
2423294SN/A
2433294SN/Aint
2443294SN/AAslCompilererror(
2453294SN/A    char                    *s);
2463294SN/A
2473294SN/Aint
2480SN/AAslCompilerlex(
2490SN/A    void);
2500SN/A
2510SN/Avoid
2520SN/AResetCurrentLineBuffer (
2530SN/A    void);
2540SN/A
2550SN/Avoid
2560SN/AInsertLineBuffer (
2570SN/A    int                     SourceChar);
2583233SN/A
2590SN/Aint
2600SN/AAslPopInputFileStack (
2610SN/A    void);
2620SN/A
2630SN/Avoid
2644267SksriniAslPushInputFileStack (
2650SN/A    FILE                    *InputFile,
2660SN/A    char                    *Filename);
267139SN/A
2680SN/A/* aslmain */
269139SN/A
2700SN/Avoid
2710SN/AAslCompilerSignon (
272139SN/A    UINT32                  FileId);
2730SN/A
2740SN/Avoid
2750SN/AAslCompilerFileHeader (
2764267Sksrini    UINT32                  FileId);
2773233SN/A
2783233SN/Avoid
2793233SN/AAslDoSourceOutputFile (
2803233SN/A    char                    *Buffer);
2813233SN/A
2823233SN/A#define ASL_DEBUG_OUTPUT    0
2833233SN/A#define ASL_PARSE_OUTPUT    1
2843233SN/A#define ASL_TREE_OUTPUT     2
2854267Sksrini
2864267Sksrini
2873233SN/Avoid
2884267SksriniDbgPrint (
2894267Sksrini    UINT32                  Type,
2903233SN/A    char                    *Format,
2913233SN/A    ...);
2923691SN/A
2933691SN/Avoid
2944267SksriniErrorContext (void);
2953233SN/A
2964089SN/A/* aslcompile */
2974089SN/A
2983568SN/Aint
2994267SksriniCmDoCompile (void);
3003568SN/A
3013568SN/Avoid
3020SN/ACmDoOutputFiles (void);
3030SN/A
3043606SN/Avoid
3053606SN/ACmCleanupAndExit (void);
3060SN/A
3070SN/A
3080SN/A/* aslerror */
3090SN/A
3103606SN/Avoid
3114190SksriniAslError (
3123233SN/A    UINT8                   Level,
3133606SN/A    UINT8                   MessageId,
3143606SN/A    ACPI_PARSE_OBJECT       *Op,
3150SN/A    char                    *ExtraMessage);
3163233SN/A
3173233SN/Avoid
3180SN/AAslCoreSubsystemError (
3193233SN/A    ACPI_PARSE_OBJECT       *Op,
3201567SN/A    ACPI_STATUS             Status,
3211567SN/A    char                    *ExtraMessage,
3223715SN/A    BOOLEAN                 Abort);
3230SN/A
3243595SN/Avoid
3253233SN/AAslCommonError (
3263786SN/A    UINT8                   Level,
3270SN/A    UINT8                   MessageId,
3283226SN/A    UINT32                  CurrentLineNumber,
3293233SN/A    UINT32                  LogicalLineNumber,
3303233SN/A    UINT32                  LogicalByteOffset,
3313233SN/A    UINT32                  Column,
3323226SN/A    char                    *Filename,
3333227SN/A    char                    *ExtraMessage);
3343227SN/A
3350SN/Avoid
3363595SN/AAePrintException (
3373294SN/A    UINT32                  FileId,
3383595SN/A    ASL_ERROR_MSG           *Enode,
3393595SN/A    char                    *Header);
3404267Sksrini
3414267Sksrinivoid
3424267SksriniAePrintErrorLog (
3433595SN/A    UINT32                  FileId);
3443294SN/A
3453568SN/AACPI_STATUS
3463568SN/AAeLocalGetRootPointer (
3474267Sksrini    UINT32                  Flags,
3483294SN/A    ACPI_PHYSICAL_ADDRESS   *RsdpPhysicalAddress);
3493786SN/A
3504267Sksrini
3514072SN/A/* asllisting */
3520SN/A
3534190Sksrinivoid
3544072SN/ALsWriteListingHexBytes (
3552233SN/A    UINT8                   *Buffer,
3562233SN/A    UINT32                  Length,
3571409SN/A    UINT32                  FileId);
3582539SN/A
3594267Sksrinivoid
3604089SN/ALsWriteNodeToListing (
3613786SN/A    ACPI_PARSE_OBJECT       *Op,
3623786SN/A    UINT32                  FileId);
3633786SN/A
3643786SN/Avoid
3653786SN/ALsWriteNodeToAsmListing (
3663786SN/A    ACPI_PARSE_OBJECT       *Op);
3673786SN/A
3683786SN/Avoid
3693786SN/ALsWriteNode (
3703786SN/A    ACPI_PARSE_OBJECT       *Op,
3713505SN/A    UINT32                  FileId);
3723786SN/A
3733786SN/Avoid
3743786SN/ALsFinishSourceListing (
3753786SN/A    UINT32                  FileId);
3763786SN/A
3773786SN/Avoid
3783786SN/ALsFlushListingBuffer (
3793786SN/A    UINT32                  FileId);
3803786SN/A
3810SN/Avoid
3820SN/ALsDoHexOutput (
3830SN/A    void);
3840SN/A
3850SN/Avoid
3860SN/ALsDoHexOutputC (
3870SN/A    void);
3880SN/A
3890SN/Avoid
3900SN/ALsDoHexOutputAsm (
3910SN/A    void);
3920SN/A
3930SN/Avoid
3940SN/ALsPushNode (
3953233SN/A    char                    *Filename);
3963233SN/A
3973233SN/AASL_LISTING_NODE *
3983233SN/ALsPopNode (
3993786SN/A    void);
4004267Sksrini
4013786SN/A
4023786SN/A/*
4033786SN/A * aslopcodes - generate AML opcodes
4043786SN/A */
4053786SN/A
4064267SksriniACPI_STATUS
4073786SN/AOpcAmlOpcodeWalk (
4083786SN/A    ACPI_PARSE_OBJECT       *Op,
4093786SN/A    UINT32                  Level,
4103786SN/A    void                    *Context);
4113786SN/A
4124267SksriniACPI_STATUS
4133786SN/AOpcAmlConstantWalk (
4143786SN/A    ACPI_PARSE_OBJECT       *Op,
4153786SN/A    UINT32                  Level,
4163786SN/A    void                    *Context);
4173786SN/A
4184267Sksrinivoid
4193786SN/AOpcGenerateAmlOpcode (
4203786SN/A    ACPI_PARSE_OBJECT       *Op);
4213786SN/A
4223786SN/AUINT32
4233786SN/AOpcSetOptimalIntegerSize (
4244267Sksrini    ACPI_PARSE_OBJECT       *Op);
4253786SN/A
4263786SN/Avoid
4273786SN/AOpcGetIntegerWidth (
4283786SN/A    ACPI_PARSE_OBJECT       *Op);
4293786SN/A
4304267Sksrini/*
4313786SN/A * asloperands - generate AML operands for the AML opcodes
4323786SN/A */
4333786SN/A
4343786SN/Avoid
4353294SN/AOpnGenerateAmlOperands (
4363294SN/A    ACPI_PARSE_OBJECT       *Op);
4373595SN/A
4383786SN/Avoid
4393595SN/AOpnDoField (
4403294SN/A    ACPI_PARSE_OBJECT       *Op);
4414267Sksrini
4423505SN/Avoid
4433294SN/AOpnDoBankField (
4443595SN/A    ACPI_PARSE_OBJECT       *Op);
4453595SN/A
4463294SN/Avoid
4473294SN/AOpnDoBuffer (
4483294SN/A    ACPI_PARSE_OBJECT       *Op);
4493595SN/A
4504267Sksrinivoid
4513595SN/AOpnDoDefinitionBlock (
4523595SN/A    ACPI_PARSE_OBJECT       *Op);
4533595SN/A
4543595SN/Avoid
4553595SN/AOpnDoFieldCommon (
4563595SN/A    ACPI_PARSE_OBJECT       *FieldOp,
4573595SN/A    ACPI_PARSE_OBJECT       *Op);
4583595SN/A
4594058SN/Avoid
4604058SN/AOpnDoIndexField (
4614058SN/A    ACPI_PARSE_OBJECT       *Op);
4624058SN/A
4634058SN/Avoid
4643391SN/AOpnDoLoadTable (
4653595SN/A    ACPI_PARSE_OBJECT       *Op);
4663595SN/A
4673595SN/Avoid
4683595SN/AOpnDoMethod (
4693294SN/A    ACPI_PARSE_OBJECT       *Op);
4703294SN/A
4713233SN/Avoid
4723233SN/AOpnDoPackage (
4733715SN/A    ACPI_PARSE_OBJECT       *Op);
4743786SN/A
4750SN/Avoid
4760SN/AOpnDoRegion (
4773233SN/A    ACPI_PARSE_OBJECT       *Op);
4783673SN/A
4793233SN/A/*
4804267Sksrini * aslopt - optmization
4814267Sksrini */
4824267Sksrini
4834267Sksrinivoid
4844267SksriniOptOptimizeNamePath (
4854267Sksrini    ACPI_PARSE_OBJECT       *Op,
4864267Sksrini    UINT32                  Flags,
4874267Sksrini    ACPI_WALK_STATE         *WalkState,
4884267Sksrini    char                    *AmlNameString,
4894267Sksrini    ACPI_NAMESPACE_NODE     *TargetNode);
4904267Sksrini
4914267Sksrini
4924267Sksrini/*
4934267Sksrini * aslresource - resource template generation
4944267Sksrini */
4954267Sksrini
4964267Sksrinivoid
4974267SksriniRsDoResourceTemplate (
4984267Sksrini    ACPI_PARSE_OBJECT       *Op);
4994267Sksrini
5004267Sksrini
5014267Sksrinivoid
5024267SksriniCgGenerateAmlOutput (void);
5034267Sksrini
5044267Sksrinivoid
5054267SksriniCgGenerateListing (
5064267Sksrini    UINT32                  FileId);
5074267Sksrini
5084267Sksrinivoid
5094267SksriniLsDoListings (void);
5104267Sksrini
5114267Sksrinivoid
5124267SksriniCgGenerateAmlLengths (
5134267Sksrini    ACPI_PARSE_OBJECT       *Op);
5144267Sksrini
5154267SksriniACPI_STATUS
5164267SksriniCgOpenOutputFile (
5174267Sksrini    char                    *InputFilename);
5184267Sksrini
5194267Sksrini
5204267Sksrini/* asllength */
5214267Sksrini
5224267SksriniACPI_STATUS
5234267SksriniLnPackageLengthWalk (
5244267Sksrini    ACPI_PARSE_OBJECT       *Op,
5254267Sksrini    UINT32                  Level,
5264267Sksrini    void                    *Context);
5274267Sksrini
5284267SksriniACPI_STATUS
5294267SksriniLnInitLengthsWalk (
5304267Sksrini    ACPI_PARSE_OBJECT       *Op,
5314267Sksrini    UINT32                  Level,
5324267Sksrini    void                    *Context);
5334267Sksrini
5344267Sksrini
5354267SksriniACPI_STATUS
5364267SksriniCgAmlWriteWalk (
5374267Sksrini    ACPI_PARSE_OBJECT       *Op,
5384267Sksrini    UINT32                  Level,
5394267Sksrini    void                    *Context);
5404267Sksrini
5414267Sksrinivoid
5424267SksriniCgGenerateOutput(
5434267Sksrini    void);
5444267Sksrini
5454267Sksrinivoid
5464267SksriniCgCloseTable (void);
5474267Sksrini
5484267Sksrini
5494267Sksrinivoid
5504267SksriniCgWriteNode (
5514267Sksrini    ACPI_PARSE_OBJECT       *Op);
5524267Sksrini
5534267Sksrini/*
5544267Sksrini * aslmap
5554267Sksrini */
5564267Sksrini
5574267SksriniACPI_OBJECT_TYPE
5584267SksriniAslMapNamedOpcodeToDataType (
5594267Sksrini    UINT16                  Opcode);
5604267Sksrini
5614267Sksrini/*
5624267Sksrini * asltransform - parse tree transformations
5634267Sksrini */
5644267Sksrini
5654267SksriniACPI_STATUS
5664267SksriniTrAmlTransformWalk (
5674267Sksrini    ACPI_PARSE_OBJECT       *Op,
5684267Sksrini    UINT32                  Level,
5694267Sksrini    void                    *Context);
5704267Sksrini
5714267Sksrini
5724267Sksrinivoid
5734267SksriniTrTransformSubtree (
5744267Sksrini    ACPI_PARSE_OBJECT       *Op);
5754267Sksrini
5764267Sksrinivoid
5774267SksriniTrDoSwitch (
5784267Sksrini    ACPI_PARSE_OBJECT       *Op);
5794267Sksrini
5804267Sksrinivoid
5814267SksriniTrDoDefinitionBlock (
5824267Sksrini    ACPI_PARSE_OBJECT       *Op);
5834267Sksrini
5844267Sksrinivoid
5854267SksriniTrDoElseif (
5864267Sksrini    ACPI_PARSE_OBJECT       *Op);
5874267Sksrini
5884267Sksrini
5894267Sksrini/*
5904267Sksrini * asltree - parse tree support
5914267Sksrini */
5924267Sksrini
5934267SksriniACPI_STATUS
5944267SksriniTrWalkParseTree (
5954267Sksrini    ACPI_PARSE_OBJECT       *Op,
5964267Sksrini    UINT32                  Visitation,
5974267Sksrini    ASL_WALK_CALLBACK       DescendingCallback,
5984267Sksrini    ASL_WALK_CALLBACK       AscendingCallback,
5994267Sksrini    void                    *Context);
6004267Sksrini
6014267SksriniACPI_PARSE_OBJECT *
6024267SksriniTrAllocateNode (
6034267Sksrini    UINT32                  ParseOpcode);
6044267Sksrini
6054267Sksrini
6064267Sksrini/* Values for "Visitation" parameter above */
6074267Sksrini
6084267Sksrini#define ASL_WALK_VISIT_DOWNWARD     0x01
6094267Sksrini#define ASL_WALK_VISIT_UPWARD       0x02
6104267Sksrini#define ASL_WALK_VISIT_TWICE        (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD)
6114267Sksrini
6124267Sksrini
6134267Sksrinichar *
6144267SksriniTrAddNode (
6154267Sksrini    void                    *Thing);
6164267Sksrini
6174267SksriniACPI_PARSE_OBJECT *
6184267SksriniTrUpdateNode (
6194267Sksrini    UINT32                  ParseOpcode,
6204267Sksrini    ACPI_PARSE_OBJECT       *Op);
6214267Sksrini
6224267SksriniACPI_PARSE_OBJECT *
6234267SksriniTrCreateNode (
6244267Sksrini    UINT32                  ParseOpcode,
6254267Sksrini    UINT32                  NumChildren,
6264267Sksrini    ...);
6274267Sksrini
6284267SksriniACPI_PARSE_OBJECT *
6294267SksriniTrCreateLeafNode (
6304267Sksrini    UINT32                  ParseOpcode);
6314267Sksrini
6324267SksriniACPI_PARSE_OBJECT *
6334267SksriniTrCreateValuedLeafNode (
6344267Sksrini    UINT32                  ParseOpcode,
6354267Sksrini    ACPI_INTEGER            Value);
6364267Sksrini
6374267SksriniACPI_PARSE_OBJECT *
6384267SksriniTrLinkChildren (
6394267Sksrini    ACPI_PARSE_OBJECT       *Op,
6404267Sksrini    UINT32                  NumChildren,
6414267Sksrini    ...);
6424267Sksrini
6434267Sksrinivoid
6444267SksriniTrSetEndLineNumber (
6454267Sksrini    ACPI_PARSE_OBJECT       *Op);
6464267Sksrini
6474267Sksrinivoid
6484267SksriniTrWalkTree (void);
6494267Sksrini
6504267SksriniACPI_PARSE_OBJECT *
6514267SksriniTrLinkPeerNode (
6524267Sksrini    ACPI_PARSE_OBJECT       *Op1,
6534267Sksrini    ACPI_PARSE_OBJECT       *Op2);
6544267Sksrini
6554267SksriniACPI_PARSE_OBJECT *
6564267SksriniTrLinkChildNode (
6574267Sksrini    ACPI_PARSE_OBJECT       *Op1,
6584267Sksrini    ACPI_PARSE_OBJECT       *Op2);
6594267Sksrini
6604267SksriniACPI_PARSE_OBJECT *
6614267SksriniTrSetNodeFlags (
6624267Sksrini    ACPI_PARSE_OBJECT       *Op,
6634267Sksrini    UINT32                  Flags);
6644267Sksrini
6654267SksriniACPI_PARSE_OBJECT *
6664267SksriniTrLinkPeerNodes (
6674267Sksrini    UINT32                  NumPeers,
6684267Sksrini    ...);
6694267Sksrini
6704267Sksrinivoid
6714267SksriniTrReleaseNode (
6724267Sksrini    ACPI_PARSE_OBJECT       *Op);
6734267Sksrini
6744267Sksrini/* Analyze */
6754267Sksrini
6764267SksriniACPI_STATUS
6774267SksriniAnOtherSemanticAnalysisWalkBegin (
6783233SN/A    ACPI_PARSE_OBJECT       *Op,
6793233SN/A    UINT32                  Level,
6803233SN/A    void                    *Context);
6813233SN/A
6823233SN/AACPI_STATUS
6831567SN/AAnOtherSemanticAnalysisWalkEnd (
6841567SN/A    ACPI_PARSE_OBJECT       *Op,
6853233SN/A    UINT32                  Level,
6863233SN/A    void                    *Context);
6873233SN/A
6883233SN/AACPI_STATUS
6893233SN/AAnOperandTypecheckWalkBegin (
6903233SN/A    ACPI_PARSE_OBJECT       *Op,
6914268Spmuthuswamy    UINT32                  Level,
6923606SN/A    void                    *Context);
6934267Sksrini
6944267SksriniACPI_STATUS
6954267SksriniAnOperandTypecheckWalkEnd (
6964267Sksrini    ACPI_PARSE_OBJECT       *Op,
6974267Sksrini    UINT32                  Level,
6984267Sksrini    void                    *Context);
6993786SN/A
7003233SN/AACPI_STATUS
7014267SksriniAnMethodAnalysisWalkBegin (
7024172SN/A    ACPI_PARSE_OBJECT       *Op,
7034267Sksrini    UINT32                  Level,
7044172SN/A    void                    *Context);
7054267Sksrini
7064172SN/AACPI_STATUS
7073233SN/AAnMethodAnalysisWalkEnd (
7084268Spmuthuswamy    ACPI_PARSE_OBJECT       *Op,
7090SN/A    UINT32                  Level,
7100SN/A    void                    *Context);
7110SN/A
7120SN/AACPI_STATUS
7130SN/AAnMethodTypingWalkBegin (
7143294SN/A    ACPI_PARSE_OBJECT       *Op,
7153606SN/A    UINT32                  Level,
7160SN/A    void                    *Context);
7173606SN/A
7183606SN/AACPI_STATUS
7193606SN/AAnMethodTypingWalkEnd (
7204268Spmuthuswamy    ACPI_PARSE_OBJECT       *Op,
7213606SN/A    UINT32                  Level,
7223233SN/A    void                    *Context);
7233233SN/A
7240SN/A
7250SN/A/*
7263606SN/A * aslfiles - File I/O support
7273606SN/A */
7283606SN/A
7293606SN/Avoid
7303606SN/AAslAbort (void);
7313233SN/A
7323606SN/AFILE *
7333606SN/AFlOpenLocalFile (
7343606SN/A    char                    *LocalName,
7353606SN/A    char                    *Mode);
7363606SN/A
7373606SN/Avoid
7383606SN/AFlOpenIncludeFile (
7393606SN/A    ACPI_PARSE_OBJECT       *Op);
7403606SN/A
7413606SN/Avoid
7421610SN/AFlFileError (
7433606SN/A    UINT32                  FileId,
7441610SN/A    UINT8                   ErrorId);
7451610SN/A
7460SN/Avoid
7470SN/AFlOpenFile (
7480SN/A    UINT32                  FileId,
7493606SN/A    char                    *Filename,
7501412SN/A    char                    *Mode);
7514267Sksrini
7520SN/AACPI_STATUS
7533233SN/AFlReadFile (
7540SN/A    UINT32                  FileId,
7554267Sksrini    void                    *Buffer,
7564267Sksrini    UINT32                  Length);
7573233SN/A
7583233SN/Avoid
7593233SN/AFlWriteFile (
7600SN/A    UINT32                  FileId,
7610SN/A    void                    *Buffer,
7623233SN/A    UINT32                  Length);
7633233SN/A
7643233SN/Avoid
7650SN/AFlSeekFile (
7660SN/A    UINT32                  FileId,
7670SN/A    long                    Offset);
7680SN/A
7690SN/Avoid
7701361SN/AFlCloseFile (
7710SN/A    UINT32                  FileId);
7720SN/A
7730SN/Avoid
7743233SN/AFlPrintFile (
7750SN/A    UINT32                  FileId,
7763233SN/A    char                    *Format,
7773233SN/A    ...);
7783233SN/A
7790SN/Avoid
7803568SN/AFlSetLineNumber (
7813568SN/A    ACPI_PARSE_OBJECT       *Op);
7820SN/A
7830SN/AACPI_STATUS
7840SN/AFlParseInputPathname (
7850SN/A    char                    *InputFilename);
7861382SN/A
7871382SN/AACPI_STATUS
7881382SN/AFlOpenInputFile (
7891382SN/A    char                    *InputFilename);
7901382SN/A
7911382SN/AACPI_STATUS
7921382SN/AFlOpenAmlOutputFile (
7931382SN/A    char                    *InputFilename);
7941382SN/A
7951382SN/AACPI_STATUS
7961382SN/AFlOpenMiscOutputFiles (
7971382SN/A    char                    *InputFilename);
7983233SN/A
7992233SN/Avoid
8004267SksriniMpDisplayReservedNames (
8011382SN/A    void);
8021382SN/A
8031382SN/A
8041382SN/A/* Load */
8051382SN/A
8061382SN/AACPI_STATUS
8071382SN/ALdLoadNamespace (
8084267Sksrini    ACPI_PARSE_OBJECT       *RootOp);
8091382SN/A
8101382SN/A
8111382SN/AACPI_STATUS
8121382SN/ALdNamespace1Begin (
8131382SN/A    ACPI_PARSE_OBJECT       *Op,
8141382SN/A    UINT32                  Level,
8151382SN/A    void                    *Context);
8161382SN/A
8171382SN/AACPI_STATUS
8181382SN/ALdNamespace1End (
8191382SN/A    ACPI_PARSE_OBJECT       *Op,
8201382SN/A    UINT32                  Level,
8211382SN/A    void                    *Context);
8221382SN/A
8233233SN/A
8241382SN/A/* Lookup */
8251382SN/A
8264267SksriniACPI_STATUS
8270SN/ALkCrossReferenceNamespace (void);
8280SN/A
8294267SksriniACPI_STATUS
8300SN/ALkNamespaceLocateBegin (
8310SN/A    ACPI_PARSE_OBJECT       *Op,
8320SN/A    UINT32                  Level,
8330SN/A    void                    *Context);
8340SN/A
8350SN/AACPI_STATUS
8361350SN/ALkNamespaceLocateEnd (
8371350SN/A    ACPI_PARSE_OBJECT       *Op,
8381350SN/A    UINT32                  Level,
8390SN/A    void                    *Context);
8400SN/A
8410SN/AACPI_STATUS
8420SN/ALsDisplayNamespace (
8431350SN/A    void);
8440SN/A
8450SN/AACPI_STATUS
8460SN/ALsCompareOneNamespaceObject (
8471350SN/A    ACPI_HANDLE             ObjHandle,
8480SN/A    UINT32                  Level,
8494267Sksrini    void                    *Context,
8500SN/A    void                    **ReturnValue);
8510SN/A
8520SN/A
8530SN/A/* Utils */
8540SN/A
8550SN/Avoid
8560SN/AUtDisplayConstantOpcodes (
8570SN/A    void);
8583786SN/A
8590SN/Avoid
8600SN/AUtBeginEvent (
8610SN/A    UINT32                  Event,
8623233SN/A    char                    *Name);
8633786SN/A
8643786SN/Avoid
8653786SN/AUtEndEvent (
8663606SN/A    UINT32                  Event);
8670SN/A
8683786SN/Avoid *
8693233SN/AUtLocalCalloc (
8700SN/A    UINT32                  Size);
8710SN/A
8720SN/Avoid
8730SN/AUtPrintFormattedName (
8740SN/A    UINT16                  ParseOpcode,
8750SN/A    UINT32                  Level);
8760SN/A
8770SN/Avoid
8780SN/AUtDisplaySummary (
8790SN/A    UINT32                  FileId);
8800SN/A
8810SN/AUINT8
8820SN/AUtHexCharToValue (
8833233SN/A    int                     hc);
8844267Sksrini
8850SN/Avoid
8860SN/AUtConvertByteToHex (
8870SN/A    UINT8                   RawByte,
8880SN/A    UINT8                   *Buffer);
8893233SN/A
8900SN/Avoid
8910SN/AUtConvertByteToAsmHex (
8920SN/A    UINT8                   RawByte,
8930SN/A    UINT8                   *Buffer);
8940SN/A
8950SN/Achar *
8960SN/AUtGetOpName (
8970SN/A    UINT32                  ParseOpcode);
8980SN/A
8990SN/Avoid
9000SN/AUtSetParseOpName (
9010SN/A    ACPI_PARSE_OBJECT       *Op);
9020SN/A
9030SN/AACPI_PARSE_OBJECT  *
9040SN/AUtGetArg (
9053606SN/A    ACPI_PARSE_OBJECT       *Op,
9060SN/A    UINT32                  Argn);
9073233SN/A
9080SN/Achar *
9094267SksriniUtGetStringBuffer (
9103233SN/A    UINT32                  Length);
9110SN/A
9120SN/AACPI_STATUS
9130SN/AUtInternalizeName (
9140SN/A    char                    *ExternalName,
9153606SN/A    char                    **ConvertedName);
9160SN/A
9173606SN/Avoid
9180SN/AUtAttachNamepathToOwner (
9194267Sksrini    ACPI_PARSE_OBJECT       *Op,
9200SN/A    ACPI_PARSE_OBJECT       *NameNode);
9214267Sksrini
9224267SksriniACPI_PARSE_OBJECT *
9230SN/AUtCheckIntegerRange (
9240SN/A    ACPI_PARSE_OBJECT       *Op,
9250SN/A    UINT32                  LowValue,
9260SN/A    UINT32                  HighValue);
9270SN/A
9280SN/AACPI_STATUS
9290SN/AUtStrtoul64 (
9300SN/A    char                    *String,
9310SN/A    UINT32                  Base,
9320SN/A    ACPI_INTEGER            *RetInteger);
9330SN/A
9340SN/AACPI_INTEGER
9350SN/AUtDoConstant (
9363233SN/A    char                    *String);
9373233SN/A
9383606SN/A
9393233SN/A/* Find */
9403233SN/A
9410SN/Avoid
9423233SN/ALnAdjustLengthToRoot (
9433233SN/A    ACPI_PARSE_OBJECT       *Op,
9443233SN/A    UINT32                  LengthDelta);
9453233SN/A
9463233SN/A
9470SN/A#define NEXT_RESOURCE_DESC(a,b)     (ASL_RESOURCE_DESC *) (((char *) (a)) + sizeof(b))
9480SN/A
9493568SN/A#define DEFAULT_RESOURCE_DESC_SIZE  (sizeof (ASL_RESOURCE_DESC) + sizeof (ASL_END_TAG_DESC))
9503568SN/A
9513568SN/A
9523568SN/A/*
9533606SN/A * Resource utilities
9543568SN/A */
9553568SN/A
9563568SN/AASL_RESOURCE_NODE *
9574267SksriniRsAllocateResourceNode (
9583568SN/A    UINT32                  Size);
9593568SN/A
9600SN/A    void
9613568SN/ARsCreateBitField (
9623568SN/A    ACPI_PARSE_OBJECT       *Op,
9633568SN/A    char                    *Name,
9643568SN/A    UINT32                  ByteOffset,
9653606SN/A    UINT32                  BitOffset);
9664267Sksrini
9673568SN/Avoid
9683568SN/ARsCreateByteField (
9693568SN/A    ACPI_PARSE_OBJECT       *Op,
9704267Sksrini    char                    *Name,
9713568SN/A    UINT32                  ByteOffset);
9723568SN/A
9730SN/Avoid
9743568SN/ARsSetFlagBits (
9753568SN/A    UINT8                   *Flags,
9763568SN/A    ACPI_PARSE_OBJECT       *Op,
9773568SN/A    UINT8                   Position,
9783568SN/A    UINT8                   DefaultBit);
9793568SN/A
9803568SN/AACPI_PARSE_OBJECT *
9813568SN/ARsCompleteNodeAndGetNext (
9820SN/A    ACPI_PARSE_OBJECT       *Op);
9833568SN/A
9843568SN/AASL_RESOURCE_NODE *
9853568SN/ARsDoOneResourceDescriptor (
9863568SN/A    ACPI_PARSE_OBJECT       *DescriptorTypeOp,
9873568SN/A    UINT32                  CurrentByteOffset,
9883568SN/A    UINT8                   *State);
9893568SN/A
9903568SN/A#define ACPI_RSTATE_NORMAL              0
9913568SN/A#define ACPI_RSTATE_START_DEPENDENT     1
9920SN/A#define ACPI_RSTATE_DEPENDENT_LIST      2
9933568SN/A
9943568SN/AUINT32
9953568SN/ARsLinkDescriptorChain (
9963568SN/A    ASL_RESOURCE_NODE       **PreviousRnode,
9973568SN/A    ASL_RESOURCE_NODE       *Rnode);
9984267Sksrini
9994267Sksrini
10003568SN/A/*
10013568SN/A * Small descriptors
10023568SN/A */
10031739SN/A
10041739SN/AASL_RESOURCE_NODE *
10051739SN/ARsDoDmaDescriptor (
10061739SN/A    ACPI_PARSE_OBJECT       *Op,
10073568SN/A    UINT32                  CurrentByteOffset);
10083233SN/A
10091739SN/AASL_RESOURCE_NODE *
10101739SN/ARsDoEndDependentDescriptor (
10111739SN/A    ACPI_PARSE_OBJECT       *Op,
10121739SN/A    UINT32                  CurrentByteOffset);
10133568SN/A
10141739SN/AASL_RESOURCE_NODE *
10150SN/ARsDoFixedIoDescriptor (
10163233SN/A    ACPI_PARSE_OBJECT       *Op,
1017994SN/A    UINT32                  CurrentByteOffset);
1018994SN/A
10193233SN/AASL_RESOURCE_NODE *
1020994SN/ARsDoInterruptDescriptor (
10213233SN/A    ACPI_PARSE_OBJECT       *Op,
10223233SN/A    UINT32                  CurrentByteOffset);
10230SN/A
10243233SN/AASL_RESOURCE_NODE *
10250SN/ARsDoIoDescriptor (
10260SN/A    ACPI_PARSE_OBJECT       *Op,
10270SN/A    UINT32                  CurrentByteOffset);
10283233SN/A
10290SN/AASL_RESOURCE_NODE *
10300SN/ARsDoIrqDescriptor (
10310SN/A    ACPI_PARSE_OBJECT       *Op,
10320SN/A    UINT32                  CurrentByteOffset);
10333606SN/A
10340SN/AASL_RESOURCE_NODE *
10350SN/ARsDoIrqNoFlagsDescriptor (
10360SN/A    ACPI_PARSE_OBJECT       *Op,
10370SN/A    UINT32                  CurrentByteOffset);
10380SN/A
10390SN/AASL_RESOURCE_NODE *
10400SN/ARsDoMemory24Descriptor (
10410SN/A    ACPI_PARSE_OBJECT       *Op,
10423606SN/A    UINT32                  CurrentByteOffset);
10430SN/A
10443606SN/AASL_RESOURCE_NODE *
10450SN/ARsDoMemory32Descriptor (
10464267Sksrini    ACPI_PARSE_OBJECT       *Op,
10474267Sksrini    UINT32                  CurrentByteOffset);
10480SN/A
10490SN/AASL_RESOURCE_NODE *
10500SN/ARsDoMemory32FixedDescriptor (
1051190SN/A    ACPI_PARSE_OBJECT       *Op,
10523606SN/A    UINT32                  CurrentByteOffset);
10533233SN/A
1054190SN/AASL_RESOURCE_NODE *
1055190SN/ARsDoStartDependentDescriptor (
1056190SN/A    ACPI_PARSE_OBJECT       *Op,
1057190SN/A    UINT32                  CurrentByteOffset);
10583233SN/A
10593233SN/AASL_RESOURCE_NODE *
10603233SN/ARsDoStartDependentNoPriDescriptor (
10611411SN/A    ACPI_PARSE_OBJECT       *Op,
10623233SN/A    UINT32                  CurrentByteOffset);
10631411SN/A
10641411SN/AASL_RESOURCE_NODE *
10653233SN/ARsDoVendorSmallDescriptor (
10663606SN/A    ACPI_PARSE_OBJECT       *Op,
10673233SN/A    UINT32                  CurrentByteOffset);
10680SN/A
10693233SN/A
10701409SN/A/*
10711409SN/A * Large descriptors
10721409SN/A */
10731409SN/A
10741409SN/AUINT32
10751489SN/ARsGetStringDataLength (
10763233SN/A    ACPI_PARSE_OBJECT       *InitializerOp);
10773233SN/A
10783233SN/AASL_RESOURCE_NODE *
10793233SN/ARsDoDwordIoDescriptor (
10803233SN/A    ACPI_PARSE_OBJECT       *Op,
10813786SN/A    UINT32                  CurrentByteOffset);
10823233SN/A
10833233SN/AASL_RESOURCE_NODE *
10843233SN/ARsDoDwordMemoryDescriptor (
10853233SN/A    ACPI_PARSE_OBJECT       *Op,
10863673SN/A    UINT32                  CurrentByteOffset);
10874140SN/A
10883673SN/AASL_RESOURCE_NODE *
10893233SN/ARsDoQwordIoDescriptor (
10903673SN/A    ACPI_PARSE_OBJECT       *Op,
10913786SN/A    UINT32                  CurrentByteOffset);
10924140SN/A
10934140SN/AASL_RESOURCE_NODE *
10944140SN/ARsDoQwordMemoryDescriptor (
10953673SN/A    ACPI_PARSE_OBJECT       *Op,
10963579SN/A    UINT32                  CurrentByteOffset);
10973579SN/A
10983233SN/AASL_RESOURCE_NODE *
10993233SN/ARsDoWordIoDescriptor (
11003579SN/A    ACPI_PARSE_OBJECT       *Op,
11013673SN/A    UINT32                  CurrentByteOffset);
11023233SN/A
11033233SN/AASL_RESOURCE_NODE *
11043233SN/ARsDoWordBusNumberDescriptor (
11053233SN/A    ACPI_PARSE_OBJECT       *Op,
11063673SN/A    UINT32                  CurrentByteOffset);
11073673SN/A
11083233SN/AASL_RESOURCE_NODE *
11093233SN/ARsDoVendorLargeDescriptor (
11103673SN/A    ACPI_PARSE_OBJECT       *Op,
11113233SN/A    UINT32                  CurrentByteOffset);
11123673SN/A
11133233SN/AASL_RESOURCE_NODE *
11143233SN/ARsDoGeneralRegisterDescriptor (
11153233SN/A    ACPI_PARSE_OBJECT       *Op,
11163233SN/A    UINT32                  CurrentByteOffset);
11173233SN/A
11183233SN/A
11193233SN/A#endif /*  __ASLCOMPILER_H */
11203233SN/A
11213233SN/A