1151937Sjkim/****************************************************************************** 2151937Sjkim * 3151937Sjkim * Module Name: asldefine.h - Common defines for the iASL compiler 4151937Sjkim * 5151937Sjkim *****************************************************************************/ 6151937Sjkim 7217365Sjkim/* 8306536Sjkim * Copyright (C) 2000 - 2016, 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#ifndef __ASLDEFINE_H 45151937Sjkim#define __ASLDEFINE_H 46151937Sjkim 47151937Sjkim 48151937Sjkim/* 49151937Sjkim * Compiler versions and names 50151937Sjkim */ 51281075Sdim#define ASL_COMPILER_NAME "ASL+ Optimizing Compiler" 52281075Sdim#define AML_DISASSEMBLER_NAME "AML/ASL+ Disassembler" 53213806Sjkim#define ASL_INVOCATION_NAME "iasl" 54213806Sjkim#define ASL_CREATOR_ID "INTL" 55306536Sjkim#define ASL_DEFINE "__IASL__" 56151937Sjkim 57306536Sjkim#define ASL_COMPLIANCE "Supports ACPI Specification Revision 6.1" 58151937Sjkim 59151937Sjkim 60151937Sjkim/* Configuration constants */ 61151937Sjkim 62151937Sjkim#define ASL_MAX_ERROR_COUNT 200 63281075Sdim#define ASL_PARSEOP_CACHE_SIZE (1024 * 16) 64281075Sdim#define ASL_STRING_CACHE_SIZE (1024 * 64) 65151937Sjkim 66151937Sjkim#define ASL_FIRST_PARSE_OPCODE PARSEOP_ACCESSAS 67151937Sjkim#define ASL_PARSE_OPCODE_BASE PARSEOP_ACCESSAS /* First Lex type */ 68151937Sjkim 69151937Sjkim 70151937Sjkim/* 71220681Sjkim * Per-parser-generator configuration. These values are used to cheat and 72220681Sjkim * directly access the bison/yacc token name table (yyname or yytname). 73220681Sjkim * Note: These values are the index in yyname for the first lex token 74220681Sjkim * (PARSEOP_ACCCESSAS). 75220681Sjkim */ 76220681Sjkim#if defined (YYBISON) 77220681Sjkim#define ASL_YYTNAME_START 3 /* Bison */ 78220681Sjkim#elif defined (YYBYACC) 79220681Sjkim#define ASL_YYTNAME_START 257 /* Berkeley yacc */ 80220681Sjkim#endif 81220681Sjkim 82220681Sjkim 83220681Sjkim/* 84151937Sjkim * Macros 85151937Sjkim */ 86151937Sjkim#define ASL_RESDESC_OFFSET(m) ACPI_OFFSET (AML_RESOURCE, m) 87151937Sjkim#define ASL_PTR_DIFF(a,b) ((UINT8 *)(b) - (UINT8 *)(a)) 88151937Sjkim#define ASL_PTR_ADD(a,b) ((UINT8 *)(a) = ((UINT8 *)(a) + (b))) 89151937Sjkim#define ASL_GET_CHILD_NODE(a) (a)->Asl.Child 90151937Sjkim#define ASL_GET_PEER_NODE(a) (a)->Asl.Next 91151937Sjkim#define OP_TABLE_ENTRY(a,b,c,d) {b,d,a,c} 92151937Sjkim 93151937Sjkim 94151937Sjkim/* Internal AML opcodes */ 95151937Sjkim 96151937Sjkim#define AML_RAW_DATA_BYTE (UINT16) 0xAA01 /* write one raw byte */ 97151937Sjkim#define AML_RAW_DATA_WORD (UINT16) 0xAA02 /* write 2 raw bytes */ 98151937Sjkim#define AML_RAW_DATA_DWORD (UINT16) 0xAA04 /* write 4 raw bytes */ 99151937Sjkim#define AML_RAW_DATA_QWORD (UINT16) 0xAA08 /* write 8 raw bytes */ 100151937Sjkim#define AML_RAW_DATA_BUFFER (UINT16) 0xAA0B /* raw buffer with length */ 101151937Sjkim#define AML_RAW_DATA_CHAIN (UINT16) 0xAA0C /* chain of raw buffers */ 102151937Sjkim#define AML_PACKAGE_LENGTH (UINT16) 0xAA10 103151937Sjkim#define AML_UNASSIGNED_OPCODE (UINT16) 0xEEEE 104151937Sjkim#define AML_DEFAULT_ARG_OP (UINT16) 0xDDDD 105151937Sjkim 106151937Sjkim 107209746Sjkim/* Types for input files */ 108209746Sjkim 109306536Sjkim#define ASL_INPUT_TYPE_BINARY 0 110306536Sjkim#define ASL_INPUT_TYPE_BINARY_ACPI_TABLE 1 111306536Sjkim#define ASL_INPUT_TYPE_ASCII_ASL 2 112306536Sjkim#define ASL_INPUT_TYPE_ASCII_DATA 3 113209746Sjkim 114209746Sjkim 115151937Sjkim/* Misc */ 116151937Sjkim 117151937Sjkim#define ASL_EXTERNAL_METHOD 255 118151937Sjkim#define ASL_ABORT TRUE 119151937Sjkim#define ASL_NO_ABORT FALSE 120220663Sjkim#define ASL_EOF ACPI_UINT32_MAX 121306536Sjkim#define ASL_IGNORE_LINE (ACPI_UINT32_MAX -1) 122151937Sjkim 123151937Sjkim 124249112Sjkim/* Listings */ 125249112Sjkim 126249112Sjkim#define ASL_LISTING_LINE_PREFIX ": " 127249112Sjkim 128249112Sjkim 129151937Sjkim/* Support for reserved method names */ 130151937Sjkim 131151937Sjkim#define ACPI_VALID_RESERVED_NAME_MAX 0x80000000 132151937Sjkim#define ACPI_NOT_RESERVED_NAME ACPI_UINT32_MAX 133151937Sjkim#define ACPI_PREDEFINED_NAME (ACPI_UINT32_MAX - 1) 134151937Sjkim#define ACPI_EVENT_RESERVED_NAME (ACPI_UINT32_MAX - 2) 135151937Sjkim#define ACPI_COMPILER_RESERVED_NAME (ACPI_UINT32_MAX - 3) 136151937Sjkim 137151937Sjkim 138228110Sjkim/* Helper macros for resource tag creation */ 139228110Sjkim 140228110Sjkim#define RsCreateMultiBitField \ 141228110Sjkim RsCreateResourceField 142228110Sjkim 143228110Sjkim#define RsCreateBitField(Op, Name, ByteOffset, BitOffset) \ 144228110Sjkim RsCreateResourceField (Op, Name, ByteOffset, BitOffset, 1) 145228110Sjkim 146228110Sjkim#define RsCreateByteField(Op, Name, ByteOffset) \ 147228110Sjkim RsCreateResourceField (Op, Name, ByteOffset, 0, 8); 148228110Sjkim 149228110Sjkim#define RsCreateWordField(Op, Name, ByteOffset) \ 150228110Sjkim RsCreateResourceField (Op, Name, ByteOffset, 0, 16); 151228110Sjkim 152228110Sjkim#define RsCreateDwordField(Op, Name, ByteOffset) \ 153228110Sjkim RsCreateResourceField (Op, Name, ByteOffset, 0, 32); 154228110Sjkim 155228110Sjkim#define RsCreateQwordField(Op, Name, ByteOffset) \ 156228110Sjkim RsCreateResourceField (Op, Name, ByteOffset, 0, 64); 157228110Sjkim 158306536Sjkim 159306536Sjkim/* 160306536Sjkim * Macros for debug output 161306536Sjkim */ 162306536Sjkim 163306536Sjkim#define DEBUG_MAX_LINE_LENGTH 61 164306536Sjkim#define DEBUG_SPACES_PER_INDENT 3 165306536Sjkim#define DEBUG_FULL_LINE_LENGTH 71 166306536Sjkim 167306536Sjkim#define ASL_PARSE_TREE_FULL_LINE "\n%71.71s" 168306536Sjkim 169306536Sjkim/* Header/Trailer for original parse tree directly from the parser */ 170306536Sjkim 171306536Sjkim#define ASL_PARSE_TREE_HEADER1 \ 172306536Sjkim "%*s Value P_Op Flags Line# End# LogL# EndL#\n", 65, " " 173306536Sjkim 174306536Sjkim#define ASL_PARSE_TREE_DEBUG1 \ 175306536Sjkim " %4.4X %8.8X %5d %5d %5d %5d" 176306536Sjkim 177306536Sjkim/* Header/Trailer for processed parse tree used for AML generation */ 178306536Sjkim 179306536Sjkim#define ASL_PARSE_TREE_HEADER2 \ 180306536Sjkim "%*s NameString Value P_Op A_Op OpLen PByts Len SubLen PSubLen OpPtr"\ 181306536Sjkim " Parent Child Next Flags AcTyp Final Col"\ 182306536Sjkim " Line# End# LogL# EndL#\n", 60, " " 183306536Sjkim 184306536Sjkim#define ASL_PARSE_TREE_DEBUG2 \ 185306536Sjkim " %08X %04X %04X %01X %04X %04X %05X %05X "\ 186306536Sjkim "%08X %08X %08X %08X %08X %08X %04X %02d %5d %5d %5d %5d\n" 187306536Sjkim 188151937Sjkim#endif /* ASLDEFINE.H */ 189