1 /******************************************************************************
3 * Module Name: psopcode - Parser/Interpreter opcode information table
5 *****************************************************************************/
7 /******************************************************************************
11 * Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp.
12 * All rights reserved.
16 * 2.1. This is your license from Intel Corp. under its intellectual property
17 * rights. You may have additional license terms from the party that provided
18 * you this software, covering your right to use that party's intellectual
21 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
22 * copy of the source code appearing in this file ("Covered Code") an
23 * irrevocable, perpetual, worldwide license under Intel's copyrights in the
24 * base code distributed originally by Intel ("Original Intel Code") to copy,
25 * make derivatives, distribute, use and display any portion of the Covered
26 * Code in any form, with the right to sublicense such rights; and
28 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
29 * license (with the right to sublicense), under only those claims of Intel
30 * patents that are infringed by the Original Intel Code, to make, use, sell,
31 * offer to sell, and import the Covered Code and derivative works thereof
32 * solely to the minimum extent necessary to exercise the above copyright
33 * license, and in no event shall the patent license extend to any additions
34 * to or modifications of the Original Intel Code. No other license or right
35 * is granted directly or by implication, estoppel or otherwise;
37 * The above copyright and patent license is granted only if the following
42 * 3.1. Redistribution of Source with Rights to Further Distribute Source.
43 * Redistribution of source code of any substantial portion of the Covered
44 * Code or modification with rights to further distribute source must include
45 * the above Copyright Notice, the above License, this list of Conditions,
46 * and the following Disclaimer and Export Compliance provision. In addition,
47 * Licensee must cause all Covered Code to which Licensee contributes to
48 * contain a file documenting the changes Licensee made to create that Covered
49 * Code and the date of any change. Licensee must include in that file the
50 * documentation of any changes made by any predecessor Licensee. Licensee
51 * must include a prominent statement that the modification is derived,
52 * directly or indirectly, from Original Intel Code.
54 * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
55 * Redistribution of source code of any substantial portion of the Covered
56 * Code or modification without rights to further distribute source must
57 * include the following Disclaimer and Export Compliance provision in the
58 * documentation and/or other materials provided with distribution. In
59 * addition, Licensee may not authorize further sublicense of source of any
60 * portion of the Covered Code, and must include terms to the effect that the
61 * license from Licensee to its licensee is limited to the intellectual
62 * property embodied in the software Licensee provides to its licensee, and
63 * not to intellectual property embodied in modifications its licensee may
66 * 3.3. Redistribution of Executable. Redistribution in executable form of any
67 * substantial portion of the Covered Code or modification must reproduce the
68 * above Copyright Notice, and the following Disclaimer and Export Compliance
69 * provision in the documentation and/or other materials provided with the
72 * 3.4. Intel retains all right, title, and interest in and to the Original
75 * 3.5. Neither the name Intel nor any other trademark owned or controlled by
76 * Intel shall be used in advertising or otherwise to promote the sale, use or
77 * other dealings in products derived from or relating to the Covered Code
78 * without prior written authorization from Intel.
80 * 4. Disclaimer and Export Compliance
82 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
83 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
84 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE,
85 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY
86 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY
87 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
90 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
91 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
92 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
93 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
94 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
95 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS
96 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
99 * 4.3. Licensee shall not export, either directly or indirectly, any of this
100 * software or system incorporating such software without first obtaining any
101 * required license or other approval from the U. S. Department of Commerce or
102 * any other agency or department of the United States Government. In the
103 * event Licensee exports any such software from the United States or
104 * re-exports any such software from a foreign destination, Licensee shall
105 * ensure that the distribution and export/re-export of the software is in
106 * compliance with all laws, regulations, orders, or other restrictions of the
107 * U.S. Export Administration Regulations. Licensee agrees that neither it nor
108 * any of its subsidiaries will export/re-export any technical data, process,
109 * software, or service, directly or indirectly, to any country for which the
110 * United States government or any agency thereof requires an export license,
111 * other governmental approval, or letter of assurance, without first obtaining
112 * such license, approval or letter.
114 *****************************************************************************/
118 #include "accommon.h"
119 #include "acparser.h"
120 #include "acopcode.h"
124 #define _COMPONENT ACPI_PARSER
125 ACPI_MODULE_NAME ("psopcode")
128 static const UINT8 AcpiGbl_ArgumentCount
[] = {0,1,1,1,1,2,2,2,2,3,3,6};
131 /*******************************************************************************
133 * NAME: AcpiGbl_AmlOpInfo
135 * DESCRIPTION: Opcode table. Each entry contains <opcode, type, name, operands>
136 * The name is a simple ascii string, the operand specifier is an
137 * ascii string with one letter per operand. The letter specifies
140 ******************************************************************************/
143 * Summary of opcode types/flags
146 Opcodes that have associated namespace objects (AML_NSOBJECT flag)
163 AML_CREATE_BIT_FIELD_OP
164 AML_CREATE_BYTE_FIELD_OP
165 AML_CREATE_WORD_FIELD_OP
166 AML_CREATE_DWORD_FIELD_OP
167 AML_CREATE_QWORD_FIELD_OP
168 AML_INT_NAMEDFIELD_OP
169 AML_INT_METHODCALL_OP
172 Opcodes that are "namespace" opcodes (AML_NSOPCODE flag)
188 AML_INT_NAMEDFIELD_OP
190 Opcodes that have an associated namespace node (AML_NSNODE flag)
204 AML_CREATE_BIT_FIELD_OP
205 AML_CREATE_BYTE_FIELD_OP
206 AML_CREATE_WORD_FIELD_OP
207 AML_CREATE_DWORD_FIELD_OP
208 AML_CREATE_QWORD_FIELD_OP
209 AML_INT_NAMEDFIELD_OP
210 AML_INT_METHODCALL_OP
213 Opcodes that define named ACPI objects (AML_NAMED flag)
226 AML_INT_NAMEDFIELD_OP
228 Opcodes that contain executable AML as part of the definition that
229 must be deferred until needed
234 AML_CREATE_BIT_FIELD_OP
235 AML_CREATE_BYTE_FIELD_OP
236 AML_CREATE_WORD_FIELD_OP
237 AML_CREATE_DWORD_FIELD_OP
238 AML_CREATE_QWORD_FIELD_OP
249 Field "Create" opcodes
252 AML_CREATE_BIT_FIELD_OP
253 AML_CREATE_BYTE_FIELD_OP
254 AML_CREATE_WORD_FIELD_OP
255 AML_CREATE_DWORD_FIELD_OP
256 AML_CREATE_QWORD_FIELD_OP
258 ******************************************************************************/
262 * Master Opcode information table. A summary of everything we know about each
263 * opcode, all in one place.
265 const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo
[AML_NUM_OPCODES
] =
267 /*! [Begin] no source code translation */
268 /* Index Name Parser Args Interpreter Args ObjectType Class Type Flags */
270 /* 00 */ ACPI_OP ("Zero", ARGP_ZERO_OP
, ARGI_ZERO_OP
, ACPI_TYPE_INTEGER
, AML_CLASS_ARGUMENT
, AML_TYPE_CONSTANT
, AML_CONSTANT
),
271 /* 01 */ ACPI_OP ("One", ARGP_ONE_OP
, ARGI_ONE_OP
, ACPI_TYPE_INTEGER
, AML_CLASS_ARGUMENT
, AML_TYPE_CONSTANT
, AML_CONSTANT
),
272 /* 02 */ ACPI_OP ("Alias", ARGP_ALIAS_OP
, ARGI_ALIAS_OP
, ACPI_TYPE_LOCAL_ALIAS
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_SIMPLE
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_NSNODE
| AML_NAMED
),
273 /* 03 */ ACPI_OP ("Name", ARGP_NAME_OP
, ARGI_NAME_OP
, ACPI_TYPE_ANY
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_COMPLEX
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_NSNODE
| AML_NAMED
),
274 /* 04 */ ACPI_OP ("ByteConst", ARGP_BYTE_OP
, ARGI_BYTE_OP
, ACPI_TYPE_INTEGER
, AML_CLASS_ARGUMENT
, AML_TYPE_LITERAL
, AML_CONSTANT
),
275 /* 05 */ ACPI_OP ("WordConst", ARGP_WORD_OP
, ARGI_WORD_OP
, ACPI_TYPE_INTEGER
, AML_CLASS_ARGUMENT
, AML_TYPE_LITERAL
, AML_CONSTANT
),
276 /* 06 */ ACPI_OP ("DwordConst", ARGP_DWORD_OP
, ARGI_DWORD_OP
, ACPI_TYPE_INTEGER
, AML_CLASS_ARGUMENT
, AML_TYPE_LITERAL
, AML_CONSTANT
),
277 /* 07 */ ACPI_OP ("String", ARGP_STRING_OP
, ARGI_STRING_OP
, ACPI_TYPE_STRING
, AML_CLASS_ARGUMENT
, AML_TYPE_LITERAL
, AML_CONSTANT
),
278 /* 08 */ ACPI_OP ("Scope", ARGP_SCOPE_OP
, ARGI_SCOPE_OP
, ACPI_TYPE_LOCAL_SCOPE
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_NO_OBJ
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_NSNODE
| AML_NAMED
),
279 /* 09 */ ACPI_OP ("Buffer", ARGP_BUFFER_OP
, ARGI_BUFFER_OP
, ACPI_TYPE_BUFFER
, AML_CLASS_CREATE
, AML_TYPE_CREATE_OBJECT
, AML_HAS_ARGS
| AML_DEFER
| AML_CONSTANT
),
280 /* 0A */ ACPI_OP ("Package", ARGP_PACKAGE_OP
, ARGI_PACKAGE_OP
, ACPI_TYPE_PACKAGE
, AML_CLASS_CREATE
, AML_TYPE_CREATE_OBJECT
, AML_HAS_ARGS
| AML_DEFER
| AML_CONSTANT
),
281 /* 0B */ ACPI_OP ("Method", ARGP_METHOD_OP
, ARGI_METHOD_OP
, ACPI_TYPE_METHOD
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_COMPLEX
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_NSNODE
| AML_NAMED
| AML_DEFER
),
282 /* 0C */ ACPI_OP ("Local0", ARGP_LOCAL0
, ARGI_LOCAL0
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_LOCAL_VARIABLE
, 0),
283 /* 0D */ ACPI_OP ("Local1", ARGP_LOCAL1
, ARGI_LOCAL1
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_LOCAL_VARIABLE
, 0),
284 /* 0E */ ACPI_OP ("Local2", ARGP_LOCAL2
, ARGI_LOCAL2
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_LOCAL_VARIABLE
, 0),
285 /* 0F */ ACPI_OP ("Local3", ARGP_LOCAL3
, ARGI_LOCAL3
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_LOCAL_VARIABLE
, 0),
286 /* 10 */ ACPI_OP ("Local4", ARGP_LOCAL4
, ARGI_LOCAL4
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_LOCAL_VARIABLE
, 0),
287 /* 11 */ ACPI_OP ("Local5", ARGP_LOCAL5
, ARGI_LOCAL5
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_LOCAL_VARIABLE
, 0),
288 /* 12 */ ACPI_OP ("Local6", ARGP_LOCAL6
, ARGI_LOCAL6
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_LOCAL_VARIABLE
, 0),
289 /* 13 */ ACPI_OP ("Local7", ARGP_LOCAL7
, ARGI_LOCAL7
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_LOCAL_VARIABLE
, 0),
290 /* 14 */ ACPI_OP ("Arg0", ARGP_ARG0
, ARGI_ARG0
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_METHOD_ARGUMENT
, 0),
291 /* 15 */ ACPI_OP ("Arg1", ARGP_ARG1
, ARGI_ARG1
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_METHOD_ARGUMENT
, 0),
292 /* 16 */ ACPI_OP ("Arg2", ARGP_ARG2
, ARGI_ARG2
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_METHOD_ARGUMENT
, 0),
293 /* 17 */ ACPI_OP ("Arg3", ARGP_ARG3
, ARGI_ARG3
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_METHOD_ARGUMENT
, 0),
294 /* 18 */ ACPI_OP ("Arg4", ARGP_ARG4
, ARGI_ARG4
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_METHOD_ARGUMENT
, 0),
295 /* 19 */ ACPI_OP ("Arg5", ARGP_ARG5
, ARGI_ARG5
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_METHOD_ARGUMENT
, 0),
296 /* 1A */ ACPI_OP ("Arg6", ARGP_ARG6
, ARGI_ARG6
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_METHOD_ARGUMENT
, 0),
297 /* 1B */ ACPI_OP ("Store", ARGP_STORE_OP
, ARGI_STORE_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_1T_1R
, AML_FLAGS_EXEC_1A_1T_1R
),
298 /* 1C */ ACPI_OP ("RefOf", ARGP_REF_OF_OP
, ARGI_REF_OF_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_0T_1R
, AML_FLAGS_EXEC_1A_0T_1R
),
299 /* 1D */ ACPI_OP ("Add", ARGP_ADD_OP
, ARGI_ADD_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
| AML_MATH
| AML_CONSTANT
),
300 /* 1E */ ACPI_OP ("Concatenate", ARGP_CONCAT_OP
, ARGI_CONCAT_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
| AML_CONSTANT
),
301 /* 1F */ ACPI_OP ("Subtract", ARGP_SUBTRACT_OP
, ARGI_SUBTRACT_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
| AML_MATH
| AML_CONSTANT
),
302 /* 20 */ ACPI_OP ("Increment", ARGP_INCREMENT_OP
, ARGI_INCREMENT_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_0T_1R
, AML_FLAGS_EXEC_1A_0T_1R
| AML_CONSTANT
),
303 /* 21 */ ACPI_OP ("Decrement", ARGP_DECREMENT_OP
, ARGI_DECREMENT_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_0T_1R
, AML_FLAGS_EXEC_1A_0T_1R
| AML_CONSTANT
),
304 /* 22 */ ACPI_OP ("Multiply", ARGP_MULTIPLY_OP
, ARGI_MULTIPLY_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
| AML_MATH
| AML_CONSTANT
),
305 /* 23 */ ACPI_OP ("Divide", ARGP_DIVIDE_OP
, ARGI_DIVIDE_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_2T_1R
, AML_FLAGS_EXEC_2A_2T_1R
| AML_CONSTANT
),
306 /* 24 */ ACPI_OP ("ShiftLeft", ARGP_SHIFT_LEFT_OP
, ARGI_SHIFT_LEFT_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
| AML_MATH
| AML_CONSTANT
),
307 /* 25 */ ACPI_OP ("ShiftRight", ARGP_SHIFT_RIGHT_OP
, ARGI_SHIFT_RIGHT_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
| AML_MATH
| AML_CONSTANT
),
308 /* 26 */ ACPI_OP ("And", ARGP_BIT_AND_OP
, ARGI_BIT_AND_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
| AML_MATH
| AML_CONSTANT
),
309 /* 27 */ ACPI_OP ("NAnd", ARGP_BIT_NAND_OP
, ARGI_BIT_NAND_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
| AML_MATH
| AML_CONSTANT
),
310 /* 28 */ ACPI_OP ("Or", ARGP_BIT_OR_OP
, ARGI_BIT_OR_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
| AML_MATH
| AML_CONSTANT
),
311 /* 29 */ ACPI_OP ("NOr", ARGP_BIT_NOR_OP
, ARGI_BIT_NOR_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
| AML_MATH
| AML_CONSTANT
),
312 /* 2A */ ACPI_OP ("XOr", ARGP_BIT_XOR_OP
, ARGI_BIT_XOR_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
| AML_MATH
| AML_CONSTANT
),
313 /* 2B */ ACPI_OP ("Not", ARGP_BIT_NOT_OP
, ARGI_BIT_NOT_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_1T_1R
, AML_FLAGS_EXEC_1A_1T_1R
| AML_CONSTANT
),
314 /* 2C */ ACPI_OP ("FindSetLeftBit", ARGP_FIND_SET_LEFT_BIT_OP
, ARGI_FIND_SET_LEFT_BIT_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_1T_1R
, AML_FLAGS_EXEC_1A_1T_1R
| AML_CONSTANT
),
315 /* 2D */ ACPI_OP ("FindSetRightBit", ARGP_FIND_SET_RIGHT_BIT_OP
,ARGI_FIND_SET_RIGHT_BIT_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_1T_1R
, AML_FLAGS_EXEC_1A_1T_1R
| AML_CONSTANT
),
316 /* 2E */ ACPI_OP ("DerefOf", ARGP_DEREF_OF_OP
, ARGI_DEREF_OF_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_0T_1R
, AML_FLAGS_EXEC_1A_0T_1R
),
317 /* 2F */ ACPI_OP ("Notify", ARGP_NOTIFY_OP
, ARGI_NOTIFY_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_0T_0R
, AML_FLAGS_EXEC_2A_0T_0R
),
318 /* 30 */ ACPI_OP ("SizeOf", ARGP_SIZE_OF_OP
, ARGI_SIZE_OF_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_0T_1R
, AML_FLAGS_EXEC_1A_0T_1R
| AML_NO_OPERAND_RESOLVE
),
319 /* 31 */ ACPI_OP ("Index", ARGP_INDEX_OP
, ARGI_INDEX_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
),
320 /* 32 */ ACPI_OP ("Match", ARGP_MATCH_OP
, ARGI_MATCH_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_6A_0T_1R
, AML_FLAGS_EXEC_6A_0T_1R
| AML_CONSTANT
),
321 /* 33 */ ACPI_OP ("CreateDWordField", ARGP_CREATE_DWORD_FIELD_OP
,ARGI_CREATE_DWORD_FIELD_OP
, ACPI_TYPE_BUFFER_FIELD
, AML_CLASS_CREATE
, AML_TYPE_CREATE_FIELD
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSNODE
| AML_DEFER
| AML_CREATE
),
322 /* 34 */ ACPI_OP ("CreateWordField", ARGP_CREATE_WORD_FIELD_OP
, ARGI_CREATE_WORD_FIELD_OP
, ACPI_TYPE_BUFFER_FIELD
, AML_CLASS_CREATE
, AML_TYPE_CREATE_FIELD
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSNODE
| AML_DEFER
| AML_CREATE
),
323 /* 35 */ ACPI_OP ("CreateByteField", ARGP_CREATE_BYTE_FIELD_OP
, ARGI_CREATE_BYTE_FIELD_OP
, ACPI_TYPE_BUFFER_FIELD
, AML_CLASS_CREATE
, AML_TYPE_CREATE_FIELD
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSNODE
| AML_DEFER
| AML_CREATE
),
324 /* 36 */ ACPI_OP ("CreateBitField", ARGP_CREATE_BIT_FIELD_OP
, ARGI_CREATE_BIT_FIELD_OP
, ACPI_TYPE_BUFFER_FIELD
, AML_CLASS_CREATE
, AML_TYPE_CREATE_FIELD
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSNODE
| AML_DEFER
| AML_CREATE
),
325 /* 37 */ ACPI_OP ("ObjectType", ARGP_TYPE_OP
, ARGI_TYPE_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_0T_1R
, AML_FLAGS_EXEC_1A_0T_1R
| AML_NO_OPERAND_RESOLVE
),
326 /* 38 */ ACPI_OP ("LAnd", ARGP_LAND_OP
, ARGI_LAND_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_0T_1R
, AML_FLAGS_EXEC_2A_0T_1R
| AML_LOGICAL_NUMERIC
| AML_CONSTANT
),
327 /* 39 */ ACPI_OP ("LOr", ARGP_LOR_OP
, ARGI_LOR_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_0T_1R
, AML_FLAGS_EXEC_2A_0T_1R
| AML_LOGICAL_NUMERIC
| AML_CONSTANT
),
328 /* 3A */ ACPI_OP ("LNot", ARGP_LNOT_OP
, ARGI_LNOT_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_0T_1R
, AML_FLAGS_EXEC_1A_0T_1R
| AML_CONSTANT
),
329 /* 3B */ ACPI_OP ("LEqual", ARGP_LEQUAL_OP
, ARGI_LEQUAL_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_0T_1R
, AML_FLAGS_EXEC_2A_0T_1R
| AML_LOGICAL
| AML_CONSTANT
),
330 /* 3C */ ACPI_OP ("LGreater", ARGP_LGREATER_OP
, ARGI_LGREATER_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_0T_1R
, AML_FLAGS_EXEC_2A_0T_1R
| AML_LOGICAL
| AML_CONSTANT
),
331 /* 3D */ ACPI_OP ("LLess", ARGP_LLESS_OP
, ARGI_LLESS_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_0T_1R
, AML_FLAGS_EXEC_2A_0T_1R
| AML_LOGICAL
| AML_CONSTANT
),
332 /* 3E */ ACPI_OP ("If", ARGP_IF_OP
, ARGI_IF_OP
, ACPI_TYPE_ANY
, AML_CLASS_CONTROL
, AML_TYPE_CONTROL
, AML_HAS_ARGS
),
333 /* 3F */ ACPI_OP ("Else", ARGP_ELSE_OP
, ARGI_ELSE_OP
, ACPI_TYPE_ANY
, AML_CLASS_CONTROL
, AML_TYPE_CONTROL
, AML_HAS_ARGS
),
334 /* 40 */ ACPI_OP ("While", ARGP_WHILE_OP
, ARGI_WHILE_OP
, ACPI_TYPE_ANY
, AML_CLASS_CONTROL
, AML_TYPE_CONTROL
, AML_HAS_ARGS
),
335 /* 41 */ ACPI_OP ("Noop", ARGP_NOOP_OP
, ARGI_NOOP_OP
, ACPI_TYPE_ANY
, AML_CLASS_CONTROL
, AML_TYPE_CONTROL
, 0),
336 /* 42 */ ACPI_OP ("Return", ARGP_RETURN_OP
, ARGI_RETURN_OP
, ACPI_TYPE_ANY
, AML_CLASS_CONTROL
, AML_TYPE_CONTROL
, AML_HAS_ARGS
),
337 /* 43 */ ACPI_OP ("Break", ARGP_BREAK_OP
, ARGI_BREAK_OP
, ACPI_TYPE_ANY
, AML_CLASS_CONTROL
, AML_TYPE_CONTROL
, 0),
338 /* 44 */ ACPI_OP ("BreakPoint", ARGP_BREAK_POINT_OP
, ARGI_BREAK_POINT_OP
, ACPI_TYPE_ANY
, AML_CLASS_CONTROL
, AML_TYPE_CONTROL
, 0),
339 /* 45 */ ACPI_OP ("Ones", ARGP_ONES_OP
, ARGI_ONES_OP
, ACPI_TYPE_INTEGER
, AML_CLASS_ARGUMENT
, AML_TYPE_CONSTANT
, AML_CONSTANT
),
341 /* Prefixed opcodes (Two-byte opcodes with a prefix op) */
343 /* 46 */ ACPI_OP ("Mutex", ARGP_MUTEX_OP
, ARGI_MUTEX_OP
, ACPI_TYPE_MUTEX
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_SIMPLE
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_NSNODE
| AML_NAMED
),
344 /* 47 */ ACPI_OP ("Event", ARGP_EVENT_OP
, ARGI_EVENT_OP
, ACPI_TYPE_EVENT
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_SIMPLE
, AML_NSOBJECT
| AML_NSOPCODE
| AML_NSNODE
| AML_NAMED
),
345 /* 48 */ ACPI_OP ("CondRefOf", ARGP_COND_REF_OF_OP
, ARGI_COND_REF_OF_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_1T_1R
, AML_FLAGS_EXEC_1A_1T_1R
),
346 /* 49 */ ACPI_OP ("CreateField", ARGP_CREATE_FIELD_OP
, ARGI_CREATE_FIELD_OP
, ACPI_TYPE_BUFFER_FIELD
, AML_CLASS_CREATE
, AML_TYPE_CREATE_FIELD
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSNODE
| AML_DEFER
| AML_FIELD
| AML_CREATE
),
347 /* 4A */ ACPI_OP ("Load", ARGP_LOAD_OP
, ARGI_LOAD_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_1T_0R
, AML_FLAGS_EXEC_1A_1T_0R
),
348 /* 4B */ ACPI_OP ("Stall", ARGP_STALL_OP
, ARGI_STALL_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_0T_0R
, AML_FLAGS_EXEC_1A_0T_0R
),
349 /* 4C */ ACPI_OP ("Sleep", ARGP_SLEEP_OP
, ARGI_SLEEP_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_0T_0R
, AML_FLAGS_EXEC_1A_0T_0R
),
350 /* 4D */ ACPI_OP ("Acquire", ARGP_ACQUIRE_OP
, ARGI_ACQUIRE_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_0T_1R
, AML_FLAGS_EXEC_2A_0T_1R
),
351 /* 4E */ ACPI_OP ("Signal", ARGP_SIGNAL_OP
, ARGI_SIGNAL_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_0T_0R
, AML_FLAGS_EXEC_1A_0T_0R
),
352 /* 4F */ ACPI_OP ("Wait", ARGP_WAIT_OP
, ARGI_WAIT_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_0T_1R
, AML_FLAGS_EXEC_2A_0T_1R
),
353 /* 50 */ ACPI_OP ("Reset", ARGP_RESET_OP
, ARGI_RESET_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_0T_0R
, AML_FLAGS_EXEC_1A_0T_0R
),
354 /* 51 */ ACPI_OP ("Release", ARGP_RELEASE_OP
, ARGI_RELEASE_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_0T_0R
, AML_FLAGS_EXEC_1A_0T_0R
),
355 /* 52 */ ACPI_OP ("FromBCD", ARGP_FROM_BCD_OP
, ARGI_FROM_BCD_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_1T_1R
, AML_FLAGS_EXEC_1A_1T_1R
| AML_CONSTANT
),
356 /* 53 */ ACPI_OP ("ToBCD", ARGP_TO_BCD_OP
, ARGI_TO_BCD_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_1T_1R
, AML_FLAGS_EXEC_1A_1T_1R
| AML_CONSTANT
),
357 /* 54 */ ACPI_OP ("Unload", ARGP_UNLOAD_OP
, ARGI_UNLOAD_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_0T_0R
, AML_FLAGS_EXEC_1A_0T_0R
),
358 /* 55 */ ACPI_OP ("Revision", ARGP_REVISION_OP
, ARGI_REVISION_OP
, ACPI_TYPE_INTEGER
, AML_CLASS_ARGUMENT
, AML_TYPE_CONSTANT
, 0),
359 /* 56 */ ACPI_OP ("Debug", ARGP_DEBUG_OP
, ARGI_DEBUG_OP
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_CONSTANT
, 0),
360 /* 57 */ ACPI_OP ("Fatal", ARGP_FATAL_OP
, ARGI_FATAL_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_3A_0T_0R
, AML_FLAGS_EXEC_3A_0T_0R
),
361 /* 58 */ ACPI_OP ("OperationRegion", ARGP_REGION_OP
, ARGI_REGION_OP
, ACPI_TYPE_REGION
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_COMPLEX
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_NSNODE
| AML_NAMED
| AML_DEFER
),
362 /* 59 */ ACPI_OP ("Field", ARGP_FIELD_OP
, ARGI_FIELD_OP
, ACPI_TYPE_ANY
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_FIELD
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_FIELD
),
363 /* 5A */ ACPI_OP ("Device", ARGP_DEVICE_OP
, ARGI_DEVICE_OP
, ACPI_TYPE_DEVICE
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_NO_OBJ
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_NSNODE
| AML_NAMED
),
364 /* 5B */ ACPI_OP ("Processor", ARGP_PROCESSOR_OP
, ARGI_PROCESSOR_OP
, ACPI_TYPE_PROCESSOR
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_SIMPLE
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_NSNODE
| AML_NAMED
),
365 /* 5C */ ACPI_OP ("PowerResource", ARGP_POWER_RES_OP
, ARGI_POWER_RES_OP
, ACPI_TYPE_POWER
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_SIMPLE
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_NSNODE
| AML_NAMED
),
366 /* 5D */ ACPI_OP ("ThermalZone", ARGP_THERMAL_ZONE_OP
, ARGI_THERMAL_ZONE_OP
, ACPI_TYPE_THERMAL
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_NO_OBJ
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_NSNODE
| AML_NAMED
),
367 /* 5E */ ACPI_OP ("IndexField", ARGP_INDEX_FIELD_OP
, ARGI_INDEX_FIELD_OP
, ACPI_TYPE_ANY
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_FIELD
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_FIELD
),
368 /* 5F */ ACPI_OP ("BankField", ARGP_BANK_FIELD_OP
, ARGI_BANK_FIELD_OP
, ACPI_TYPE_LOCAL_BANK_FIELD
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_FIELD
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_FIELD
| AML_DEFER
),
370 /* Internal opcodes that map to invalid AML opcodes */
372 /* 60 */ ACPI_OP ("LNotEqual", ARGP_LNOTEQUAL_OP
, ARGI_LNOTEQUAL_OP
, ACPI_TYPE_ANY
, AML_CLASS_INTERNAL
, AML_TYPE_BOGUS
, AML_HAS_ARGS
| AML_CONSTANT
),
373 /* 61 */ ACPI_OP ("LLessEqual", ARGP_LLESSEQUAL_OP
, ARGI_LLESSEQUAL_OP
, ACPI_TYPE_ANY
, AML_CLASS_INTERNAL
, AML_TYPE_BOGUS
, AML_HAS_ARGS
| AML_CONSTANT
),
374 /* 62 */ ACPI_OP ("LGreaterEqual", ARGP_LGREATEREQUAL_OP
, ARGI_LGREATEREQUAL_OP
, ACPI_TYPE_ANY
, AML_CLASS_INTERNAL
, AML_TYPE_BOGUS
, AML_HAS_ARGS
| AML_CONSTANT
),
375 /* 63 */ ACPI_OP ("-NamePath-", ARGP_NAMEPATH_OP
, ARGI_NAMEPATH_OP
, ACPI_TYPE_LOCAL_REFERENCE
, AML_CLASS_ARGUMENT
, AML_TYPE_LITERAL
, AML_NSOBJECT
| AML_NSNODE
),
376 /* 64 */ ACPI_OP ("-MethodCall-", ARGP_METHODCALL_OP
, ARGI_METHODCALL_OP
, ACPI_TYPE_METHOD
, AML_CLASS_METHOD_CALL
, AML_TYPE_METHOD_CALL
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSNODE
),
377 /* 65 */ ACPI_OP ("-ByteList-", ARGP_BYTELIST_OP
, ARGI_BYTELIST_OP
, ACPI_TYPE_ANY
, AML_CLASS_ARGUMENT
, AML_TYPE_LITERAL
, 0),
378 /* 66 */ ACPI_OP ("-ReservedField-", ARGP_RESERVEDFIELD_OP
, ARGI_RESERVEDFIELD_OP
, ACPI_TYPE_ANY
, AML_CLASS_INTERNAL
, AML_TYPE_BOGUS
, 0),
379 /* 67 */ ACPI_OP ("-NamedField-", ARGP_NAMEDFIELD_OP
, ARGI_NAMEDFIELD_OP
, ACPI_TYPE_ANY
, AML_CLASS_INTERNAL
, AML_TYPE_BOGUS
, AML_NSOBJECT
| AML_NSOPCODE
| AML_NSNODE
| AML_NAMED
),
380 /* 68 */ ACPI_OP ("-AccessField-", ARGP_ACCESSFIELD_OP
, ARGI_ACCESSFIELD_OP
, ACPI_TYPE_ANY
, AML_CLASS_INTERNAL
, AML_TYPE_BOGUS
, 0),
381 /* 69 */ ACPI_OP ("-StaticString", ARGP_STATICSTRING_OP
, ARGI_STATICSTRING_OP
, ACPI_TYPE_ANY
, AML_CLASS_INTERNAL
, AML_TYPE_BOGUS
, 0),
382 /* 6A */ ACPI_OP ("-Return Value-", ARG_NONE
, ARG_NONE
, ACPI_TYPE_ANY
, AML_CLASS_RETURN_VALUE
, AML_TYPE_RETURN
, AML_HAS_ARGS
| AML_HAS_RETVAL
),
383 /* 6B */ ACPI_OP ("-UNKNOWN_OP-", ARG_NONE
, ARG_NONE
, ACPI_TYPE_INVALID
, AML_CLASS_UNKNOWN
, AML_TYPE_BOGUS
, AML_HAS_ARGS
),
384 /* 6C */ ACPI_OP ("-ASCII_ONLY-", ARG_NONE
, ARG_NONE
, ACPI_TYPE_ANY
, AML_CLASS_ASCII
, AML_TYPE_BOGUS
, AML_HAS_ARGS
),
385 /* 6D */ ACPI_OP ("-PREFIX_ONLY-", ARG_NONE
, ARG_NONE
, ACPI_TYPE_ANY
, AML_CLASS_PREFIX
, AML_TYPE_BOGUS
, AML_HAS_ARGS
),
387 /* ACPI 2.0 opcodes */
389 /* 6E */ ACPI_OP ("QwordConst", ARGP_QWORD_OP
, ARGI_QWORD_OP
, ACPI_TYPE_INTEGER
, AML_CLASS_ARGUMENT
, AML_TYPE_LITERAL
, AML_CONSTANT
),
390 /* 6F */ ACPI_OP ("Package", /* Var */ ARGP_VAR_PACKAGE_OP
, ARGI_VAR_PACKAGE_OP
, ACPI_TYPE_PACKAGE
, AML_CLASS_CREATE
, AML_TYPE_CREATE_OBJECT
, AML_HAS_ARGS
| AML_DEFER
),
391 /* 70 */ ACPI_OP ("ConcatenateResTemplate", ARGP_CONCAT_RES_OP
, ARGI_CONCAT_RES_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
| AML_CONSTANT
),
392 /* 71 */ ACPI_OP ("Mod", ARGP_MOD_OP
, ARGI_MOD_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
| AML_CONSTANT
),
393 /* 72 */ ACPI_OP ("CreateQWordField", ARGP_CREATE_QWORD_FIELD_OP
,ARGI_CREATE_QWORD_FIELD_OP
, ACPI_TYPE_BUFFER_FIELD
, AML_CLASS_CREATE
, AML_TYPE_CREATE_FIELD
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSNODE
| AML_DEFER
| AML_CREATE
),
394 /* 73 */ ACPI_OP ("ToBuffer", ARGP_TO_BUFFER_OP
, ARGI_TO_BUFFER_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_1T_1R
, AML_FLAGS_EXEC_1A_1T_1R
| AML_CONSTANT
),
395 /* 74 */ ACPI_OP ("ToDecimalString", ARGP_TO_DEC_STR_OP
, ARGI_TO_DEC_STR_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_1T_1R
, AML_FLAGS_EXEC_1A_1T_1R
| AML_CONSTANT
),
396 /* 75 */ ACPI_OP ("ToHexString", ARGP_TO_HEX_STR_OP
, ARGI_TO_HEX_STR_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_1T_1R
, AML_FLAGS_EXEC_1A_1T_1R
| AML_CONSTANT
),
397 /* 76 */ ACPI_OP ("ToInteger", ARGP_TO_INTEGER_OP
, ARGI_TO_INTEGER_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_1T_1R
, AML_FLAGS_EXEC_1A_1T_1R
| AML_CONSTANT
),
398 /* 77 */ ACPI_OP ("ToString", ARGP_TO_STRING_OP
, ARGI_TO_STRING_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_2A_1T_1R
, AML_FLAGS_EXEC_2A_1T_1R
| AML_CONSTANT
),
399 /* 78 */ ACPI_OP ("CopyObject", ARGP_COPY_OP
, ARGI_COPY_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_1A_1T_1R
, AML_FLAGS_EXEC_1A_1T_1R
),
400 /* 79 */ ACPI_OP ("Mid", ARGP_MID_OP
, ARGI_MID_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_3A_1T_1R
, AML_FLAGS_EXEC_3A_1T_1R
| AML_CONSTANT
),
401 /* 7A */ ACPI_OP ("Continue", ARGP_CONTINUE_OP
, ARGI_CONTINUE_OP
, ACPI_TYPE_ANY
, AML_CLASS_CONTROL
, AML_TYPE_CONTROL
, 0),
402 /* 7B */ ACPI_OP ("LoadTable", ARGP_LOAD_TABLE_OP
, ARGI_LOAD_TABLE_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_6A_0T_1R
, AML_FLAGS_EXEC_6A_0T_1R
),
403 /* 7C */ ACPI_OP ("DataTableRegion", ARGP_DATA_REGION_OP
, ARGI_DATA_REGION_OP
, ACPI_TYPE_REGION
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_COMPLEX
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_NSNODE
| AML_NAMED
| AML_DEFER
),
404 /* 7D */ ACPI_OP ("[EvalSubTree]", ARGP_SCOPE_OP
, ARGI_SCOPE_OP
, ACPI_TYPE_ANY
, AML_CLASS_NAMED_OBJECT
, AML_TYPE_NAMED_NO_OBJ
, AML_HAS_ARGS
| AML_NSOBJECT
| AML_NSOPCODE
| AML_NSNODE
),
406 /* ACPI 3.0 opcodes */
408 /* 7E */ ACPI_OP ("Timer", ARGP_TIMER_OP
, ARGI_TIMER_OP
, ACPI_TYPE_ANY
, AML_CLASS_EXECUTE
, AML_TYPE_EXEC_0A_0T_1R
, AML_FLAGS_EXEC_0A_0T_1R
)
410 /*! [End] no source code translation !*/
414 * This table is directly indexed by the opcodes, and returns an
415 * index into the table above
417 static const UINT8 AcpiGbl_ShortOpIndex
[256] =
419 /* 0 1 2 3 4 5 6 7 */
420 /* 8 9 A B C D E F */
421 /* 0x00 */ 0x00, 0x01, _UNK
, _UNK
, _UNK
, _UNK
, 0x02, _UNK
,
422 /* 0x08 */ 0x03, _UNK
, 0x04, 0x05, 0x06, 0x07, 0x6E, _UNK
,
423 /* 0x10 */ 0x08, 0x09, 0x0a, 0x6F, 0x0b, _UNK
, _UNK
, _UNK
,
424 /* 0x18 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
425 /* 0x20 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
426 /* 0x28 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, 0x63, _PFX
, _PFX
,
427 /* 0x30 */ 0x67, 0x66, 0x68, 0x65, 0x69, 0x64, 0x6A, 0x7D,
428 /* 0x38 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
429 /* 0x40 */ _UNK
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
,
430 /* 0x48 */ _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
,
431 /* 0x50 */ _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
,
432 /* 0x58 */ _ASC
, _ASC
, _ASC
, _UNK
, _PFX
, _UNK
, _PFX
, _ASC
,
433 /* 0x60 */ 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13,
434 /* 0x68 */ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, _UNK
,
435 /* 0x70 */ 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
436 /* 0x78 */ 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a,
437 /* 0x80 */ 0x2b, 0x2c, 0x2d, 0x2e, 0x70, 0x71, 0x2f, 0x30,
438 /* 0x88 */ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x72,
439 /* 0x90 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x73, 0x74,
440 /* 0x98 */ 0x75, 0x76, _UNK
, _UNK
, 0x77, 0x78, 0x79, 0x7A,
441 /* 0xA0 */ 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x60, 0x61,
442 /* 0xA8 */ 0x62, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
443 /* 0xB0 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
444 /* 0xB8 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
445 /* 0xC0 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
446 /* 0xC8 */ _UNK
, _UNK
, _UNK
, _UNK
, 0x44, _UNK
, _UNK
, _UNK
,
447 /* 0xD0 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
448 /* 0xD8 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
449 /* 0xE0 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
450 /* 0xE8 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
451 /* 0xF0 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
452 /* 0xF8 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, 0x45,
456 * This table is indexed by the second opcode of the extended opcode
457 * pair. It returns an index into the opcode table (AcpiGbl_AmlOpInfo)
459 static const UINT8 AcpiGbl_LongOpIndex
[NUM_EXTENDED_OPCODE
] =
461 /* 0 1 2 3 4 5 6 7 */
462 /* 8 9 A B C D E F */
463 /* 0x00 */ _UNK
, 0x46, 0x47, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
464 /* 0x08 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
465 /* 0x10 */ _UNK
, _UNK
, 0x48, 0x49, _UNK
, _UNK
, _UNK
, _UNK
,
466 /* 0x18 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, 0x7B,
467 /* 0x20 */ 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51,
468 /* 0x28 */ 0x52, 0x53, 0x54, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
469 /* 0x30 */ 0x55, 0x56, 0x57, 0x7e, _UNK
, _UNK
, _UNK
, _UNK
,
470 /* 0x38 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
471 /* 0x40 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
472 /* 0x48 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
473 /* 0x50 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
474 /* 0x58 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
475 /* 0x60 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
476 /* 0x68 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
477 /* 0x70 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
478 /* 0x78 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
479 /* 0x80 */ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
484 /*******************************************************************************
486 * FUNCTION: AcpiPsGetOpcodeInfo
488 * PARAMETERS: Opcode - The AML opcode
490 * RETURN: A pointer to the info about the opcode.
492 * DESCRIPTION: Find AML opcode description based on the opcode.
493 * NOTE: This procedure must ALWAYS return a valid pointer!
495 ******************************************************************************/
497 const ACPI_OPCODE_INFO
*
498 AcpiPsGetOpcodeInfo (
501 ACPI_FUNCTION_NAME (PsGetOpcodeInfo
);
505 * Detect normal 8-bit opcode or extended 16-bit opcode
507 if (!(Opcode
& 0xFF00))
509 /* Simple (8-bit) opcode: 0-255, can't index beyond table */
511 return (&AcpiGbl_AmlOpInfo
[AcpiGbl_ShortOpIndex
[(UINT8
) Opcode
]]);
514 if (((Opcode
& 0xFF00) == AML_EXTENDED_OPCODE
) &&
515 (((UINT8
) Opcode
) <= MAX_EXTENDED_OPCODE
))
517 /* Valid extended (16-bit) opcode */
519 return (&AcpiGbl_AmlOpInfo
[AcpiGbl_LongOpIndex
[(UINT8
) Opcode
]]);
522 /* Unknown AML opcode */
524 ACPI_DEBUG_PRINT ((ACPI_DB_EXEC
,
525 "Unknown AML opcode [%4.4X]\n", Opcode
));
527 return (&AcpiGbl_AmlOpInfo
[_UNK
]);
531 /*******************************************************************************
533 * FUNCTION: AcpiPsGetOpcodeName
535 * PARAMETERS: Opcode - The AML opcode
537 * RETURN: A pointer to the name of the opcode (ASCII String)
538 * Note: Never returns NULL.
540 * DESCRIPTION: Translate an opcode into a human-readable string
542 ******************************************************************************/
545 AcpiPsGetOpcodeName (
548 #if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUG_OUTPUT)
550 const ACPI_OPCODE_INFO
*Op
;
553 Op
= AcpiPsGetOpcodeInfo (Opcode
);
555 /* Always guaranteed to return a valid pointer */
560 return ("OpcodeName unavailable");
566 /*******************************************************************************
568 * FUNCTION: AcpiPsGetArgumentCount
570 * PARAMETERS: OpType - Type associated with the AML opcode
572 * RETURN: Argument count
574 * DESCRIPTION: Obtain the number of expected arguments for an AML opcode
576 ******************************************************************************/
579 AcpiPsGetArgumentCount (
583 if (OpType
<= AML_TYPE_EXEC_6A_0T_1R
)
585 return (AcpiGbl_ArgumentCount
[OpType
]);