aslcompiler.h revision 210976
1230557Sjimharris 2230557Sjimharris/****************************************************************************** 3230557Sjimharris * 4230557Sjimharris * Module Name: aslcompiler.h - common include file for iASL 5230557Sjimharris * 6230557Sjimharris *****************************************************************************/ 7230557Sjimharris 8230557Sjimharris/****************************************************************************** 9230557Sjimharris * 10230557Sjimharris * 1. Copyright Notice 11230557Sjimharris * 12230557Sjimharris * Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp. 13230557Sjimharris * All rights reserved. 14230557Sjimharris * 15230557Sjimharris * 2. License 16230557Sjimharris * 17230557Sjimharris * 2.1. This is your license from Intel Corp. under its intellectual property 18230557Sjimharris * rights. You may have additional license terms from the party that provided 19230557Sjimharris * you this software, covering your right to use that party's intellectual 20230557Sjimharris * property rights. 21230557Sjimharris * 22230557Sjimharris * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 23230557Sjimharris * copy of the source code appearing in this file ("Covered Code") an 24230557Sjimharris * irrevocable, perpetual, worldwide license under Intel's copyrights in the 25230557Sjimharris * base code distributed originally by Intel ("Original Intel Code") to copy, 26230557Sjimharris * make derivatives, distribute, use and display any portion of the Covered 27230557Sjimharris * Code in any form, with the right to sublicense such rights; and 28230557Sjimharris * 29230557Sjimharris * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 30230557Sjimharris * license (with the right to sublicense), under only those claims of Intel 31230557Sjimharris * patents that are infringed by the Original Intel Code, to make, use, sell, 32230557Sjimharris * offer to sell, and import the Covered Code and derivative works thereof 33230557Sjimharris * solely to the minimum extent necessary to exercise the above copyright 34230557Sjimharris * license, and in no event shall the patent license extend to any additions 35230557Sjimharris * to or modifications of the Original Intel Code. No other license or right 36230557Sjimharris * is granted directly or by implication, estoppel or otherwise; 37230557Sjimharris * 38230557Sjimharris * The above copyright and patent license is granted only if the following 39230557Sjimharris * conditions are met: 40230557Sjimharris * 41230557Sjimharris * 3. Conditions 42230557Sjimharris * 43230557Sjimharris * 3.1. Redistribution of Source with Rights to Further Distribute Source. 44230557Sjimharris * Redistribution of source code of any substantial portion of the Covered 45230557Sjimharris * Code or modification with rights to further distribute source must include 46230557Sjimharris * the above Copyright Notice, the above License, this list of Conditions, 47230557Sjimharris * and the following Disclaimer and Export Compliance provision. In addition, 48230557Sjimharris * Licensee must cause all Covered Code to which Licensee contributes to 49230557Sjimharris * contain a file documenting the changes Licensee made to create that Covered 50230557Sjimharris * Code and the date of any change. Licensee must include in that file the 51230557Sjimharris * documentation of any changes made by any predecessor Licensee. Licensee 52230557Sjimharris * must include a prominent statement that the modification is derived, 53230557Sjimharris * directly or indirectly, from Original Intel Code. 54230557Sjimharris * 55230557Sjimharris * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 56230557Sjimharris * Redistribution of source code of any substantial portion of the Covered 57230557Sjimharris * Code or modification without rights to further distribute source must 58230557Sjimharris * include the following Disclaimer and Export Compliance provision in the 59230557Sjimharris * documentation and/or other materials provided with distribution. In 60230557Sjimharris * addition, Licensee may not authorize further sublicense of source of any 61230557Sjimharris * portion of the Covered Code, and must include terms to the effect that the 62230557Sjimharris * license from Licensee to its licensee is limited to the intellectual 63230557Sjimharris * property embodied in the software Licensee provides to its licensee, and 64230557Sjimharris * not to intellectual property embodied in modifications its licensee may 65230557Sjimharris * make. 66230557Sjimharris * 67230557Sjimharris * 3.3. Redistribution of Executable. Redistribution in executable form of any 68230557Sjimharris * substantial portion of the Covered Code or modification must reproduce the 69230557Sjimharris * above Copyright Notice, and the following Disclaimer and Export Compliance 70230557Sjimharris * provision in the documentation and/or other materials provided with the 71230557Sjimharris * distribution. 72230557Sjimharris * 73230557Sjimharris * 3.4. Intel retains all right, title, and interest in and to the Original 74230557Sjimharris * Intel Code. 75230557Sjimharris * 76230557Sjimharris * 3.5. Neither the name Intel nor any other trademark owned or controlled by 77230557Sjimharris * Intel shall be used in advertising or otherwise to promote the sale, use or 78230557Sjimharris * other dealings in products derived from or relating to the Covered Code 79230557Sjimharris * without prior written authorization from Intel. 80230557Sjimharris * 81230557Sjimharris * 4. Disclaimer and Export Compliance 82230557Sjimharris * 83230557Sjimharris * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 84230557Sjimharris * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 85230557Sjimharris * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 86230557Sjimharris * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 87230557Sjimharris * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 88230557Sjimharris * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 89230557Sjimharris * PARTICULAR PURPOSE. 90230557Sjimharris * 91230557Sjimharris * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 92230557Sjimharris * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 93230557Sjimharris * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 94230557Sjimharris * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 95230557Sjimharris * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 96230557Sjimharris * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 97230557Sjimharris * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 98230557Sjimharris * LIMITED REMEDY. 99230557Sjimharris * 100230557Sjimharris * 4.3. Licensee shall not export, either directly or indirectly, any of this 101230557Sjimharris * software or system incorporating such software without first obtaining any 102230557Sjimharris * required license or other approval from the U. S. Department of Commerce or 103230557Sjimharris * any other agency or department of the United States Government. In the 104230557Sjimharris * event Licensee exports any such software from the United States or 105230557Sjimharris * re-exports any such software from a foreign destination, Licensee shall 106230557Sjimharris * ensure that the distribution and export/re-export of the software is in 107230557Sjimharris * compliance with all laws, regulations, orders, or other restrictions of the 108230557Sjimharris * U.S. Export Administration Regulations. Licensee agrees that neither it nor 109230557Sjimharris * any of its subsidiaries will export/re-export any technical data, process, 110230557Sjimharris * software, or service, directly or indirectly, to any country for which the 111230557Sjimharris * United States government or any agency thereof requires an export license, 112230557Sjimharris * other governmental approval, or letter of assurance, without first obtaining 113230557Sjimharris * such license, approval or letter. 114230557Sjimharris * 115230557Sjimharris *****************************************************************************/ 116230557Sjimharris 117230557Sjimharris 118230557Sjimharris#ifndef __ASLCOMPILER_H 119230557Sjimharris#define __ASLCOMPILER_H 120230557Sjimharris 121230557Sjimharris 122230557Sjimharris/* Microsoft-specific */ 123230557Sjimharris 124230557Sjimharris#if (defined WIN32 || defined WIN64) 125230557Sjimharris 126230557Sjimharris/* warn : used #pragma pack */ 127230557Sjimharris#pragma warning(disable:4103) 128230557Sjimharris 129230557Sjimharris/* warn : named type definition in parentheses */ 130230557Sjimharris#pragma warning(disable:4115) 131230557Sjimharris#endif 132230557Sjimharris 133230557Sjimharris#include <stdio.h> 134230557Sjimharris#include <stdlib.h> 135230557Sjimharris#include <stdarg.h> 136230557Sjimharris#include <string.h> 137230557Sjimharris#include <errno.h> 138230557Sjimharris#include <ctype.h> 139230557Sjimharris 140230557Sjimharris 141230557Sjimharris#include <contrib/dev/acpica/include/acpi.h> 142230557Sjimharris#include <contrib/dev/acpica/include/accommon.h> 143230557Sjimharris#include <contrib/dev/acpica/include/amlresrc.h> 144230557Sjimharris#include <contrib/dev/acpica/include/acdebug.h> 145230557Sjimharris 146230557Sjimharris/* Compiler headers */ 147230557Sjimharris 148230557Sjimharris#include <contrib/dev/acpica/compiler/asldefine.h> 149230557Sjimharris#include <contrib/dev/acpica/compiler/asltypes.h> 150230557Sjimharris#include <contrib/dev/acpica/compiler/aslglobal.h> 151230557Sjimharris 152230557Sjimharris 153230557Sjimharris/******************************************************************************* 154230557Sjimharris * 155230557Sjimharris * Compiler prototypes 156230557Sjimharris * 157230557Sjimharris ******************************************************************************/ 158230557Sjimharris 159230557Sjimharris/* 160230557Sjimharris * parser - generated from flex/bison, lex/yacc, etc. 161230557Sjimharris */ 162230557Sjimharrisint 163230557SjimharrisAslCompilerparse( 164230557Sjimharris void); 165230557Sjimharris 166230557SjimharrisACPI_PARSE_OBJECT * 167230557SjimharrisAslDoError ( 168230557Sjimharris void); 169230557Sjimharris 170230557Sjimharrisint 171230557SjimharrisAslCompilerlex( 172230557Sjimharris void); 173230557Sjimharris 174230557Sjimharrisvoid 175230557SjimharrisResetCurrentLineBuffer ( 176230557Sjimharris void); 177230557Sjimharris 178230557Sjimharrisvoid 179230557SjimharrisInsertLineBuffer ( 180230557Sjimharris int SourceChar); 181230557Sjimharris 182230557Sjimharrisint 183230557SjimharrisAslPopInputFileStack ( 184230557Sjimharris void); 185230557Sjimharris 186230557Sjimharrisvoid 187230557SjimharrisAslPushInputFileStack ( 188230557Sjimharris FILE *InputFile, 189230557Sjimharris char *Filename); 190230557Sjimharris 191230557Sjimharris/* 192230557Sjimharris * aslstartup - entered from main() 193230557Sjimharris */ 194230557Sjimharrisvoid 195230557SjimharrisAslInitializeGlobals ( 196230557Sjimharris void); 197230557Sjimharris 198230557Sjimharristypedef 199230557SjimharrisACPI_STATUS (*ASL_PATHNAME_CALLBACK) ( 200230557Sjimharris char *); 201230557Sjimharris 202230557SjimharrisACPI_STATUS 203230557SjimharrisAslDoOnePathname ( 204230557Sjimharris char *Pathname, 205230557Sjimharris ASL_PATHNAME_CALLBACK Callback); 206230557Sjimharris 207230557SjimharrisACPI_STATUS 208230557SjimharrisAslDoOneFile ( 209230557Sjimharris char *Filename); 210230557Sjimharris 211230557Sjimharris/* 212230557Sjimharris * aslcompile - compile mainline 213230557Sjimharris */ 214230557Sjimharrisvoid 215230557SjimharrisAslCompilerSignon ( 216230557Sjimharris UINT32 FileId); 217230557Sjimharris 218230557Sjimharrisvoid 219230557SjimharrisAslCompilerFileHeader ( 220230557Sjimharris UINT32 FileId); 221230557Sjimharris 222230557Sjimharrisint 223230557SjimharrisCmDoCompile ( 224230557Sjimharris void); 225230557Sjimharris 226230557Sjimharrisvoid 227230557SjimharrisCmDoOutputFiles ( 228230557Sjimharris void); 229230557Sjimharris 230230557Sjimharrisvoid 231230557SjimharrisCmCleanupAndExit ( 232230557Sjimharris void); 233230557Sjimharris 234230557SjimharrisACPI_STATUS 235230557SjimharrisFlCheckForAscii ( 236230557Sjimharris ASL_FILE_INFO *FileInfo); 237230557Sjimharris 238230557Sjimharris 239230557Sjimharris/* 240230557Sjimharris * aslanalyze - semantic analysis 241230557Sjimharris */ 242230557SjimharrisACPI_STATUS 243230557SjimharrisAnOtherSemanticAnalysisWalkBegin ( 244230557Sjimharris ACPI_PARSE_OBJECT *Op, 245230557Sjimharris UINT32 Level, 246230557Sjimharris void *Context); 247230557Sjimharris 248230557SjimharrisACPI_STATUS 249230557SjimharrisAnOtherSemanticAnalysisWalkEnd ( 250230557Sjimharris ACPI_PARSE_OBJECT *Op, 251230557Sjimharris UINT32 Level, 252230557Sjimharris void *Context); 253230557Sjimharris 254230557SjimharrisACPI_STATUS 255230557SjimharrisAnOperandTypecheckWalkBegin ( 256230557Sjimharris ACPI_PARSE_OBJECT *Op, 257230557Sjimharris UINT32 Level, 258230557Sjimharris void *Context); 259230557Sjimharris 260230557SjimharrisACPI_STATUS 261230557SjimharrisAnOperandTypecheckWalkEnd ( 262230557Sjimharris ACPI_PARSE_OBJECT *Op, 263230557Sjimharris UINT32 Level, 264230557Sjimharris void *Context); 265230557Sjimharris 266230557SjimharrisACPI_STATUS 267230557SjimharrisAnMethodAnalysisWalkBegin ( 268230557Sjimharris ACPI_PARSE_OBJECT *Op, 269230557Sjimharris UINT32 Level, 270230557Sjimharris void *Context); 271230557Sjimharris 272230557SjimharrisACPI_STATUS 273230557SjimharrisAnMethodAnalysisWalkEnd ( 274230557Sjimharris ACPI_PARSE_OBJECT *Op, 275230557Sjimharris UINT32 Level, 276230557Sjimharris void *Context); 277230557Sjimharris 278230557SjimharrisACPI_STATUS 279230557SjimharrisAnMethodTypingWalkBegin ( 280230557Sjimharris ACPI_PARSE_OBJECT *Op, 281230557Sjimharris UINT32 Level, 282230557Sjimharris void *Context); 283230557Sjimharris 284230557SjimharrisACPI_STATUS 285230557SjimharrisAnMethodTypingWalkEnd ( 286230557Sjimharris ACPI_PARSE_OBJECT *Op, 287230557Sjimharris UINT32 Level, 288230557Sjimharris void *Context); 289230557Sjimharris 290230557Sjimharris 291230557Sjimharris/* 292230557Sjimharris * aslerror - error handling/reporting 293230557Sjimharris */ 294230557Sjimharrisvoid 295230557SjimharrisAslError ( 296230557Sjimharris UINT8 Level, 297230557Sjimharris UINT8 MessageId, 298230557Sjimharris ACPI_PARSE_OBJECT *Op, 299230557Sjimharris char *ExtraMessage); 300230557Sjimharris 301230557Sjimharrisvoid 302230557SjimharrisAslCoreSubsystemError ( 303230557Sjimharris ACPI_PARSE_OBJECT *Op, 304230557Sjimharris ACPI_STATUS Status, 305230557Sjimharris char *ExtraMessage, 306230557Sjimharris BOOLEAN Abort); 307230557Sjimharris 308230557Sjimharrisint 309230557SjimharrisAslCompilererror( 310230557Sjimharris char *s); 311230557Sjimharris 312230557Sjimharrisvoid 313230557SjimharrisAslCommonError ( 314230557Sjimharris UINT8 Level, 315230557Sjimharris UINT8 MessageId, 316230557Sjimharris UINT32 CurrentLineNumber, 317230557Sjimharris UINT32 LogicalLineNumber, 318230557Sjimharris UINT32 LogicalByteOffset, 319230557Sjimharris UINT32 Column, 320230557Sjimharris char *Filename, 321230557Sjimharris char *ExtraMessage); 322230557Sjimharris 323230557Sjimharrisvoid 324230557SjimharrisAePrintException ( 325230557Sjimharris UINT32 FileId, 326230557Sjimharris ASL_ERROR_MSG *Enode, 327230557Sjimharris char *Header); 328230557Sjimharris 329230557Sjimharrisvoid 330230557SjimharrisAePrintErrorLog ( 331230557Sjimharris UINT32 FileId); 332230557Sjimharris 333230557Sjimharrisvoid 334230557SjimharrisAeClearErrorLog ( 335230557Sjimharris void); 336230557Sjimharris 337230557SjimharrisACPI_PHYSICAL_ADDRESS 338230557SjimharrisAeLocalGetRootPointer ( 339230557Sjimharris void); 340230557Sjimharris 341230557Sjimharris 342230557Sjimharris/* 343230557Sjimharris * asllisting - generate all "listing" type files 344230557Sjimharris */ 345230557Sjimharrisvoid 346230557SjimharrisLsDoListings ( 347230557Sjimharris void); 348230557Sjimharris 349230557Sjimharrisvoid 350230557SjimharrisLsWriteNodeToAsmListing ( 351230557Sjimharris ACPI_PARSE_OBJECT *Op); 352230557Sjimharris 353230557Sjimharrisvoid 354230557SjimharrisLsWriteNode ( 355230557Sjimharris ACPI_PARSE_OBJECT *Op, 356230557Sjimharris UINT32 FileId); 357230557Sjimharris 358230557Sjimharrisvoid 359230557SjimharrisLsDoHexOutput ( 360230557Sjimharris void); 361230557Sjimharris 362230557Sjimharrisvoid 363230557SjimharrisLsDumpParseTree ( 364230557Sjimharris void); 365230557Sjimharris 366230557Sjimharris/* 367230557Sjimharris * aslfold - constant folding 368230557Sjimharris */ 369230557SjimharrisACPI_STATUS 370230557SjimharrisOpcAmlConstantWalk ( 371230557Sjimharris ACPI_PARSE_OBJECT *Op, 372230557Sjimharris UINT32 Level, 373230557Sjimharris void *Context); 374230557Sjimharris 375230557Sjimharris 376230557Sjimharris/* 377230557Sjimharris * aslopcodes - generate AML opcodes 378230557Sjimharris */ 379230557SjimharrisACPI_STATUS 380230557SjimharrisOpcAmlOpcodeWalk ( 381230557Sjimharris ACPI_PARSE_OBJECT *Op, 382230557Sjimharris UINT32 Level, 383230557Sjimharris void *Context); 384230557Sjimharris 385230557SjimharrisACPI_STATUS 386230557SjimharrisOpcAmlOpcodeUpdateWalk ( 387230557Sjimharris ACPI_PARSE_OBJECT *Op, 388230557Sjimharris UINT32 Level, 389230557Sjimharris void *Context); 390230557Sjimharris 391230557Sjimharrisvoid 392230557SjimharrisOpcGenerateAmlOpcode ( 393230557Sjimharris ACPI_PARSE_OBJECT *Op); 394230557Sjimharris 395230557SjimharrisUINT32 396230557SjimharrisOpcSetOptimalIntegerSize ( 397230557Sjimharris ACPI_PARSE_OBJECT *Op); 398230557Sjimharris 399230557Sjimharrisvoid 400230557SjimharrisOpcGetIntegerWidth ( 401230557Sjimharris ACPI_PARSE_OBJECT *Op); 402230557Sjimharris 403230557Sjimharris 404230557Sjimharris/* 405230557Sjimharris * asloperands - generate AML operands for the AML opcodes 406230557Sjimharris */ 407230557SjimharrisACPI_PARSE_OBJECT * 408230557SjimharrisUtGetArg ( 409230557Sjimharris ACPI_PARSE_OBJECT *Op, 410230557Sjimharris UINT32 Argn); 411230557Sjimharris 412230557Sjimharrisvoid 413230557SjimharrisOpnGenerateAmlOperands ( 414230557Sjimharris ACPI_PARSE_OBJECT *Op); 415230557Sjimharris 416230557Sjimharrisvoid 417230557SjimharrisOpnDoPackage ( 418230557Sjimharris ACPI_PARSE_OBJECT *Op); 419230557Sjimharris 420230557Sjimharris 421230557Sjimharris/* 422230557Sjimharris * aslopt - optmization 423230557Sjimharris */ 424230557Sjimharrisvoid 425230557SjimharrisOptOptimizeNamePath ( 426230557Sjimharris ACPI_PARSE_OBJECT *Op, 427230557Sjimharris UINT32 Flags, 428230557Sjimharris ACPI_WALK_STATE *WalkState, 429230557Sjimharris char *AmlNameString, 430230557Sjimharris ACPI_NAMESPACE_NODE *TargetNode); 431230557Sjimharris 432230557Sjimharris 433230557Sjimharris/* 434230557Sjimharris * aslcodegen - code generation 435230557Sjimharris */ 436230557Sjimharrisvoid 437230557SjimharrisCgGenerateAmlOutput ( 438230557Sjimharris void); 439230557Sjimharris 440230557Sjimharris 441230557Sjimharris/* 442230557Sjimharris * aslfile 443230557Sjimharris */ 444230557Sjimharrisvoid 445230557SjimharrisFlOpenFile ( 446230557Sjimharris UINT32 FileId, 447230557Sjimharris char *Filename, 448230557Sjimharris char *Mode); 449230557Sjimharris 450230557Sjimharris 451230557Sjimharris/* 452230557Sjimharris * asllength - calculate/adjust AML package lengths 453230557Sjimharris */ 454230557SjimharrisACPI_STATUS 455230557SjimharrisLnPackageLengthWalk ( 456230557Sjimharris ACPI_PARSE_OBJECT *Op, 457230557Sjimharris UINT32 Level, 458230557Sjimharris void *Context); 459230557Sjimharris 460230557SjimharrisACPI_STATUS 461230557SjimharrisLnInitLengthsWalk ( 462230557Sjimharris ACPI_PARSE_OBJECT *Op, 463230557Sjimharris UINT32 Level, 464230557Sjimharris void *Context); 465230557Sjimharris 466230557Sjimharrisvoid 467230557SjimharrisCgGenerateAmlLengths ( 468230557Sjimharris ACPI_PARSE_OBJECT *Op); 469230557Sjimharris 470230557Sjimharris 471230557Sjimharris/* 472230557Sjimharris * aslmap - opcode mappings and reserved method names 473230557Sjimharris */ 474230557SjimharrisACPI_OBJECT_TYPE 475230557SjimharrisAslMapNamedOpcodeToDataType ( 476230557Sjimharris UINT16 Opcode); 477230557Sjimharris 478230557Sjimharris 479230557Sjimharris/* 480230557Sjimharris * aslpredef - ACPI predefined names support 481230557Sjimharris */ 482230557Sjimharrisvoid 483230557SjimharrisApCheckForPredefinedMethod ( 484230557Sjimharris ACPI_PARSE_OBJECT *Op, 485230557Sjimharris ASL_METHOD_INFO *MethodInfo); 486230557Sjimharris 487230557Sjimharrisvoid 488230557SjimharrisApCheckPredefinedReturnValue ( 489230557Sjimharris ACPI_PARSE_OBJECT *Op, 490230557Sjimharris ASL_METHOD_INFO *MethodInfo); 491230557Sjimharris 492230557SjimharrisUINT32 493230557SjimharrisApCheckForPredefinedName ( 494230557Sjimharris ACPI_PARSE_OBJECT *Op, 495230557Sjimharris char *Name); 496230557Sjimharris 497230557Sjimharrisvoid 498230557SjimharrisApCheckForPredefinedObject ( 499230557Sjimharris ACPI_PARSE_OBJECT *Op, 500230557Sjimharris char *Name); 501230557Sjimharris 502230557Sjimharrisvoid 503230557SjimharrisApDisplayReservedNames ( 504230557Sjimharris void); 505230557Sjimharris 506230557Sjimharris 507230557Sjimharris/* 508230557Sjimharris * asltransform - parse tree transformations 509230557Sjimharris */ 510230557SjimharrisACPI_STATUS 511230557SjimharrisTrAmlTransformWalk ( 512230557Sjimharris ACPI_PARSE_OBJECT *Op, 513230557Sjimharris UINT32 Level, 514230557Sjimharris void *Context); 515230557Sjimharris 516230557Sjimharris 517230557Sjimharris/* 518230557Sjimharris * asltree - parse tree support 519230557Sjimharris */ 520230557SjimharrisACPI_STATUS 521230557SjimharrisTrWalkParseTree ( 522230557Sjimharris ACPI_PARSE_OBJECT *Op, 523230557Sjimharris UINT32 Visitation, 524230557Sjimharris ASL_WALK_CALLBACK DescendingCallback, 525230557Sjimharris ASL_WALK_CALLBACK AscendingCallback, 526230557Sjimharris void *Context); 527230557Sjimharris 528230557Sjimharris/* Values for "Visitation" parameter above */ 529230557Sjimharris 530230557Sjimharris#define ASL_WALK_VISIT_DOWNWARD 0x01 531230557Sjimharris#define ASL_WALK_VISIT_UPWARD 0x02 532230557Sjimharris#define ASL_WALK_VISIT_TWICE (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD) 533230557Sjimharris 534230557Sjimharris 535230557SjimharrisACPI_PARSE_OBJECT * 536230557SjimharrisTrAllocateNode ( 537230557Sjimharris UINT32 ParseOpcode); 538230557Sjimharris 539230557Sjimharrisvoid 540230557SjimharrisTrReleaseNode ( 541230557Sjimharris ACPI_PARSE_OBJECT *Op); 542230557Sjimharris 543230557SjimharrisACPI_PARSE_OBJECT * 544230557SjimharrisTrUpdateNode ( 545230557Sjimharris UINT32 ParseOpcode, 546230557Sjimharris ACPI_PARSE_OBJECT *Op); 547230557Sjimharris 548230557SjimharrisACPI_PARSE_OBJECT * 549230557SjimharrisTrCreateNode ( 550230557Sjimharris UINT32 ParseOpcode, 551230557Sjimharris UINT32 NumChildren, 552230557Sjimharris ...); 553230557Sjimharris 554230557SjimharrisACPI_PARSE_OBJECT * 555230557SjimharrisTrCreateLeafNode ( 556230557Sjimharris UINT32 ParseOpcode); 557230557Sjimharris 558230557SjimharrisACPI_PARSE_OBJECT * 559230557SjimharrisTrCreateValuedLeafNode ( 560230557Sjimharris UINT32 ParseOpcode, 561230557Sjimharris UINT64 Value); 562230557Sjimharris 563230557SjimharrisACPI_PARSE_OBJECT * 564230557SjimharrisTrLinkChildren ( 565230557Sjimharris ACPI_PARSE_OBJECT *Op, 566230557Sjimharris UINT32 NumChildren, 567230557Sjimharris ...); 568230557Sjimharris 569230557Sjimharrisvoid 570230557SjimharrisTrSetEndLineNumber ( 571230557Sjimharris ACPI_PARSE_OBJECT *Op); 572230557Sjimharris 573230557Sjimharrisvoid 574230557SjimharrisTrWalkTree ( 575230557Sjimharris void); 576230557Sjimharris 577230557SjimharrisACPI_PARSE_OBJECT * 578230557SjimharrisTrLinkPeerNode ( 579230557Sjimharris ACPI_PARSE_OBJECT *Op1, 580230557Sjimharris ACPI_PARSE_OBJECT *Op2); 581230557Sjimharris 582230557SjimharrisACPI_PARSE_OBJECT * 583230557SjimharrisTrLinkChildNode ( 584230557Sjimharris ACPI_PARSE_OBJECT *Op1, 585230557Sjimharris ACPI_PARSE_OBJECT *Op2); 586230557Sjimharris 587230557SjimharrisACPI_PARSE_OBJECT * 588230557SjimharrisTrSetNodeFlags ( 589230557Sjimharris ACPI_PARSE_OBJECT *Op, 590230557Sjimharris UINT32 Flags); 591230557Sjimharris 592230557SjimharrisACPI_PARSE_OBJECT * 593230557SjimharrisTrLinkPeerNodes ( 594230557Sjimharris UINT32 NumPeers, 595230557Sjimharris ...); 596230557Sjimharris 597230557Sjimharris 598230557Sjimharris/* 599230557Sjimharris * aslfiles - File I/O support 600230557Sjimharris */ 601230557Sjimharrisvoid 602230557SjimharrisAslAbort ( 603230557Sjimharris void); 604230557Sjimharris 605230557Sjimharrisvoid 606230557SjimharrisFlAddIncludeDirectory ( 607230557Sjimharris char *Dir); 608230557Sjimharris 609230557Sjimharrisvoid 610230557SjimharrisFlOpenIncludeFile ( 611230557Sjimharris ACPI_PARSE_OBJECT *Op); 612230557Sjimharris 613230557Sjimharrisvoid 614230557SjimharrisFlFileError ( 615230557Sjimharris UINT32 FileId, 616230557Sjimharris UINT8 ErrorId); 617230557Sjimharris 618230557SjimharrisUINT32 619230557SjimharrisFlGetFileSize ( 620230557Sjimharris UINT32 FileId); 621230557Sjimharris 622230557SjimharrisACPI_STATUS 623230557SjimharrisFlReadFile ( 624230557Sjimharris UINT32 FileId, 625230557Sjimharris void *Buffer, 626230557Sjimharris UINT32 Length); 627230557Sjimharris 628230557Sjimharrisvoid 629230557SjimharrisFlWriteFile ( 630230557Sjimharris UINT32 FileId, 631230557Sjimharris void *Buffer, 632230557Sjimharris UINT32 Length); 633230557Sjimharris 634230557Sjimharrisvoid 635230557SjimharrisFlSeekFile ( 636230557Sjimharris UINT32 FileId, 637230557Sjimharris long Offset); 638230557Sjimharris 639230557Sjimharrisvoid 640230557SjimharrisFlCloseFile ( 641230557Sjimharris UINT32 FileId); 642230557Sjimharris 643230557Sjimharrisvoid 644230557SjimharrisFlPrintFile ( 645230557Sjimharris UINT32 FileId, 646230557Sjimharris char *Format, 647230557Sjimharris ...); 648230557Sjimharris 649230557Sjimharrisvoid 650230557SjimharrisFlSetLineNumber ( 651230557Sjimharris ACPI_PARSE_OBJECT *Op); 652230557Sjimharris 653230557SjimharrisACPI_STATUS 654230557SjimharrisFlOpenInputFile ( 655230557Sjimharris char *InputFilename); 656230557Sjimharris 657230557SjimharrisACPI_STATUS 658230557SjimharrisFlOpenAmlOutputFile ( 659230557Sjimharris char *InputFilename); 660230557Sjimharris 661230557SjimharrisACPI_STATUS 662230557SjimharrisFlOpenMiscOutputFiles ( 663230557Sjimharris char *InputFilename); 664230557Sjimharris 665230557Sjimharris 666230557Sjimharris/* 667230557Sjimharris * asload - load namespace in prep for cross reference 668230557Sjimharris */ 669230557SjimharrisACPI_STATUS 670230557SjimharrisLdLoadNamespace ( 671230557Sjimharris ACPI_PARSE_OBJECT *RootOp); 672230557Sjimharris 673230557Sjimharris 674230557Sjimharris/* 675230557Sjimharris * asllookup - namespace cross reference 676230557Sjimharris */ 677230557SjimharrisACPI_STATUS 678230557SjimharrisLkCrossReferenceNamespace ( 679230557Sjimharris void); 680230557Sjimharris 681230557Sjimharrisvoid 682230557SjimharrisLkFindUnreferencedObjects ( 683230557Sjimharris void); 684230557Sjimharris 685230557SjimharrisACPI_STATUS 686230557SjimharrisLsDisplayNamespace ( 687230557Sjimharris void); 688230557Sjimharris 689230557Sjimharris 690230557Sjimharris/* 691230557Sjimharris * aslutils - common compiler utilites 692230557Sjimharris */ 693230557Sjimharrisvoid 694230557SjimharrisDbgPrint ( 695230557Sjimharris UINT32 Type, 696230557Sjimharris char *Format, 697230557Sjimharris ...); 698230557Sjimharris 699230557Sjimharris/* Type values for above */ 700230557Sjimharris 701230557Sjimharris#define ASL_DEBUG_OUTPUT 0 702230557Sjimharris#define ASL_PARSE_OUTPUT 1 703230557Sjimharris#define ASL_TREE_OUTPUT 2 704230557Sjimharris 705230557Sjimharrisvoid 706230557SjimharrisUtDisplaySupportedTables ( 707230557Sjimharris void); 708230557Sjimharris 709230557Sjimharrisvoid 710230557SjimharrisUtDisplayConstantOpcodes ( 711230557Sjimharris void); 712230557Sjimharris 713230557SjimharrisUINT8 714230557SjimharrisUtBeginEvent ( 715230557Sjimharris char *Name); 716230557Sjimharris 717230557Sjimharrisvoid 718230557SjimharrisUtEndEvent ( 719230557Sjimharris UINT8 Event); 720230557Sjimharris 721230557Sjimharrisvoid * 722230557SjimharrisUtLocalCalloc ( 723230557Sjimharris UINT32 Size); 724230557Sjimharris 725230557Sjimharrisvoid 726230557SjimharrisUtPrintFormattedName ( 727230557Sjimharris UINT16 ParseOpcode, 728230557Sjimharris UINT32 Level); 729230557Sjimharris 730230557Sjimharrisvoid 731230557SjimharrisUtDisplaySummary ( 732230557Sjimharris UINT32 FileId); 733230557Sjimharris 734230557SjimharrisUINT8 735230557SjimharrisUtHexCharToValue ( 736230557Sjimharris int HexChar); 737230557Sjimharris 738230557Sjimharrisvoid 739230557SjimharrisUtConvertByteToHex ( 740230557Sjimharris UINT8 RawByte, 741230557Sjimharris UINT8 *Buffer); 742230557Sjimharris 743230557Sjimharrisvoid 744230557SjimharrisUtConvertByteToAsmHex ( 745230557Sjimharris UINT8 RawByte, 746230557Sjimharris UINT8 *Buffer); 747230557Sjimharris 748230557Sjimharrischar * 749230557SjimharrisUtGetOpName ( 750230557Sjimharris UINT32 ParseOpcode); 751230557Sjimharris 752230557Sjimharrisvoid 753230557SjimharrisUtSetParseOpName ( 754230557Sjimharris ACPI_PARSE_OBJECT *Op); 755230557Sjimharris 756230557Sjimharrischar * 757230557SjimharrisUtGetStringBuffer ( 758230557Sjimharris UINT32 Length); 759230557Sjimharris 760230557SjimharrisACPI_STATUS 761230557SjimharrisUtInternalizeName ( 762230557Sjimharris char *ExternalName, 763230557Sjimharris char **ConvertedName); 764230557Sjimharris 765230557Sjimharrisvoid 766230557SjimharrisUtAttachNamepathToOwner ( 767230557Sjimharris ACPI_PARSE_OBJECT *Op, 768230557Sjimharris ACPI_PARSE_OBJECT *NameNode); 769230557Sjimharris 770230557SjimharrisACPI_PARSE_OBJECT * 771230557SjimharrisUtCheckIntegerRange ( 772230557Sjimharris ACPI_PARSE_OBJECT *Op, 773230557Sjimharris UINT32 LowValue, 774230557Sjimharris UINT32 HighValue); 775230557Sjimharris 776230557SjimharrisUINT64 777230557SjimharrisUtDoConstant ( 778230557Sjimharris char *String); 779230557Sjimharris 780230557Sjimharris 781230557Sjimharris/* 782230557Sjimharris * aslresource - Resource template generation utilities 783230557Sjimharris */ 784230557Sjimharrisvoid 785230557SjimharrisRsSmallAddressCheck ( 786230557Sjimharris UINT8 Type, 787230557Sjimharris UINT32 Minimum, 788230557Sjimharris UINT32 Maximum, 789230557Sjimharris UINT32 Length, 790230557Sjimharris UINT32 Alignment, 791230557Sjimharris ACPI_PARSE_OBJECT *MinOp, 792230557Sjimharris ACPI_PARSE_OBJECT *MaxOp, 793230557Sjimharris ACPI_PARSE_OBJECT *LengthOp, 794230557Sjimharris ACPI_PARSE_OBJECT *AlignOp); 795230557Sjimharris 796230557Sjimharrisvoid 797230557SjimharrisRsLargeAddressCheck ( 798230557Sjimharris UINT64 Minimum, 799230557Sjimharris UINT64 Maximum, 800230557Sjimharris UINT64 Length, 801230557Sjimharris UINT64 Granularity, 802230557Sjimharris UINT8 Flags, 803230557Sjimharris ACPI_PARSE_OBJECT *MinOp, 804230557Sjimharris ACPI_PARSE_OBJECT *MaxOp, 805230557Sjimharris ACPI_PARSE_OBJECT *LengthOp, 806230557Sjimharris ACPI_PARSE_OBJECT *GranOp); 807230557Sjimharris 808230557SjimharrisUINT16 809230557SjimharrisRsGetStringDataLength ( 810230557Sjimharris ACPI_PARSE_OBJECT *InitializerOp); 811230557Sjimharris 812230557SjimharrisASL_RESOURCE_NODE * 813230557SjimharrisRsAllocateResourceNode ( 814230557Sjimharris UINT32 Size); 815230557Sjimharris 816230557Sjimharrisvoid 817230557SjimharrisRsCreateBitField ( 818230557Sjimharris ACPI_PARSE_OBJECT *Op, 819230557Sjimharris char *Name, 820230557Sjimharris UINT32 ByteOffset, 821230557Sjimharris UINT32 BitOffset); 822230557Sjimharris 823230557Sjimharrisvoid 824230557SjimharrisRsCreateByteField ( 825230557Sjimharris ACPI_PARSE_OBJECT *Op, 826230557Sjimharris char *Name, 827230557Sjimharris UINT32 ByteOffset); 828230557Sjimharris 829230557Sjimharrisvoid 830230557SjimharrisRsSetFlagBits ( 831230557Sjimharris UINT8 *Flags, 832230557Sjimharris ACPI_PARSE_OBJECT *Op, 833230557Sjimharris UINT8 Position, 834230557Sjimharris UINT8 DefaultBit); 835230557Sjimharris 836230557SjimharrisACPI_PARSE_OBJECT * 837230557SjimharrisRsCompleteNodeAndGetNext ( 838230557Sjimharris ACPI_PARSE_OBJECT *Op); 839230557Sjimharris 840230557Sjimharrisvoid 841230557SjimharrisRsCheckListForDuplicates ( 842230557Sjimharris ACPI_PARSE_OBJECT *Op); 843230557Sjimharris 844230557SjimharrisASL_RESOURCE_NODE * 845230557SjimharrisRsDoOneResourceDescriptor ( 846230557Sjimharris ACPI_PARSE_OBJECT *DescriptorTypeOp, 847230557Sjimharris UINT32 CurrentByteOffset, 848230557Sjimharris UINT8 *State); 849230557Sjimharris 850230557Sjimharris/* Values for State above */ 851230557Sjimharris 852230557Sjimharris#define ACPI_RSTATE_NORMAL 0 853230557Sjimharris#define ACPI_RSTATE_START_DEPENDENT 1 854230557Sjimharris#define ACPI_RSTATE_DEPENDENT_LIST 2 855230557Sjimharris 856230557SjimharrisUINT32 857230557SjimharrisRsLinkDescriptorChain ( 858230557Sjimharris ASL_RESOURCE_NODE **PreviousRnode, 859230557Sjimharris ASL_RESOURCE_NODE *Rnode); 860230557Sjimharris 861230557Sjimharrisvoid 862230557SjimharrisRsDoResourceTemplate ( 863230557Sjimharris ACPI_PARSE_OBJECT *Op); 864230557Sjimharris 865230557Sjimharris 866230557Sjimharris/* 867230557Sjimharris * aslrestype1 - Miscellaneous Small descriptors 868230557Sjimharris */ 869230557SjimharrisASL_RESOURCE_NODE * 870230557SjimharrisRsDoEndTagDescriptor ( 871230557Sjimharris ACPI_PARSE_OBJECT *Op, 872230557Sjimharris UINT32 CurrentByteOffset); 873230557Sjimharris 874230557SjimharrisASL_RESOURCE_NODE * 875230557SjimharrisRsDoEndDependentDescriptor ( 876230557Sjimharris ACPI_PARSE_OBJECT *Op, 877230557Sjimharris UINT32 CurrentByteOffset); 878230557Sjimharris 879230557SjimharrisASL_RESOURCE_NODE * 880230557SjimharrisRsDoMemory24Descriptor ( 881230557Sjimharris ACPI_PARSE_OBJECT *Op, 882230557Sjimharris UINT32 CurrentByteOffset); 883230557Sjimharris 884230557SjimharrisASL_RESOURCE_NODE * 885230557SjimharrisRsDoMemory32Descriptor ( 886230557Sjimharris ACPI_PARSE_OBJECT *Op, 887230557Sjimharris UINT32 CurrentByteOffset); 888230557Sjimharris 889230557SjimharrisASL_RESOURCE_NODE * 890230557SjimharrisRsDoMemory32FixedDescriptor ( 891230557Sjimharris ACPI_PARSE_OBJECT *Op, 892230557Sjimharris UINT32 CurrentByteOffset); 893230557Sjimharris 894230557SjimharrisASL_RESOURCE_NODE * 895230557SjimharrisRsDoStartDependentDescriptor ( 896230557Sjimharris ACPI_PARSE_OBJECT *Op, 897230557Sjimharris UINT32 CurrentByteOffset); 898230557Sjimharris 899230557SjimharrisASL_RESOURCE_NODE * 900230557SjimharrisRsDoStartDependentNoPriDescriptor ( 901230557Sjimharris ACPI_PARSE_OBJECT *Op, 902230557Sjimharris UINT32 CurrentByteOffset); 903230557Sjimharris 904230557SjimharrisASL_RESOURCE_NODE * 905230557SjimharrisRsDoVendorSmallDescriptor ( 906230557Sjimharris ACPI_PARSE_OBJECT *Op, 907230557Sjimharris UINT32 CurrentByteOffset); 908230557Sjimharris 909230557Sjimharris 910230557Sjimharris/* 911230557Sjimharris * aslrestype1i - I/O-related Small descriptors 912230557Sjimharris */ 913230557SjimharrisASL_RESOURCE_NODE * 914230557SjimharrisRsDoDmaDescriptor ( 915230557Sjimharris ACPI_PARSE_OBJECT *Op, 916230557Sjimharris UINT32 CurrentByteOffset); 917230557Sjimharris 918230557SjimharrisASL_RESOURCE_NODE * 919230557SjimharrisRsDoFixedIoDescriptor ( 920230557Sjimharris ACPI_PARSE_OBJECT *Op, 921230557Sjimharris UINT32 CurrentByteOffset); 922230557Sjimharris 923230557SjimharrisASL_RESOURCE_NODE * 924230557SjimharrisRsDoIoDescriptor ( 925230557Sjimharris ACPI_PARSE_OBJECT *Op, 926230557Sjimharris UINT32 CurrentByteOffset); 927230557Sjimharris 928230557SjimharrisASL_RESOURCE_NODE * 929230557SjimharrisRsDoIrqDescriptor ( 930230557Sjimharris ACPI_PARSE_OBJECT *Op, 931230557Sjimharris UINT32 CurrentByteOffset); 932230557Sjimharris 933230557SjimharrisASL_RESOURCE_NODE * 934230557SjimharrisRsDoIrqNoFlagsDescriptor ( 935230557Sjimharris ACPI_PARSE_OBJECT *Op, 936230557Sjimharris UINT32 CurrentByteOffset); 937230557Sjimharris 938230557Sjimharris 939230557Sjimharris/* 940230557Sjimharris * aslrestype2 - Large resource descriptors 941230557Sjimharris */ 942230557SjimharrisASL_RESOURCE_NODE * 943230557SjimharrisRsDoInterruptDescriptor ( 944230557Sjimharris ACPI_PARSE_OBJECT *Op, 945230557Sjimharris UINT32 CurrentByteOffset); 946230557Sjimharris 947230557SjimharrisASL_RESOURCE_NODE * 948230557SjimharrisRsDoVendorLargeDescriptor ( 949230557Sjimharris ACPI_PARSE_OBJECT *Op, 950230557Sjimharris UINT32 CurrentByteOffset); 951230557Sjimharris 952230557SjimharrisASL_RESOURCE_NODE * 953230557SjimharrisRsDoGeneralRegisterDescriptor ( 954230557Sjimharris ACPI_PARSE_OBJECT *Op, 955230557Sjimharris UINT32 CurrentByteOffset); 956230557Sjimharris 957230557Sjimharris 958230557Sjimharris/* 959230557Sjimharris * aslrestype2d - DWord address descriptors 960230557Sjimharris */ 961230557SjimharrisASL_RESOURCE_NODE * 962230557SjimharrisRsDoDwordIoDescriptor ( 963230557Sjimharris ACPI_PARSE_OBJECT *Op, 964230557Sjimharris UINT32 CurrentByteOffset); 965230557Sjimharris 966230557SjimharrisASL_RESOURCE_NODE * 967230557SjimharrisRsDoDwordMemoryDescriptor ( 968230557Sjimharris ACPI_PARSE_OBJECT *Op, 969230557Sjimharris UINT32 CurrentByteOffset); 970230557Sjimharris 971230557SjimharrisASL_RESOURCE_NODE * 972230557SjimharrisRsDoDwordSpaceDescriptor ( 973230557Sjimharris ACPI_PARSE_OBJECT *Op, 974230557Sjimharris UINT32 CurrentByteOffset); 975230557Sjimharris 976230557Sjimharris 977230557Sjimharris/* 978 * aslrestype2e - Extended address descriptors 979 */ 980ASL_RESOURCE_NODE * 981RsDoExtendedIoDescriptor ( 982 ACPI_PARSE_OBJECT *Op, 983 UINT32 CurrentByteOffset); 984 985ASL_RESOURCE_NODE * 986RsDoExtendedMemoryDescriptor ( 987 ACPI_PARSE_OBJECT *Op, 988 UINT32 CurrentByteOffset); 989 990ASL_RESOURCE_NODE * 991RsDoExtendedSpaceDescriptor ( 992 ACPI_PARSE_OBJECT *Op, 993 UINT32 CurrentByteOffset); 994 995 996/* 997 * aslrestype2q - QWord address descriptors 998 */ 999ASL_RESOURCE_NODE * 1000RsDoQwordIoDescriptor ( 1001 ACPI_PARSE_OBJECT *Op, 1002 UINT32 CurrentByteOffset); 1003 1004ASL_RESOURCE_NODE * 1005RsDoQwordMemoryDescriptor ( 1006 ACPI_PARSE_OBJECT *Op, 1007 UINT32 CurrentByteOffset); 1008 1009ASL_RESOURCE_NODE * 1010RsDoQwordSpaceDescriptor ( 1011 ACPI_PARSE_OBJECT *Op, 1012 UINT32 CurrentByteOffset); 1013 1014 1015/* 1016 * aslrestype2w - Word address descriptors 1017 */ 1018ASL_RESOURCE_NODE * 1019RsDoWordIoDescriptor ( 1020 ACPI_PARSE_OBJECT *Op, 1021 UINT32 CurrentByteOffset); 1022 1023ASL_RESOURCE_NODE * 1024RsDoWordSpaceDescriptor ( 1025 ACPI_PARSE_OBJECT *Op, 1026 UINT32 CurrentByteOffset); 1027 1028ASL_RESOURCE_NODE * 1029RsDoWordBusNumberDescriptor ( 1030 ACPI_PARSE_OBJECT *Op, 1031 UINT32 CurrentByteOffset); 1032 1033/* 1034 * Entry to data table compiler subsystem 1035 */ 1036ACPI_STATUS 1037DtDoCompile( 1038 void); 1039 1040ACPI_STATUS 1041DtCreateTemplates ( 1042 char *Signature); 1043 1044#endif /* __ASLCOMPILER_H */ 1045 1046