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