asltypes.h revision 220663
119304Speter 219304Speter/****************************************************************************** 319304Speter * 419304Speter * Module Name: asltypes.h - compiler data types and struct definitions 519304Speter * 619304Speter *****************************************************************************/ 719304Speter 819304Speter/* 919304Speter * Copyright (C) 2000 - 2011, Intel Corp. 1019304Speter * All rights reserved. 1119304Speter * 1219304Speter * Redistribution and use in source and binary forms, with or without 13254225Speter * modification, are permitted provided that the following conditions 1419304Speter * are met: 1519304Speter * 1. Redistributions of source code must retain the above copyright 1619304Speter * notice, this list of conditions, and the following disclaimer, 1719304Speter * without modification. 18254225Speter * 2. Redistributions in binary form must reproduce at minimum a disclaimer 1919304Speter * substantially similar to the "NO WARRANTY" disclaimer below 2019304Speter * ("Disclaimer") and any redistribution must be conditioned upon 2119304Speter * including a substantially similar Disclaimer requirement for further 2219304Speter * binary redistribution. 2319304Speter * 3. Neither the names of the above-listed copyright holders nor the names 2419304Speter * of any contributors may be used to endorse or promote products derived 2519304Speter * from this software without specific prior written permission. 26254225Speter * 27170371Srafan * Alternatively, this software may be distributed under the terms of the 28254225Speter * GNU General Public License ("GPL") version 2 as published by the Free 2919304Speter * Software Foundation. 3019304Speter * 3119304Speter * NO WARRANTY 3219304Speter * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 3319304Speter * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 3419304Speter * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 3519304Speter * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 3619304Speter * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 3719304Speter * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 3819304Speter * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3919304Speter * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 4019304Speter * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 4119304Speter * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 4219304Speter * POSSIBILITY OF SUCH DAMAGES. 4319304Speter */ 4419304Speter 4519304Speter 4619304Speter#ifndef __ASLTYPES_H 4719304Speter#define __ASLTYPES_H 4819304Speter 49254225Speter 5019304Speter/******************************************************************************* 5119304Speter * 52254225Speter * Structure definitions 5319304Speter * 5419304Speter ******************************************************************************/ 5519304Speter 5619304Speter 57254225Speter/* Op flags for the ACPI_PARSE_OBJECT */ 5819304Speter 5919304Speter#define NODE_VISITED 0x00000001 6019304Speter#define NODE_AML_PACKAGE 0x00000002 61254225Speter#define NODE_IS_TARGET 0x00000004 62254225Speter#define NODE_IS_RESOURCE_DESC 0x00000008 63254225Speter#define NODE_IS_RESOURCE_FIELD 0x00000010 64254225Speter#define NODE_HAS_NO_EXIT 0x00000020 6519304Speter#define NODE_IF_HAS_NO_EXIT 0x00000040 6619304Speter#define NODE_NAME_INTERNALIZED 0x00000080 6719304Speter#define NODE_METHOD_NO_RETVAL 0x00000100 6819304Speter#define NODE_METHOD_SOME_NO_RETVAL 0x00000200 6919304Speter#define NODE_RESULT_NOT_USED 0x00000400 7019304Speter#define NODE_METHOD_TYPED 0x00000800 71254225Speter#define NODE_IS_BIT_OFFSET 0x00001000 72254225Speter#define NODE_COMPILE_TIME_CONST 0x00002000 7319304Speter#define NODE_IS_TERM_ARG 0x00004000 7419304Speter#define NODE_WAS_ONES_OP 0x00008000 7519304Speter#define NODE_IS_NAME_DECLARATION 0x00010000 7619304Speter#define NODE_COMPILER_EMITTED 0x00020000 7719304Speter#define NODE_IS_DUPLICATE 0x00040000 7819304Speter#define NODE_IS_RESOURCE_DATA 0x00080000 7919304Speter#define NODE_IS_NULL_RETURN 0x00100000 8019304Speter 8119304Speter/* Keeps information about individual control methods */ 8219304Speter 8319304Spetertypedef struct asl_method_info 8419304Speter{ 8519304Speter UINT8 NumArguments; 8619304Speter UINT8 LocalInitialized[ACPI_METHOD_NUM_LOCALS]; 8719304Speter UINT8 ArgInitialized[ACPI_METHOD_NUM_ARGS]; 8819304Speter UINT32 ValidArgTypes[ACPI_METHOD_NUM_ARGS]; 8919304Speter UINT32 ValidReturnTypes; 9019304Speter UINT32 NumReturnNoValue; 9119304Speter UINT32 NumReturnWithValue; 9219304Speter ACPI_PARSE_OBJECT *Op; 9319304Speter struct asl_method_info *Next; 9419304Speter UINT8 HasBeenTyped; 9519304Speter 9619304Speter} ASL_METHOD_INFO; 9719304Speter 9819304Speter 9919304Speter/* Parse tree walk info for control method analysis */ 100254225Speter 101254225Spetertypedef struct asl_analysis_walk_info 102254225Speter{ 10319304Speter ASL_METHOD_INFO *MethodStack; 104254225Speter 105254225Speter} ASL_ANALYSIS_WALK_INFO; 10619304Speter 10719304Speter 10819304Speter/* An entry in the ParseOpcode to AmlOpcode mapping table */ 10919304Speter 11019304Spetertypedef struct asl_mapping_entry 11119304Speter{ 11219304Speter UINT32 Value; 11319304Speter UINT32 AcpiBtype; /* Object type or return type */ 11419304Speter UINT16 AmlOpcode; 11519304Speter UINT8 Flags; 11619304Speter 11719304Speter} ASL_MAPPING_ENTRY; 11819304Speter 11919304Speter 12019304Speter/* Parse tree walk info structure */ 12119304Speter 12219304Spetertypedef struct asl_walk_info 12319304Speter{ 12419304Speter ACPI_PARSE_OBJECT **NodePtr; 12519304Speter UINT32 *LevelPtr; 12619304Speter 12719304Speter} ASL_WALK_INFO; 12819304Speter 12919304Speter 13019304Speter/* File info */ 13119304Speter 13219304Spetertypedef struct asl_file_info 13319304Speter{ 13419304Speter FILE *Handle; 13519304Speter char *Filename; 13619304Speter 137254225Speter} ASL_FILE_INFO; 13819304Speter 13919304Spetertypedef struct asl_file_status 14019304Speter{ 14119304Speter UINT32 Line; 14219304Speter UINT32 Offset; 14319304Speter 14419304Speter} ASL_FILE_STATUS; 14519304Speter 14619304Speter 14719304Speter/* File types */ 14819304Speter 14919304Spetertypedef enum 15019304Speter{ 15119304Speter ASL_FILE_STDOUT = 0, 15219304Speter ASL_FILE_STDERR, 15319304Speter ASL_FILE_INPUT, 15419304Speter ASL_FILE_AML_OUTPUT, 15519304Speter ASL_FILE_SOURCE_OUTPUT, 15619304Speter ASL_FILE_LISTING_OUTPUT, 15719304Speter ASL_FILE_HEX_OUTPUT, 15819304Speter ASL_FILE_NAMESPACE_OUTPUT, 15919304Speter ASL_FILE_DEBUG_OUTPUT, 16019304Speter ASL_FILE_ASM_SOURCE_OUTPUT, 16119304Speter ASL_FILE_C_SOURCE_OUTPUT, 16219304Speter ASL_FILE_ASM_INCLUDE_OUTPUT, 16319304Speter ASL_FILE_C_INCLUDE_OUTPUT 16419304Speter 16519304Speter} ASL_FILE_TYPES; 16619304Speter 16719304Speter 16819304Speter#define ASL_MAX_FILE_TYPE 12 16919304Speter#define ASL_NUM_FILES (ASL_MAX_FILE_TYPE + 1) 17019304Speter 17119304Speter 17219304Spetertypedef struct asl_include_dir 17319304Speter{ 17419304Speter char *Dir; 17519304Speter struct asl_include_dir *Next; 17619304Speter 17719304Speter} ASL_INCLUDE_DIR; 17819304Speter 17919304Speter 18019304Speter/* An entry in the exception list, one for each error/warning */ 18119304Speter 18219304Spetertypedef struct asl_error_msg 18319304Speter{ 18419304Speter UINT32 LineNumber; 18519304Speter UINT32 LogicalLineNumber; 18619304Speter UINT32 LogicalByteOffset; 187254225Speter UINT32 Column; 18819304Speter char *Message; 18919304Speter struct asl_error_msg *Next; 19019304Speter char *Filename; 19119304Speter UINT32 FilenameLength; 19219304Speter UINT8 MessageId; 19319304Speter UINT8 Level; 19419304Speter 19519304Speter} ASL_ERROR_MSG; 19619304Speter 19719304Speter 19819304Speter/* An entry in the listing file stack (for include files) */ 19919304Speter 20019304Spetertypedef struct asl_listing_node 20119304Speter{ 20219304Speter char *Filename; 20319304Speter UINT32 LineNumber; 20419304Speter struct asl_listing_node *Next; 20519304Speter 20619304Speter} ASL_LISTING_NODE; 20719304Speter 20819304Speter 20919304Speter/* Callback interface for a parse tree walk */ 21019304Speter 21119304Speter/* 21219304Speter * TBD - another copy of this is in adisasm.h, fix 21319304Speter */ 21419304Speter#ifndef ASL_WALK_CALLBACK_DEFINED 21519304Spetertypedef 21619304SpeterACPI_STATUS (*ASL_WALK_CALLBACK) ( 21719304Speter ACPI_PARSE_OBJECT *Op, 21819304Speter UINT32 Level, 21919304Speter void *Context); 22019304Speter#define ASL_WALK_CALLBACK_DEFINED 22119304Speter#endif 22219304Speter 22319304Speter 22419304Spetertypedef struct asl_event_info 22519304Speter{ 22619304Speter UINT64 StartTime; 22719304Speter UINT64 EndTime; 22819304Speter char *EventName; 22919304Speter BOOLEAN Valid; 23019304Speter 23119304Speter} ASL_EVENT_INFO; 23219304Speter 23319304Speter 23419304Speter#endif /* __ASLTYPES_H */ 23519304Speter