Path: blob/main/sys/contrib/dev/acpica/include/amlcode.h
48287 views
/******************************************************************************1*2* Name: amlcode.h - Definitions for AML, as included in "definition blocks"3* Declarations and definitions contained herein are derived4* directly from the ACPI specification.5*6*****************************************************************************/78/******************************************************************************9*10* 1. Copyright Notice11*12* Some or all of this work - Copyright (c) 1999 - 2025, Intel Corp.13* All rights reserved.14*15* 2. License16*17* 2.1. This is your license from Intel Corp. under its intellectual property18* rights. You may have additional license terms from the party that provided19* you this software, covering your right to use that party's intellectual20* property rights.21*22* 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a23* copy of the source code appearing in this file ("Covered Code") an24* irrevocable, perpetual, worldwide license under Intel's copyrights in the25* base code distributed originally by Intel ("Original Intel Code") to copy,26* make derivatives, distribute, use and display any portion of the Covered27* Code in any form, with the right to sublicense such rights; and28*29* 2.3. Intel grants Licensee a non-exclusive and non-transferable patent30* license (with the right to sublicense), under only those claims of Intel31* patents that are infringed by the Original Intel Code, to make, use, sell,32* offer to sell, and import the Covered Code and derivative works thereof33* solely to the minimum extent necessary to exercise the above copyright34* license, and in no event shall the patent license extend to any additions35* to or modifications of the Original Intel Code. No other license or right36* is granted directly or by implication, estoppel or otherwise;37*38* The above copyright and patent license is granted only if the following39* conditions are met:40*41* 3. Conditions42*43* 3.1. Redistribution of Source with Rights to Further Distribute Source.44* Redistribution of source code of any substantial portion of the Covered45* Code or modification with rights to further distribute source must include46* the above Copyright Notice, the above License, this list of Conditions,47* and the following Disclaimer and Export Compliance provision. In addition,48* Licensee must cause all Covered Code to which Licensee contributes to49* contain a file documenting the changes Licensee made to create that Covered50* Code and the date of any change. Licensee must include in that file the51* documentation of any changes made by any predecessor Licensee. Licensee52* must include a prominent statement that the modification is derived,53* directly or indirectly, from Original Intel Code.54*55* 3.2. Redistribution of Source with no Rights to Further Distribute Source.56* Redistribution of source code of any substantial portion of the Covered57* Code or modification without rights to further distribute source must58* include the following Disclaimer and Export Compliance provision in the59* documentation and/or other materials provided with distribution. In60* addition, Licensee may not authorize further sublicense of source of any61* portion of the Covered Code, and must include terms to the effect that the62* license from Licensee to its licensee is limited to the intellectual63* property embodied in the software Licensee provides to its licensee, and64* not to intellectual property embodied in modifications its licensee may65* make.66*67* 3.3. Redistribution of Executable. Redistribution in executable form of any68* substantial portion of the Covered Code or modification must reproduce the69* above Copyright Notice, and the following Disclaimer and Export Compliance70* provision in the documentation and/or other materials provided with the71* distribution.72*73* 3.4. Intel retains all right, title, and interest in and to the Original74* Intel Code.75*76* 3.5. Neither the name Intel nor any other trademark owned or controlled by77* Intel shall be used in advertising or otherwise to promote the sale, use or78* other dealings in products derived from or relating to the Covered Code79* without prior written authorization from Intel.80*81* 4. Disclaimer and Export Compliance82*83* 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED84* HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE85* IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,86* INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY87* UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY88* IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A89* PARTICULAR PURPOSE.90*91* 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES92* OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR93* COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,94* SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY95* CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL96* HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS97* SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY98* LIMITED REMEDY.99*100* 4.3. Licensee shall not export, either directly or indirectly, any of this101* software or system incorporating such software without first obtaining any102* required license or other approval from the U. S. Department of Commerce or103* any other agency or department of the United States Government. In the104* event Licensee exports any such software from the United States or105* re-exports any such software from a foreign destination, Licensee shall106* ensure that the distribution and export/re-export of the software is in107* compliance with all laws, regulations, orders, or other restrictions of the108* U.S. Export Administration Regulations. Licensee agrees that neither it nor109* any of its subsidiaries will export/re-export any technical data, process,110* software, or service, directly or indirectly, to any country for which the111* United States government or any agency thereof requires an export license,112* other governmental approval, or letter of assurance, without first obtaining113* such license, approval or letter.114*115*****************************************************************************116*117* Alternatively, you may choose to be licensed under the terms of the118* following license:119*120* Redistribution and use in source and binary forms, with or without121* modification, are permitted provided that the following conditions122* are met:123* 1. Redistributions of source code must retain the above copyright124* notice, this list of conditions, and the following disclaimer,125* without modification.126* 2. Redistributions in binary form must reproduce at minimum a disclaimer127* substantially similar to the "NO WARRANTY" disclaimer below128* ("Disclaimer") and any redistribution must be conditioned upon129* including a substantially similar Disclaimer requirement for further130* binary redistribution.131* 3. Neither the names of the above-listed copyright holders nor the names132* of any contributors may be used to endorse or promote products derived133* from this software without specific prior written permission.134*135* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS136* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT137* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR138* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT139* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,140* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT141* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,142* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY143* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT144* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE145* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.146*147* Alternatively, you may choose to be licensed under the terms of the148* GNU General Public License ("GPL") version 2 as published by the Free149* Software Foundation.150*151*****************************************************************************/152153#ifndef __AMLCODE_H__154#define __AMLCODE_H__155156/* primary opcodes */157158#define AML_ZERO_OP (UINT16) 0x00159#define AML_ONE_OP (UINT16) 0x01160#define AML_ALIAS_OP (UINT16) 0x06161#define AML_NAME_OP (UINT16) 0x08162#define AML_BYTE_OP (UINT16) 0x0a163#define AML_WORD_OP (UINT16) 0x0b164#define AML_DWORD_OP (UINT16) 0x0c165#define AML_STRING_OP (UINT16) 0x0d166#define AML_QWORD_OP (UINT16) 0x0e /* ACPI 2.0 */167#define AML_SCOPE_OP (UINT16) 0x10168#define AML_BUFFER_OP (UINT16) 0x11169#define AML_PACKAGE_OP (UINT16) 0x12170#define AML_VARIABLE_PACKAGE_OP (UINT16) 0x13 /* ACPI 2.0 */171#define AML_METHOD_OP (UINT16) 0x14172#define AML_EXTERNAL_OP (UINT16) 0x15 /* ACPI 6.0 */173#define AML_DUAL_NAME_PREFIX (UINT16) 0x2e174#define AML_MULTI_NAME_PREFIX (UINT16) 0x2f175#define AML_EXTENDED_PREFIX (UINT16) 0x5b176#define AML_ROOT_PREFIX (UINT16) 0x5c177#define AML_PARENT_PREFIX (UINT16) 0x5e178#define AML_FIRST_LOCAL_OP (UINT16) 0x60 /* Used for Local op # calculations */179#define AML_LOCAL0 (UINT16) 0x60180#define AML_LOCAL1 (UINT16) 0x61181#define AML_LOCAL2 (UINT16) 0x62182#define AML_LOCAL3 (UINT16) 0x63183#define AML_LOCAL4 (UINT16) 0x64184#define AML_LOCAL5 (UINT16) 0x65185#define AML_LOCAL6 (UINT16) 0x66186#define AML_LOCAL7 (UINT16) 0x67187#define AML_FIRST_ARG_OP (UINT16) 0x68 /* Used for Arg op # calculations */188#define AML_ARG0 (UINT16) 0x68189#define AML_ARG1 (UINT16) 0x69190#define AML_ARG2 (UINT16) 0x6a191#define AML_ARG3 (UINT16) 0x6b192#define AML_ARG4 (UINT16) 0x6c193#define AML_ARG5 (UINT16) 0x6d194#define AML_ARG6 (UINT16) 0x6e195#define AML_STORE_OP (UINT16) 0x70196#define AML_REF_OF_OP (UINT16) 0x71197#define AML_ADD_OP (UINT16) 0x72198#define AML_CONCATENATE_OP (UINT16) 0x73199#define AML_SUBTRACT_OP (UINT16) 0x74200#define AML_INCREMENT_OP (UINT16) 0x75201#define AML_DECREMENT_OP (UINT16) 0x76202#define AML_MULTIPLY_OP (UINT16) 0x77203#define AML_DIVIDE_OP (UINT16) 0x78204#define AML_SHIFT_LEFT_OP (UINT16) 0x79205#define AML_SHIFT_RIGHT_OP (UINT16) 0x7a206#define AML_BIT_AND_OP (UINT16) 0x7b207#define AML_BIT_NAND_OP (UINT16) 0x7c208#define AML_BIT_OR_OP (UINT16) 0x7d209#define AML_BIT_NOR_OP (UINT16) 0x7e210#define AML_BIT_XOR_OP (UINT16) 0x7f211#define AML_BIT_NOT_OP (UINT16) 0x80212#define AML_FIND_SET_LEFT_BIT_OP (UINT16) 0x81213#define AML_FIND_SET_RIGHT_BIT_OP (UINT16) 0x82214#define AML_DEREF_OF_OP (UINT16) 0x83215#define AML_CONCATENATE_TEMPLATE_OP (UINT16) 0x84 /* ACPI 2.0 */216#define AML_MOD_OP (UINT16) 0x85 /* ACPI 2.0 */217#define AML_NOTIFY_OP (UINT16) 0x86218#define AML_SIZE_OF_OP (UINT16) 0x87219#define AML_INDEX_OP (UINT16) 0x88220#define AML_MATCH_OP (UINT16) 0x89221#define AML_CREATE_DWORD_FIELD_OP (UINT16) 0x8a222#define AML_CREATE_WORD_FIELD_OP (UINT16) 0x8b223#define AML_CREATE_BYTE_FIELD_OP (UINT16) 0x8c224#define AML_CREATE_BIT_FIELD_OP (UINT16) 0x8d225#define AML_OBJECT_TYPE_OP (UINT16) 0x8e226#define AML_CREATE_QWORD_FIELD_OP (UINT16) 0x8f /* ACPI 2.0 */227#define AML_LOGICAL_AND_OP (UINT16) 0x90228#define AML_LOGICAL_OR_OP (UINT16) 0x91229#define AML_LOGICAL_NOT_OP (UINT16) 0x92230#define AML_LOGICAL_EQUAL_OP (UINT16) 0x93231#define AML_LOGICAL_GREATER_OP (UINT16) 0x94232#define AML_LOGICAL_LESS_OP (UINT16) 0x95233#define AML_TO_BUFFER_OP (UINT16) 0x96 /* ACPI 2.0 */234#define AML_TO_DECIMAL_STRING_OP (UINT16) 0x97 /* ACPI 2.0 */235#define AML_TO_HEX_STRING_OP (UINT16) 0x98 /* ACPI 2.0 */236#define AML_TO_INTEGER_OP (UINT16) 0x99 /* ACPI 2.0 */237#define AML_TO_STRING_OP (UINT16) 0x9c /* ACPI 2.0 */238#define AML_COPY_OBJECT_OP (UINT16) 0x9d /* ACPI 2.0 */239#define AML_MID_OP (UINT16) 0x9e /* ACPI 2.0 */240#define AML_CONTINUE_OP (UINT16) 0x9f /* ACPI 2.0 */241#define AML_IF_OP (UINT16) 0xa0242#define AML_ELSE_OP (UINT16) 0xa1243#define AML_WHILE_OP (UINT16) 0xa2244#define AML_NOOP_OP (UINT16) 0xa3245#define AML_RETURN_OP (UINT16) 0xa4246#define AML_BREAK_OP (UINT16) 0xa5247#define AML_COMMENT_OP (UINT16) 0xa9248#define AML_BREAKPOINT_OP (UINT16) 0xcc249#define AML_ONES_OP (UINT16) 0xff250251252/*253* Combination opcodes (actually two one-byte opcodes)254* Used by the disassembler and iASL compiler255*/256#define AML_LOGICAL_GREATER_EQUAL_OP (UINT16) 0x9295 /* LNot (LLess) */257#define AML_LOGICAL_LESS_EQUAL_OP (UINT16) 0x9294 /* LNot (LGreater) */258#define AML_LOGICAL_NOT_EQUAL_OP (UINT16) 0x9293 /* LNot (LEqual) */259260261/* Prefixed (2-byte) opcodes (with AML_EXTENDED_PREFIX) */262263#define AML_EXTENDED_OPCODE (UINT16) 0x5b00 /* Prefix for 2-byte opcodes */264265#define AML_MUTEX_OP (UINT16) 0x5b01266#define AML_EVENT_OP (UINT16) 0x5b02267#define AML_SHIFT_RIGHT_BIT_OP (UINT16) 0x5b10 /* Obsolete, not in ACPI spec */268#define AML_SHIFT_LEFT_BIT_OP (UINT16) 0x5b11 /* Obsolete, not in ACPI spec */269#define AML_CONDITIONAL_REF_OF_OP (UINT16) 0x5b12270#define AML_CREATE_FIELD_OP (UINT16) 0x5b13271#define AML_LOAD_TABLE_OP (UINT16) 0x5b1f /* ACPI 2.0 */272#define AML_LOAD_OP (UINT16) 0x5b20273#define AML_STALL_OP (UINT16) 0x5b21274#define AML_SLEEP_OP (UINT16) 0x5b22275#define AML_ACQUIRE_OP (UINT16) 0x5b23276#define AML_SIGNAL_OP (UINT16) 0x5b24277#define AML_WAIT_OP (UINT16) 0x5b25278#define AML_RESET_OP (UINT16) 0x5b26279#define AML_RELEASE_OP (UINT16) 0x5b27280#define AML_FROM_BCD_OP (UINT16) 0x5b28281#define AML_TO_BCD_OP (UINT16) 0x5b29282#define AML_UNLOAD_OP (UINT16) 0x5b2a283#define AML_REVISION_OP (UINT16) 0x5b30284#define AML_DEBUG_OP (UINT16) 0x5b31285#define AML_FATAL_OP (UINT16) 0x5b32286#define AML_TIMER_OP (UINT16) 0x5b33 /* ACPI 3.0 */287#define AML_REGION_OP (UINT16) 0x5b80288#define AML_FIELD_OP (UINT16) 0x5b81289#define AML_DEVICE_OP (UINT16) 0x5b82290#define AML_PROCESSOR_OP (UINT16) 0x5b83291#define AML_POWER_RESOURCE_OP (UINT16) 0x5b84292#define AML_THERMAL_ZONE_OP (UINT16) 0x5b85293#define AML_INDEX_FIELD_OP (UINT16) 0x5b86294#define AML_BANK_FIELD_OP (UINT16) 0x5b87295#define AML_DATA_REGION_OP (UINT16) 0x5b88 /* ACPI 2.0 */296297298/*299* Opcodes for "Field" operators300*/301#define AML_FIELD_OFFSET_OP (UINT8) 0x00302#define AML_FIELD_ACCESS_OP (UINT8) 0x01303#define AML_FIELD_CONNECTION_OP (UINT8) 0x02 /* ACPI 5.0 */304#define AML_FIELD_EXT_ACCESS_OP (UINT8) 0x03 /* ACPI 5.0 */305306307/*308* Internal opcodes309* Use only "Unknown" AML opcodes, don't attempt to use310* any valid ACPI ASCII values (A-Z, 0-9, '-')311*/312#define AML_INT_NAMEPATH_OP (UINT16) 0x002d313#define AML_INT_NAMEDFIELD_OP (UINT16) 0x0030314#define AML_INT_RESERVEDFIELD_OP (UINT16) 0x0031315#define AML_INT_ACCESSFIELD_OP (UINT16) 0x0032316#define AML_INT_BYTELIST_OP (UINT16) 0x0033317#define AML_INT_METHODCALL_OP (UINT16) 0x0035318#define AML_INT_RETURN_VALUE_OP (UINT16) 0x0036319#define AML_INT_EVAL_SUBTREE_OP (UINT16) 0x0037320#define AML_INT_CONNECTION_OP (UINT16) 0x0038321#define AML_INT_EXTACCESSFIELD_OP (UINT16) 0x0039322323#define ARG_NONE 0x0324325/*326* Argument types for the AML Parser327* Each field in the ArgTypes UINT32 is 5 bits, allowing for a maximum of 6 arguments.328* There can be up to 31 unique argument types329* Zero is reserved as end-of-list indicator330*/331#define ARGP_BYTEDATA 0x01332#define ARGP_BYTELIST 0x02333#define ARGP_CHARLIST 0x03334#define ARGP_DATAOBJ 0x04335#define ARGP_DATAOBJLIST 0x05336#define ARGP_DWORDDATA 0x06337#define ARGP_FIELDLIST 0x07338#define ARGP_NAME 0x08339#define ARGP_NAMESTRING 0x09340#define ARGP_OBJLIST 0x0A341#define ARGP_PKGLENGTH 0x0B342#define ARGP_SUPERNAME 0x0C343#define ARGP_TARGET 0x0D344#define ARGP_TERMARG 0x0E345#define ARGP_TERMLIST 0x0F346#define ARGP_WORDDATA 0x10347#define ARGP_QWORDDATA 0x11348#define ARGP_SIMPLENAME 0x12 /* NameString | LocalTerm | ArgTerm */349#define ARGP_NAME_OR_REF 0x13 /* For ObjectType only */350#define ARGP_MAX 0x13351#define ARGP_COMMENT 0x14352353/*354* Resolved argument types for the AML Interpreter355* Each field in the ArgTypes UINT32 is 5 bits, allowing for a maximum of 6 arguments.356* There can be up to 31 unique argument types (0 is end-of-arg-list indicator)357*358* Note1: These values are completely independent from the ACPI_TYPEs359* i.e., ARGI_INTEGER != ACPI_TYPE_INTEGER360*361* Note2: If and when 5 bits becomes insufficient, it would probably be best362* to convert to a 6-byte array of argument types, allowing 8 bits per argument.363*/364365/* Single, simple types */366367#define ARGI_ANYTYPE 0x01 /* Don't care */368#define ARGI_PACKAGE 0x02369#define ARGI_EVENT 0x03370#define ARGI_MUTEX 0x04371#define ARGI_DDBHANDLE 0x05372373/* Interchangeable types (via implicit conversion) */374375#define ARGI_INTEGER 0x06376#define ARGI_STRING 0x07377#define ARGI_BUFFER 0x08378#define ARGI_BUFFER_OR_STRING 0x09 /* Used by MID op only */379#define ARGI_COMPUTEDATA 0x0A /* Buffer, String, or Integer */380381/* Reference objects */382383#define ARGI_INTEGER_REF 0x0B384#define ARGI_OBJECT_REF 0x0C385#define ARGI_DEVICE_REF 0x0D386#define ARGI_REFERENCE 0x0E387#define ARGI_TARGETREF 0x0F /* Target, subject to implicit conversion */388#define ARGI_FIXED_TARGET 0x10 /* Target, no implicit conversion */389#define ARGI_SIMPLE_TARGET 0x11 /* Name, Local, Arg -- no implicit conversion */390#define ARGI_STORE_TARGET 0x12 /* Target for store is TARGETREF + package objects */391392/* Multiple/complex types */393394#define ARGI_DATAOBJECT 0x13 /* Buffer, String, package or reference to a Node - Used only by SizeOf operator*/395#define ARGI_COMPLEXOBJ 0x14 /* Buffer, String, or package (Used by INDEX op only) */396#define ARGI_REF_OR_STRING 0x15 /* Reference or String (Used by DEREFOF op only) */397#define ARGI_REGION_OR_BUFFER 0x16 /* Used by LOAD op only */398#define ARGI_DATAREFOBJ 0x17399400/* Note: types above can expand to 0x1F maximum */401402#define ARGI_INVALID_OPCODE 0xFFFFFFFF403404405/*406* Some of the flags and types below are of the form:407*408* AML_FLAGS_EXEC_#A_#T,#R, or409* AML_TYPE_EXEC_#A_#T,#R where:410*411* #A is the number of required arguments412* #T is the number of target operands413* #R indicates whether there is a return value414*415* These types are used for the top-level dispatch of the AML416* opcode. They group similar operators that can share common417* front-end code before dispatch to the final code that implements418* the operator.419*/420421/*422* Opcode information flags423*/424#define AML_LOGICAL 0x0001425#define AML_LOGICAL_NUMERIC 0x0002426#define AML_MATH 0x0004427#define AML_CREATE 0x0008428#define AML_FIELD 0x0010429#define AML_DEFER 0x0020430#define AML_NAMED 0x0040431#define AML_NSNODE 0x0080432#define AML_NSOPCODE 0x0100433#define AML_NSOBJECT 0x0200434#define AML_HAS_RETVAL 0x0400435#define AML_HAS_TARGET 0x0800436#define AML_HAS_ARGS 0x1000437#define AML_CONSTANT 0x2000438#define AML_NO_OPERAND_RESOLVE 0x4000439440/* Convenient flag groupings of the flags above */441442#define AML_FLAGS_EXEC_0A_0T_1R AML_HAS_RETVAL443#define AML_FLAGS_EXEC_1A_0T_0R AML_HAS_ARGS /* Monadic1 */444#define AML_FLAGS_EXEC_1A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* Monadic2 */445#define AML_FLAGS_EXEC_1A_1T_0R AML_HAS_ARGS | AML_HAS_TARGET446#define AML_FLAGS_EXEC_1A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL /* Monadic2R */447#define AML_FLAGS_EXEC_2A_0T_0R AML_HAS_ARGS /* Dyadic1 */448#define AML_FLAGS_EXEC_2A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* Dyadic2 */449#define AML_FLAGS_EXEC_2A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL /* Dyadic2R */450#define AML_FLAGS_EXEC_2A_2T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL451#define AML_FLAGS_EXEC_3A_0T_0R AML_HAS_ARGS452#define AML_FLAGS_EXEC_3A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL453#define AML_FLAGS_EXEC_6A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL454455456/*457* The opcode Type is used in a dispatch table, do not change458* or add anything new without updating the table.459*/460#define AML_TYPE_EXEC_0A_0T_1R 0x00 /* 0 Args, 0 Target, 1 RetVal */461#define AML_TYPE_EXEC_1A_0T_0R 0x01 /* 1 Args, 0 Target, 0 RetVal */462#define AML_TYPE_EXEC_1A_0T_1R 0x02 /* 1 Args, 0 Target, 1 RetVal */463#define AML_TYPE_EXEC_1A_1T_0R 0x03 /* 1 Args, 1 Target, 0 RetVal */464#define AML_TYPE_EXEC_1A_1T_1R 0x04 /* 1 Args, 1 Target, 1 RetVal */465#define AML_TYPE_EXEC_2A_0T_0R 0x05 /* 2 Args, 0 Target, 0 RetVal */466#define AML_TYPE_EXEC_2A_0T_1R 0x06 /* 2 Args, 0 Target, 1 RetVal */467#define AML_TYPE_EXEC_2A_1T_1R 0x07 /* 2 Args, 1 Target, 1 RetVal */468#define AML_TYPE_EXEC_2A_2T_1R 0x08 /* 2 Args, 2 Target, 1 RetVal */469#define AML_TYPE_EXEC_3A_0T_0R 0x09 /* 3 Args, 0 Target, 0 RetVal */470#define AML_TYPE_EXEC_3A_1T_1R 0x0A /* 3 Args, 1 Target, 1 RetVal */471#define AML_TYPE_EXEC_6A_0T_1R 0x0B /* 6 Args, 0 Target, 1 RetVal */472/* End of types used in dispatch table */473474#define AML_TYPE_LITERAL 0x0C475#define AML_TYPE_CONSTANT 0x0D476#define AML_TYPE_METHOD_ARGUMENT 0x0E477#define AML_TYPE_LOCAL_VARIABLE 0x0F478#define AML_TYPE_DATA_TERM 0x10479480/* Generic for an op that returns a value */481482#define AML_TYPE_METHOD_CALL 0x11483484/* Miscellaneous types */485486#define AML_TYPE_CREATE_FIELD 0x12487#define AML_TYPE_CREATE_OBJECT 0x13488#define AML_TYPE_CONTROL 0x14489#define AML_TYPE_NAMED_NO_OBJ 0x15490#define AML_TYPE_NAMED_FIELD 0x16491#define AML_TYPE_NAMED_SIMPLE 0x17492#define AML_TYPE_NAMED_COMPLEX 0x18493#define AML_TYPE_RETURN 0x19494#define AML_TYPE_UNDEFINED 0x1A495#define AML_TYPE_BOGUS 0x1B496497/* AML Package Length encodings */498499#define ACPI_AML_PACKAGE_TYPE1 0x40500#define ACPI_AML_PACKAGE_TYPE2 0x4000501#define ACPI_AML_PACKAGE_TYPE3 0x400000502#define ACPI_AML_PACKAGE_TYPE4 0x40000000503504/*505* Opcode classes506*/507#define AML_CLASS_EXECUTE 0x00508#define AML_CLASS_CREATE 0x01509#define AML_CLASS_ARGUMENT 0x02510#define AML_CLASS_NAMED_OBJECT 0x03511#define AML_CLASS_CONTROL 0x04512#define AML_CLASS_ASCII 0x05513#define AML_CLASS_PREFIX 0x06514#define AML_CLASS_INTERNAL 0x07515#define AML_CLASS_RETURN_VALUE 0x08516#define AML_CLASS_METHOD_CALL 0x09517#define AML_CLASS_UNKNOWN 0x0A518519520/* Comparison operation codes for MatchOp operator */521522typedef enum523{524MATCH_MTR = 0,525MATCH_MEQ = 1,526MATCH_MLE = 2,527MATCH_MLT = 3,528MATCH_MGE = 4,529MATCH_MGT = 5530531} AML_MATCH_OPERATOR;532533#define MAX_MATCH_OPERATOR 5534535536/*537* FieldFlags538*539* This byte is extracted from the AML and includes three separate540* pieces of information about the field:541* 1) The field access type542* 2) The field update rule543* 3) The lock rule for the field544*545* Bits 00 - 03 : AccessType (AnyAcc, ByteAcc, etc.)546* 04 : LockRule (1 == Lock)547* 05 - 06 : UpdateRule548*/549#define AML_FIELD_ACCESS_TYPE_MASK 0x0F550#define AML_FIELD_LOCK_RULE_MASK 0x10551#define AML_FIELD_UPDATE_RULE_MASK 0x60552553554/* 1) Field Access Types */555556typedef enum557{558AML_FIELD_ACCESS_ANY = 0x00,559AML_FIELD_ACCESS_BYTE = 0x01,560AML_FIELD_ACCESS_WORD = 0x02,561AML_FIELD_ACCESS_DWORD = 0x03,562AML_FIELD_ACCESS_QWORD = 0x04, /* ACPI 2.0 */563AML_FIELD_ACCESS_BUFFER = 0x05 /* ACPI 2.0 */564565} AML_ACCESS_TYPE;566567568/* 2) Field Lock Rules */569570typedef enum571{572AML_FIELD_LOCK_NEVER = 0x00,573AML_FIELD_LOCK_ALWAYS = 0x10574575} AML_LOCK_RULE;576577578/* 3) Field Update Rules */579580typedef enum581{582AML_FIELD_UPDATE_PRESERVE = 0x00,583AML_FIELD_UPDATE_WRITE_AS_ONES = 0x20,584AML_FIELD_UPDATE_WRITE_AS_ZEROS = 0x40585586} AML_UPDATE_RULE;587588589/*590* Field Access Attributes.591* This byte is extracted from the AML via the592* AccessAs keyword593*/594typedef enum595{596AML_FIELD_ATTRIB_QUICK = 0x02,597AML_FIELD_ATTRIB_SEND_RECEIVE = 0x04,598AML_FIELD_ATTRIB_BYTE = 0x06,599AML_FIELD_ATTRIB_WORD = 0x08,600AML_FIELD_ATTRIB_BLOCK = 0x0A,601AML_FIELD_ATTRIB_BYTES = 0x0B,602AML_FIELD_ATTRIB_PROCESS_CALL = 0x0C,603AML_FIELD_ATTRIB_BLOCK_PROCESS_CALL = 0x0D,604AML_FIELD_ATTRIB_RAW_BYTES = 0x0E,605AML_FIELD_ATTRIB_RAW_PROCESS_BYTES = 0x0F606607} AML_ACCESS_ATTRIBUTE;608609610/* Bit fields in the AML MethodFlags byte */611612#define AML_METHOD_ARG_COUNT 0x07613#define AML_METHOD_SERIALIZED 0x08614#define AML_METHOD_SYNC_LEVEL 0xF0615616617#endif /* __AMLCODE_H__ */618619620