1151937Sjkim/****************************************************************************** 2151937Sjkim * 3151937Sjkim * Module Name: asldefine.h - Common defines for the iASL compiler 4151937Sjkim * 5151937Sjkim *****************************************************************************/ 6151937Sjkim 7217365Sjkim/* 8245582Sjkim * Copyright (C) 2000 - 2013, Intel Corp. 9151937Sjkim * All rights reserved. 10151937Sjkim * 11217365Sjkim * Redistribution and use in source and binary forms, with or without 12217365Sjkim * modification, are permitted provided that the following conditions 13217365Sjkim * are met: 14217365Sjkim * 1. Redistributions of source code must retain the above copyright 15217365Sjkim * notice, this list of conditions, and the following disclaimer, 16217365Sjkim * without modification. 17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18217365Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 19217365Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 20217365Sjkim * including a substantially similar Disclaimer requirement for further 21217365Sjkim * binary redistribution. 22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 23217365Sjkim * of any contributors may be used to endorse or promote products derived 24217365Sjkim * from this software without specific prior written permission. 25151937Sjkim * 26217365Sjkim * Alternatively, this software may be distributed under the terms of the 27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 28217365Sjkim * Software Foundation. 29151937Sjkim * 30217365Sjkim * NO WARRANTY 31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41217365Sjkim * POSSIBILITY OF SUCH DAMAGES. 42217365Sjkim */ 43151937Sjkim 44151937Sjkim 45151937Sjkim#ifndef __ASLDEFINE_H 46151937Sjkim#define __ASLDEFINE_H 47151937Sjkim 48151937Sjkim 49151937Sjkim/* 50151937Sjkim * Compiler versions and names 51151937Sjkim */ 52213806Sjkim#define ASL_REVISION ACPI_CA_VERSION 53213806Sjkim#define ASL_COMPILER_NAME "ASL Optimizing Compiler" 54213806Sjkim#define AML_DISASSEMBLER_NAME "AML Disassembler" 55213806Sjkim#define ASL_INVOCATION_NAME "iasl" 56213806Sjkim#define ASL_CREATOR_ID "INTL" 57151937Sjkim 58228110Sjkim#define ASL_COMPLIANCE "Supports ACPI Specification Revision 5.0" 59151937Sjkim 60151937Sjkim 61151937Sjkim/* Configuration constants */ 62151937Sjkim 63151937Sjkim#define ASL_MAX_ERROR_COUNT 200 64151937Sjkim#define ASL_NODE_CACHE_SIZE 1024 65151937Sjkim#define ASL_STRING_CACHE_SIZE 32768 66151937Sjkim 67151937Sjkim#define ASL_FIRST_PARSE_OPCODE PARSEOP_ACCESSAS 68151937Sjkim#define ASL_PARSE_OPCODE_BASE PARSEOP_ACCESSAS /* First Lex type */ 69151937Sjkim 70151937Sjkim 71151937Sjkim/* 72220681Sjkim * Per-parser-generator configuration. These values are used to cheat and 73220681Sjkim * directly access the bison/yacc token name table (yyname or yytname). 74220681Sjkim * Note: These values are the index in yyname for the first lex token 75220681Sjkim * (PARSEOP_ACCCESSAS). 76220681Sjkim */ 77220681Sjkim#if defined (YYBISON) 78220681Sjkim#define ASL_YYTNAME_START 3 /* Bison */ 79220681Sjkim#elif defined (YYBYACC) 80220681Sjkim#define ASL_YYTNAME_START 257 /* Berkeley yacc */ 81220681Sjkim#endif 82220681Sjkim 83220681Sjkim 84220681Sjkim/* 85151937Sjkim * Macros 86151937Sjkim */ 87151937Sjkim#define ASL_RESDESC_OFFSET(m) ACPI_OFFSET (AML_RESOURCE, m) 88151937Sjkim#define ASL_PTR_DIFF(a,b) ((UINT8 *)(b) - (UINT8 *)(a)) 89151937Sjkim#define ASL_PTR_ADD(a,b) ((UINT8 *)(a) = ((UINT8 *)(a) + (b))) 90151937Sjkim#define ASL_GET_CHILD_NODE(a) (a)->Asl.Child 91151937Sjkim#define ASL_GET_PEER_NODE(a) (a)->Asl.Next 92151937Sjkim#define OP_TABLE_ENTRY(a,b,c,d) {b,d,a,c} 93151937Sjkim 94151937Sjkim 95151937Sjkim/* Internal AML opcodes */ 96151937Sjkim 97151937Sjkim#define AML_RAW_DATA_BYTE (UINT16) 0xAA01 /* write one raw byte */ 98151937Sjkim#define AML_RAW_DATA_WORD (UINT16) 0xAA02 /* write 2 raw bytes */ 99151937Sjkim#define AML_RAW_DATA_DWORD (UINT16) 0xAA04 /* write 4 raw bytes */ 100151937Sjkim#define AML_RAW_DATA_QWORD (UINT16) 0xAA08 /* write 8 raw bytes */ 101151937Sjkim#define AML_RAW_DATA_BUFFER (UINT16) 0xAA0B /* raw buffer with length */ 102151937Sjkim#define AML_RAW_DATA_CHAIN (UINT16) 0xAA0C /* chain of raw buffers */ 103151937Sjkim#define AML_PACKAGE_LENGTH (UINT16) 0xAA10 104151937Sjkim#define AML_UNASSIGNED_OPCODE (UINT16) 0xEEEE 105151937Sjkim#define AML_DEFAULT_ARG_OP (UINT16) 0xDDDD 106151937Sjkim 107151937Sjkim 108151937Sjkim/* filename suffixes for output files */ 109151937Sjkim 110220681Sjkim#define FILE_SUFFIX_PREPROCESSOR "i" 111151937Sjkim#define FILE_SUFFIX_AML_CODE "aml" 112151937Sjkim#define FILE_SUFFIX_LISTING "lst" 113151937Sjkim#define FILE_SUFFIX_HEX_DUMP "hex" 114151937Sjkim#define FILE_SUFFIX_DEBUG "txt" 115151937Sjkim#define FILE_SUFFIX_SOURCE "src" 116151937Sjkim#define FILE_SUFFIX_NAMESPACE "nsp" 117151937Sjkim#define FILE_SUFFIX_ASM_SOURCE "asm" 118151937Sjkim#define FILE_SUFFIX_C_SOURCE "c" 119151937Sjkim#define FILE_SUFFIX_DISASSEMBLY "dsl" 120151937Sjkim#define FILE_SUFFIX_ASM_INCLUDE "inc" 121151937Sjkim#define FILE_SUFFIX_C_INCLUDE "h" 122209746Sjkim#define FILE_SUFFIX_ASL_CODE "asl" 123249112Sjkim#define FILE_SUFFIX_C_OFFSET "offset.h" 124151937Sjkim 125151937Sjkim 126209746Sjkim/* Types for input files */ 127209746Sjkim 128209746Sjkim#define ASL_INPUT_TYPE_BINARY 0 129246849Sjkim#define ASL_INPUT_TYPE_ACPI_TABLE 1 130246849Sjkim#define ASL_INPUT_TYPE_ASCII_ASL 2 131246849Sjkim#define ASL_INPUT_TYPE_ASCII_DATA 3 132209746Sjkim 133209746Sjkim 134151937Sjkim/* Misc */ 135151937Sjkim 136151937Sjkim#define ASL_EXTERNAL_METHOD 255 137151937Sjkim#define ASL_ABORT TRUE 138151937Sjkim#define ASL_NO_ABORT FALSE 139220663Sjkim#define ASL_EOF ACPI_UINT32_MAX 140151937Sjkim 141151937Sjkim 142249112Sjkim/* Listings */ 143249112Sjkim 144249112Sjkim#define ASL_LISTING_LINE_PREFIX ": " 145249112Sjkim 146249112Sjkim 147151937Sjkim/* Support for reserved method names */ 148151937Sjkim 149151937Sjkim#define ACPI_VALID_RESERVED_NAME_MAX 0x80000000 150151937Sjkim#define ACPI_NOT_RESERVED_NAME ACPI_UINT32_MAX 151151937Sjkim#define ACPI_PREDEFINED_NAME (ACPI_UINT32_MAX - 1) 152151937Sjkim#define ACPI_EVENT_RESERVED_NAME (ACPI_UINT32_MAX - 2) 153151937Sjkim#define ACPI_COMPILER_RESERVED_NAME (ACPI_UINT32_MAX - 3) 154151937Sjkim 155151937Sjkim 156151937Sjkim/* String to Integer conversion */ 157151937Sjkim 158151937Sjkim#define NEGATIVE 1 159151937Sjkim#define POSITIVE 0 160151937Sjkim 161151937Sjkim 162228110Sjkim/* Helper macros for resource tag creation */ 163228110Sjkim 164228110Sjkim#define RsCreateMultiBitField \ 165228110Sjkim RsCreateResourceField 166228110Sjkim 167228110Sjkim#define RsCreateBitField(Op, Name, ByteOffset, BitOffset) \ 168228110Sjkim RsCreateResourceField (Op, Name, ByteOffset, BitOffset, 1) 169228110Sjkim 170228110Sjkim#define RsCreateByteField(Op, Name, ByteOffset) \ 171228110Sjkim RsCreateResourceField (Op, Name, ByteOffset, 0, 8); 172228110Sjkim 173228110Sjkim#define RsCreateWordField(Op, Name, ByteOffset) \ 174228110Sjkim RsCreateResourceField (Op, Name, ByteOffset, 0, 16); 175228110Sjkim 176228110Sjkim#define RsCreateDwordField(Op, Name, ByteOffset) \ 177228110Sjkim RsCreateResourceField (Op, Name, ByteOffset, 0, 32); 178228110Sjkim 179228110Sjkim#define RsCreateQwordField(Op, Name, ByteOffset) \ 180228110Sjkim RsCreateResourceField (Op, Name, ByteOffset, 0, 64); 181228110Sjkim 182151937Sjkim#endif /* ASLDEFINE.H */ 183