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