psopcode.c revision 1.3.4.2 1 1.3.4.2 rmind /******************************************************************************
2 1.3.4.2 rmind *
3 1.3.4.2 rmind * Module Name: psopcode - Parser/Interpreter opcode information table
4 1.3.4.2 rmind *
5 1.3.4.2 rmind *****************************************************************************/
6 1.3.4.2 rmind
7 1.3.4.2 rmind /*
8 1.3.4.2 rmind * Copyright (C) 2000 - 2011, Intel Corp.
9 1.3.4.2 rmind * All rights reserved.
10 1.3.4.2 rmind *
11 1.3.4.2 rmind * Redistribution and use in source and binary forms, with or without
12 1.3.4.2 rmind * modification, are permitted provided that the following conditions
13 1.3.4.2 rmind * are met:
14 1.3.4.2 rmind * 1. Redistributions of source code must retain the above copyright
15 1.3.4.2 rmind * notice, this list of conditions, and the following disclaimer,
16 1.3.4.2 rmind * without modification.
17 1.3.4.2 rmind * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18 1.3.4.2 rmind * substantially similar to the "NO WARRANTY" disclaimer below
19 1.3.4.2 rmind * ("Disclaimer") and any redistribution must be conditioned upon
20 1.3.4.2 rmind * including a substantially similar Disclaimer requirement for further
21 1.3.4.2 rmind * binary redistribution.
22 1.3.4.2 rmind * 3. Neither the names of the above-listed copyright holders nor the names
23 1.3.4.2 rmind * of any contributors may be used to endorse or promote products derived
24 1.3.4.2 rmind * from this software without specific prior written permission.
25 1.3.4.2 rmind *
26 1.3.4.2 rmind * Alternatively, this software may be distributed under the terms of the
27 1.3.4.2 rmind * GNU General Public License ("GPL") version 2 as published by the Free
28 1.3.4.2 rmind * Software Foundation.
29 1.3.4.2 rmind *
30 1.3.4.2 rmind * NO WARRANTY
31 1.3.4.2 rmind * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 1.3.4.2 rmind * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 1.3.4.2 rmind * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 1.3.4.2 rmind * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 1.3.4.2 rmind * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 1.3.4.2 rmind * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 1.3.4.2 rmind * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 1.3.4.2 rmind * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 1.3.4.2 rmind * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 1.3.4.2 rmind * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 1.3.4.2 rmind * POSSIBILITY OF SUCH DAMAGES.
42 1.3.4.2 rmind */
43 1.3.4.2 rmind
44 1.3.4.2 rmind
45 1.3.4.2 rmind #include "acpi.h"
46 1.3.4.2 rmind #include "accommon.h"
47 1.3.4.2 rmind #include "acparser.h"
48 1.3.4.2 rmind #include "acopcode.h"
49 1.3.4.2 rmind #include "amlcode.h"
50 1.3.4.2 rmind
51 1.3.4.2 rmind
52 1.3.4.2 rmind #define _COMPONENT ACPI_PARSER
53 1.3.4.2 rmind ACPI_MODULE_NAME ("psopcode")
54 1.3.4.2 rmind
55 1.3.4.2 rmind
56 1.3.4.2 rmind static const UINT8 AcpiGbl_ArgumentCount[] = {0,1,1,1,1,2,2,2,2,3,3,6};
57 1.3.4.2 rmind
58 1.3.4.2 rmind
59 1.3.4.2 rmind /*******************************************************************************
60 1.3.4.2 rmind *
61 1.3.4.2 rmind * NAME: AcpiGbl_AmlOpInfo
62 1.3.4.2 rmind *
63 1.3.4.2 rmind * DESCRIPTION: Opcode table. Each entry contains <opcode, type, name, operands>
64 1.3.4.2 rmind * The name is a simple ascii string, the operand specifier is an
65 1.3.4.2 rmind * ascii string with one letter per operand. The letter specifies
66 1.3.4.2 rmind * the operand type.
67 1.3.4.2 rmind *
68 1.3.4.2 rmind ******************************************************************************/
69 1.3.4.2 rmind
70 1.3.4.2 rmind /*
71 1.3.4.2 rmind * Summary of opcode types/flags
72 1.3.4.2 rmind *
73 1.3.4.2 rmind
74 1.3.4.2 rmind Opcodes that have associated namespace objects (AML_NSOBJECT flag)
75 1.3.4.2 rmind
76 1.3.4.2 rmind AML_SCOPE_OP
77 1.3.4.2 rmind AML_DEVICE_OP
78 1.3.4.2 rmind AML_THERMAL_ZONE_OP
79 1.3.4.2 rmind AML_METHOD_OP
80 1.3.4.2 rmind AML_POWER_RES_OP
81 1.3.4.2 rmind AML_PROCESSOR_OP
82 1.3.4.2 rmind AML_FIELD_OP
83 1.3.4.2 rmind AML_INDEX_FIELD_OP
84 1.3.4.2 rmind AML_BANK_FIELD_OP
85 1.3.4.2 rmind AML_NAME_OP
86 1.3.4.2 rmind AML_ALIAS_OP
87 1.3.4.2 rmind AML_MUTEX_OP
88 1.3.4.2 rmind AML_EVENT_OP
89 1.3.4.2 rmind AML_REGION_OP
90 1.3.4.2 rmind AML_CREATE_FIELD_OP
91 1.3.4.2 rmind AML_CREATE_BIT_FIELD_OP
92 1.3.4.2 rmind AML_CREATE_BYTE_FIELD_OP
93 1.3.4.2 rmind AML_CREATE_WORD_FIELD_OP
94 1.3.4.2 rmind AML_CREATE_DWORD_FIELD_OP
95 1.3.4.2 rmind AML_CREATE_QWORD_FIELD_OP
96 1.3.4.2 rmind AML_INT_NAMEDFIELD_OP
97 1.3.4.2 rmind AML_INT_METHODCALL_OP
98 1.3.4.2 rmind AML_INT_NAMEPATH_OP
99 1.3.4.2 rmind
100 1.3.4.2 rmind Opcodes that are "namespace" opcodes (AML_NSOPCODE flag)
101 1.3.4.2 rmind
102 1.3.4.2 rmind AML_SCOPE_OP
103 1.3.4.2 rmind AML_DEVICE_OP
104 1.3.4.2 rmind AML_THERMAL_ZONE_OP
105 1.3.4.2 rmind AML_METHOD_OP
106 1.3.4.2 rmind AML_POWER_RES_OP
107 1.3.4.2 rmind AML_PROCESSOR_OP
108 1.3.4.2 rmind AML_FIELD_OP
109 1.3.4.2 rmind AML_INDEX_FIELD_OP
110 1.3.4.2 rmind AML_BANK_FIELD_OP
111 1.3.4.2 rmind AML_NAME_OP
112 1.3.4.2 rmind AML_ALIAS_OP
113 1.3.4.2 rmind AML_MUTEX_OP
114 1.3.4.2 rmind AML_EVENT_OP
115 1.3.4.2 rmind AML_REGION_OP
116 1.3.4.2 rmind AML_INT_NAMEDFIELD_OP
117 1.3.4.2 rmind
118 1.3.4.2 rmind Opcodes that have an associated namespace node (AML_NSNODE flag)
119 1.3.4.2 rmind
120 1.3.4.2 rmind AML_SCOPE_OP
121 1.3.4.2 rmind AML_DEVICE_OP
122 1.3.4.2 rmind AML_THERMAL_ZONE_OP
123 1.3.4.2 rmind AML_METHOD_OP
124 1.3.4.2 rmind AML_POWER_RES_OP
125 1.3.4.2 rmind AML_PROCESSOR_OP
126 1.3.4.2 rmind AML_NAME_OP
127 1.3.4.2 rmind AML_ALIAS_OP
128 1.3.4.2 rmind AML_MUTEX_OP
129 1.3.4.2 rmind AML_EVENT_OP
130 1.3.4.2 rmind AML_REGION_OP
131 1.3.4.2 rmind AML_CREATE_FIELD_OP
132 1.3.4.2 rmind AML_CREATE_BIT_FIELD_OP
133 1.3.4.2 rmind AML_CREATE_BYTE_FIELD_OP
134 1.3.4.2 rmind AML_CREATE_WORD_FIELD_OP
135 1.3.4.2 rmind AML_CREATE_DWORD_FIELD_OP
136 1.3.4.2 rmind AML_CREATE_QWORD_FIELD_OP
137 1.3.4.2 rmind AML_INT_NAMEDFIELD_OP
138 1.3.4.2 rmind AML_INT_METHODCALL_OP
139 1.3.4.2 rmind AML_INT_NAMEPATH_OP
140 1.3.4.2 rmind
141 1.3.4.2 rmind Opcodes that define named ACPI objects (AML_NAMED flag)
142 1.3.4.2 rmind
143 1.3.4.2 rmind AML_SCOPE_OP
144 1.3.4.2 rmind AML_DEVICE_OP
145 1.3.4.2 rmind AML_THERMAL_ZONE_OP
146 1.3.4.2 rmind AML_METHOD_OP
147 1.3.4.2 rmind AML_POWER_RES_OP
148 1.3.4.2 rmind AML_PROCESSOR_OP
149 1.3.4.2 rmind AML_NAME_OP
150 1.3.4.2 rmind AML_ALIAS_OP
151 1.3.4.2 rmind AML_MUTEX_OP
152 1.3.4.2 rmind AML_EVENT_OP
153 1.3.4.2 rmind AML_REGION_OP
154 1.3.4.2 rmind AML_INT_NAMEDFIELD_OP
155 1.3.4.2 rmind
156 1.3.4.2 rmind Opcodes that contain executable AML as part of the definition that
157 1.3.4.2 rmind must be deferred until needed
158 1.3.4.2 rmind
159 1.3.4.2 rmind AML_METHOD_OP
160 1.3.4.2 rmind AML_VAR_PACKAGE_OP
161 1.3.4.2 rmind AML_CREATE_FIELD_OP
162 1.3.4.2 rmind AML_CREATE_BIT_FIELD_OP
163 1.3.4.2 rmind AML_CREATE_BYTE_FIELD_OP
164 1.3.4.2 rmind AML_CREATE_WORD_FIELD_OP
165 1.3.4.2 rmind AML_CREATE_DWORD_FIELD_OP
166 1.3.4.2 rmind AML_CREATE_QWORD_FIELD_OP
167 1.3.4.2 rmind AML_REGION_OP
168 1.3.4.2 rmind AML_BUFFER_OP
169 1.3.4.2 rmind
170 1.3.4.2 rmind Field opcodes
171 1.3.4.2 rmind
172 1.3.4.2 rmind AML_CREATE_FIELD_OP
173 1.3.4.2 rmind AML_FIELD_OP
174 1.3.4.2 rmind AML_INDEX_FIELD_OP
175 1.3.4.2 rmind AML_BANK_FIELD_OP
176 1.3.4.2 rmind
177 1.3.4.2 rmind Field "Create" opcodes
178 1.3.4.2 rmind
179 1.3.4.2 rmind AML_CREATE_FIELD_OP
180 1.3.4.2 rmind AML_CREATE_BIT_FIELD_OP
181 1.3.4.2 rmind AML_CREATE_BYTE_FIELD_OP
182 1.3.4.2 rmind AML_CREATE_WORD_FIELD_OP
183 1.3.4.2 rmind AML_CREATE_DWORD_FIELD_OP
184 1.3.4.2 rmind AML_CREATE_QWORD_FIELD_OP
185 1.3.4.2 rmind
186 1.3.4.2 rmind ******************************************************************************/
187 1.3.4.2 rmind
188 1.3.4.2 rmind
189 1.3.4.2 rmind /*
190 1.3.4.2 rmind * Master Opcode information table. A summary of everything we know about each
191 1.3.4.2 rmind * opcode, all in one place.
192 1.3.4.2 rmind */
193 1.3.4.2 rmind const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[AML_NUM_OPCODES] =
194 1.3.4.2 rmind {
195 1.3.4.2 rmind /*! [Begin] no source code translation */
196 1.3.4.2 rmind /* Index Name Parser Args Interpreter Args ObjectType Class Type Flags */
197 1.3.4.2 rmind
198 1.3.4.2 rmind /* 00 */ ACPI_OP ("Zero", ARGP_ZERO_OP, ARGI_ZERO_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
199 1.3.4.2 rmind /* 01 */ ACPI_OP ("One", ARGP_ONE_OP, ARGI_ONE_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
200 1.3.4.2 rmind /* 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),
201 1.3.4.2 rmind /* 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),
202 1.3.4.2 rmind /* 04 */ ACPI_OP ("ByteConst", ARGP_BYTE_OP, ARGI_BYTE_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
203 1.3.4.2 rmind /* 05 */ ACPI_OP ("WordConst", ARGP_WORD_OP, ARGI_WORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
204 1.3.4.2 rmind /* 06 */ ACPI_OP ("DwordConst", ARGP_DWORD_OP, ARGI_DWORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
205 1.3.4.2 rmind /* 07 */ ACPI_OP ("String", ARGP_STRING_OP, ARGI_STRING_OP, ACPI_TYPE_STRING, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
206 1.3.4.2 rmind /* 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),
207 1.3.4.2 rmind /* 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),
208 1.3.4.2 rmind /* 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),
209 1.3.4.2 rmind /* 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),
210 1.3.4.2 rmind /* 0C */ ACPI_OP ("Local0", ARGP_LOCAL0, ARGI_LOCAL0, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
211 1.3.4.2 rmind /* 0D */ ACPI_OP ("Local1", ARGP_LOCAL1, ARGI_LOCAL1, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
212 1.3.4.2 rmind /* 0E */ ACPI_OP ("Local2", ARGP_LOCAL2, ARGI_LOCAL2, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
213 1.3.4.2 rmind /* 0F */ ACPI_OP ("Local3", ARGP_LOCAL3, ARGI_LOCAL3, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
214 1.3.4.2 rmind /* 10 */ ACPI_OP ("Local4", ARGP_LOCAL4, ARGI_LOCAL4, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
215 1.3.4.2 rmind /* 11 */ ACPI_OP ("Local5", ARGP_LOCAL5, ARGI_LOCAL5, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
216 1.3.4.2 rmind /* 12 */ ACPI_OP ("Local6", ARGP_LOCAL6, ARGI_LOCAL6, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
217 1.3.4.2 rmind /* 13 */ ACPI_OP ("Local7", ARGP_LOCAL7, ARGI_LOCAL7, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0),
218 1.3.4.2 rmind /* 14 */ ACPI_OP ("Arg0", ARGP_ARG0, ARGI_ARG0, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
219 1.3.4.2 rmind /* 15 */ ACPI_OP ("Arg1", ARGP_ARG1, ARGI_ARG1, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
220 1.3.4.2 rmind /* 16 */ ACPI_OP ("Arg2", ARGP_ARG2, ARGI_ARG2, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
221 1.3.4.2 rmind /* 17 */ ACPI_OP ("Arg3", ARGP_ARG3, ARGI_ARG3, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
222 1.3.4.2 rmind /* 18 */ ACPI_OP ("Arg4", ARGP_ARG4, ARGI_ARG4, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
223 1.3.4.2 rmind /* 19 */ ACPI_OP ("Arg5", ARGP_ARG5, ARGI_ARG5, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
224 1.3.4.2 rmind /* 1A */ ACPI_OP ("Arg6", ARGP_ARG6, ARGI_ARG6, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0),
225 1.3.4.2 rmind /* 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),
226 1.3.4.2 rmind /* 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),
227 1.3.4.2 rmind /* 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),
228 1.3.4.2 rmind /* 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),
229 1.3.4.2 rmind /* 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),
230 1.3.4.2 rmind /* 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),
231 1.3.4.2 rmind /* 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),
232 1.3.4.2 rmind /* 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),
233 1.3.4.2 rmind /* 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),
234 1.3.4.2 rmind /* 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),
235 1.3.4.2 rmind /* 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),
236 1.3.4.2 rmind /* 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),
237 1.3.4.2 rmind /* 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),
238 1.3.4.2 rmind /* 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),
239 1.3.4.2 rmind /* 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),
240 1.3.4.2 rmind /* 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),
241 1.3.4.2 rmind /* 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),
242 1.3.4.2 rmind /* 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),
243 1.3.4.2 rmind /* 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),
244 1.3.4.2 rmind /* 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),
245 1.3.4.2 rmind /* 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),
246 1.3.4.2 rmind /* 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),
247 1.3.4.2 rmind /* 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),
248 1.3.4.2 rmind /* 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),
249 1.3.4.2 rmind /* 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),
250 1.3.4.2 rmind /* 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),
251 1.3.4.2 rmind /* 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),
252 1.3.4.2 rmind /* 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),
253 1.3.4.2 rmind /* 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),
254 1.3.4.2 rmind /* 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),
255 1.3.4.2 rmind /* 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),
256 1.3.4.2 rmind /* 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),
257 1.3.4.2 rmind /* 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),
258 1.3.4.2 rmind /* 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),
259 1.3.4.2 rmind /* 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),
260 1.3.4.2 rmind /* 3E */ ACPI_OP ("If", ARGP_IF_OP, ARGI_IF_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
261 1.3.4.2 rmind /* 3F */ ACPI_OP ("Else", ARGP_ELSE_OP, ARGI_ELSE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
262 1.3.4.2 rmind /* 40 */ ACPI_OP ("While", ARGP_WHILE_OP, ARGI_WHILE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
263 1.3.4.2 rmind /* 41 */ ACPI_OP ("Noop", ARGP_NOOP_OP, ARGI_NOOP_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
264 1.3.4.2 rmind /* 42 */ ACPI_OP ("Return", ARGP_RETURN_OP, ARGI_RETURN_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),
265 1.3.4.2 rmind /* 43 */ ACPI_OP ("Break", ARGP_BREAK_OP, ARGI_BREAK_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
266 1.3.4.2 rmind /* 44 */ ACPI_OP ("BreakPoint", ARGP_BREAK_POINT_OP, ARGI_BREAK_POINT_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
267 1.3.4.2 rmind /* 45 */ ACPI_OP ("Ones", ARGP_ONES_OP, ARGI_ONES_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),
268 1.3.4.2 rmind
269 1.3.4.2 rmind /* Prefixed opcodes (Two-byte opcodes with a prefix op) */
270 1.3.4.2 rmind
271 1.3.4.2 rmind /* 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),
272 1.3.4.2 rmind /* 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 ),
273 1.3.4.2 rmind /* 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),
274 1.3.4.2 rmind /* 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),
275 1.3.4.2 rmind /* 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),
276 1.3.4.2 rmind /* 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),
277 1.3.4.2 rmind /* 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),
278 1.3.4.2 rmind /* 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),
279 1.3.4.2 rmind /* 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),
280 1.3.4.2 rmind /* 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),
281 1.3.4.2 rmind /* 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),
282 1.3.4.2 rmind /* 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),
283 1.3.4.2 rmind /* 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),
284 1.3.4.2 rmind /* 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),
285 1.3.4.2 rmind /* 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),
286 1.3.4.2 rmind /* 55 */ ACPI_OP ("Revision", ARGP_REVISION_OP, ARGI_REVISION_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0),
287 1.3.4.2 rmind /* 56 */ ACPI_OP ("Debug", ARGP_DEBUG_OP, ARGI_DEBUG_OP, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0),
288 1.3.4.2 rmind /* 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),
289 1.3.4.2 rmind /* 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),
290 1.3.4.2 rmind /* 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),
291 1.3.4.2 rmind /* 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),
292 1.3.4.2 rmind /* 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),
293 1.3.4.2 rmind /* 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),
294 1.3.4.2 rmind /* 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),
295 1.3.4.2 rmind /* 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),
296 1.3.4.2 rmind /* 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),
297 1.3.4.2 rmind
298 1.3.4.2 rmind /* Internal opcodes that map to invalid AML opcodes */
299 1.3.4.2 rmind
300 1.3.4.2 rmind /* 60 */ ACPI_OP ("LNotEqual", ARGP_LNOTEQUAL_OP, ARGI_LNOTEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),
301 1.3.4.2 rmind /* 61 */ ACPI_OP ("LLessEqual", ARGP_LLESSEQUAL_OP, ARGI_LLESSEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),
302 1.3.4.2 rmind /* 62 */ ACPI_OP ("LGreaterEqual", ARGP_LGREATEREQUAL_OP, ARGI_LGREATEREQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),
303 1.3.4.2 rmind /* 63 */ ACPI_OP ("-NamePath-", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_NSOBJECT | AML_NSNODE ),
304 1.3.4.2 rmind /* 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),
305 1.3.4.2 rmind /* 65 */ ACPI_OP ("-ByteList-", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP, ACPI_TYPE_ANY, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, 0),
306 1.3.4.2 rmind /* 66 */ ACPI_OP ("-ReservedField-", ARGP_RESERVEDFIELD_OP, ARGI_RESERVEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
307 1.3.4.2 rmind /* 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 ),
308 1.3.4.2 rmind /* 68 */ ACPI_OP ("-AccessField-", ARGP_ACCESSFIELD_OP, ARGI_ACCESSFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
309 1.3.4.2 rmind /* 69 */ ACPI_OP ("-StaticString", ARGP_STATICSTRING_OP, ARGI_STATICSTRING_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),
310 1.3.4.2 rmind /* 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),
311 1.3.4.2 rmind /* 6B */ ACPI_OP ("-UNKNOWN_OP-", ARG_NONE, ARG_NONE, ACPI_TYPE_INVALID, AML_CLASS_UNKNOWN, AML_TYPE_BOGUS, AML_HAS_ARGS),
312 1.3.4.2 rmind /* 6C */ ACPI_OP ("-ASCII_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_ASCII, AML_TYPE_BOGUS, AML_HAS_ARGS),
313 1.3.4.2 rmind /* 6D */ ACPI_OP ("-PREFIX_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_PREFIX, AML_TYPE_BOGUS, AML_HAS_ARGS),
314 1.3.4.2 rmind
315 1.3.4.2 rmind /* ACPI 2.0 opcodes */
316 1.3.4.2 rmind
317 1.3.4.2 rmind /* 6E */ ACPI_OP ("QwordConst", ARGP_QWORD_OP, ARGI_QWORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT),
318 1.3.4.2 rmind /* 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),
319 1.3.4.2 rmind /* 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),
320 1.3.4.2 rmind /* 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),
321 1.3.4.2 rmind /* 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),
322 1.3.4.2 rmind /* 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),
323 1.3.4.2 rmind /* 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),
324 1.3.4.2 rmind /* 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),
325 1.3.4.2 rmind /* 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),
326 1.3.4.2 rmind /* 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),
327 1.3.4.2 rmind /* 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),
328 1.3.4.2 rmind /* 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),
329 1.3.4.2 rmind /* 7A */ ACPI_OP ("Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),
330 1.3.4.2 rmind /* 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),
331 1.3.4.2 rmind /* 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),
332 1.3.4.2 rmind /* 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),
333 1.3.4.2 rmind
334 1.3.4.2 rmind /* ACPI 3.0 opcodes */
335 1.3.4.2 rmind
336 1.3.4.2 rmind /* 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)
337 1.3.4.2 rmind
338 1.3.4.2 rmind /*! [End] no source code translation !*/
339 1.3.4.2 rmind };
340 1.3.4.2 rmind
341 1.3.4.2 rmind /*
342 1.3.4.2 rmind * This table is directly indexed by the opcodes, and returns an
343 1.3.4.2 rmind * index into the table above
344 1.3.4.2 rmind */
345 1.3.4.2 rmind static const UINT8 AcpiGbl_ShortOpIndex[256] =
346 1.3.4.2 rmind {
347 1.3.4.2 rmind /* 0 1 2 3 4 5 6 7 */
348 1.3.4.2 rmind /* 8 9 A B C D E F */
349 1.3.4.2 rmind /* 0x00 */ 0x00, 0x01, _UNK, _UNK, _UNK, _UNK, 0x02, _UNK,
350 1.3.4.2 rmind /* 0x08 */ 0x03, _UNK, 0x04, 0x05, 0x06, 0x07, 0x6E, _UNK,
351 1.3.4.2 rmind /* 0x10 */ 0x08, 0x09, 0x0a, 0x6F, 0x0b, _UNK, _UNK, _UNK,
352 1.3.4.2 rmind /* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
353 1.3.4.2 rmind /* 0x20 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
354 1.3.4.2 rmind /* 0x28 */ _UNK, _UNK, _UNK, _UNK, _UNK, 0x63, _PFX, _PFX,
355 1.3.4.2 rmind /* 0x30 */ 0x67, 0x66, 0x68, 0x65, 0x69, 0x64, 0x6A, 0x7D,
356 1.3.4.2 rmind /* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
357 1.3.4.2 rmind /* 0x40 */ _UNK, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
358 1.3.4.2 rmind /* 0x48 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
359 1.3.4.2 rmind /* 0x50 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
360 1.3.4.2 rmind /* 0x58 */ _ASC, _ASC, _ASC, _UNK, _PFX, _UNK, _PFX, _ASC,
361 1.3.4.2 rmind /* 0x60 */ 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13,
362 1.3.4.2 rmind /* 0x68 */ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, _UNK,
363 1.3.4.2 rmind /* 0x70 */ 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
364 1.3.4.2 rmind /* 0x78 */ 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a,
365 1.3.4.2 rmind /* 0x80 */ 0x2b, 0x2c, 0x2d, 0x2e, 0x70, 0x71, 0x2f, 0x30,
366 1.3.4.2 rmind /* 0x88 */ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x72,
367 1.3.4.2 rmind /* 0x90 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x73, 0x74,
368 1.3.4.2 rmind /* 0x98 */ 0x75, 0x76, _UNK, _UNK, 0x77, 0x78, 0x79, 0x7A,
369 1.3.4.2 rmind /* 0xA0 */ 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x60, 0x61,
370 1.3.4.2 rmind /* 0xA8 */ 0x62, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
371 1.3.4.2 rmind /* 0xB0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
372 1.3.4.2 rmind /* 0xB8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
373 1.3.4.2 rmind /* 0xC0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
374 1.3.4.2 rmind /* 0xC8 */ _UNK, _UNK, _UNK, _UNK, 0x44, _UNK, _UNK, _UNK,
375 1.3.4.2 rmind /* 0xD0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
376 1.3.4.2 rmind /* 0xD8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
377 1.3.4.2 rmind /* 0xE0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
378 1.3.4.2 rmind /* 0xE8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
379 1.3.4.2 rmind /* 0xF0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
380 1.3.4.2 rmind /* 0xF8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, 0x45,
381 1.3.4.2 rmind };
382 1.3.4.2 rmind
383 1.3.4.2 rmind /*
384 1.3.4.2 rmind * This table is indexed by the second opcode of the extended opcode
385 1.3.4.2 rmind * pair. It returns an index into the opcode table (AcpiGbl_AmlOpInfo)
386 1.3.4.2 rmind */
387 1.3.4.2 rmind static const UINT8 AcpiGbl_LongOpIndex[NUM_EXTENDED_OPCODE] =
388 1.3.4.2 rmind {
389 1.3.4.2 rmind /* 0 1 2 3 4 5 6 7 */
390 1.3.4.2 rmind /* 8 9 A B C D E F */
391 1.3.4.2 rmind /* 0x00 */ _UNK, 0x46, 0x47, _UNK, _UNK, _UNK, _UNK, _UNK,
392 1.3.4.2 rmind /* 0x08 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
393 1.3.4.2 rmind /* 0x10 */ _UNK, _UNK, 0x48, 0x49, _UNK, _UNK, _UNK, _UNK,
394 1.3.4.2 rmind /* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, 0x7B,
395 1.3.4.2 rmind /* 0x20 */ 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51,
396 1.3.4.2 rmind /* 0x28 */ 0x52, 0x53, 0x54, _UNK, _UNK, _UNK, _UNK, _UNK,
397 1.3.4.2 rmind /* 0x30 */ 0x55, 0x56, 0x57, 0x7e, _UNK, _UNK, _UNK, _UNK,
398 1.3.4.2 rmind /* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
399 1.3.4.2 rmind /* 0x40 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
400 1.3.4.2 rmind /* 0x48 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
401 1.3.4.2 rmind /* 0x50 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
402 1.3.4.2 rmind /* 0x58 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
403 1.3.4.2 rmind /* 0x60 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
404 1.3.4.2 rmind /* 0x68 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
405 1.3.4.2 rmind /* 0x70 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
406 1.3.4.2 rmind /* 0x78 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
407 1.3.4.2 rmind /* 0x80 */ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
408 1.3.4.2 rmind /* 0x88 */ 0x7C,
409 1.3.4.2 rmind };
410 1.3.4.2 rmind
411 1.3.4.2 rmind
412 1.3.4.2 rmind /*******************************************************************************
413 1.3.4.2 rmind *
414 1.3.4.2 rmind * FUNCTION: AcpiPsGetOpcodeInfo
415 1.3.4.2 rmind *
416 1.3.4.2 rmind * PARAMETERS: Opcode - The AML opcode
417 1.3.4.2 rmind *
418 1.3.4.2 rmind * RETURN: A pointer to the info about the opcode.
419 1.3.4.2 rmind *
420 1.3.4.2 rmind * DESCRIPTION: Find AML opcode description based on the opcode.
421 1.3.4.2 rmind * NOTE: This procedure must ALWAYS return a valid pointer!
422 1.3.4.2 rmind *
423 1.3.4.2 rmind ******************************************************************************/
424 1.3.4.2 rmind
425 1.3.4.2 rmind const ACPI_OPCODE_INFO *
426 1.3.4.2 rmind AcpiPsGetOpcodeInfo (
427 1.3.4.2 rmind UINT16 Opcode)
428 1.3.4.2 rmind {
429 1.3.4.2 rmind ACPI_FUNCTION_NAME (PsGetOpcodeInfo);
430 1.3.4.2 rmind
431 1.3.4.2 rmind
432 1.3.4.2 rmind /*
433 1.3.4.2 rmind * Detect normal 8-bit opcode or extended 16-bit opcode
434 1.3.4.2 rmind */
435 1.3.4.2 rmind if (!(Opcode & 0xFF00))
436 1.3.4.2 rmind {
437 1.3.4.2 rmind /* Simple (8-bit) opcode: 0-255, can't index beyond table */
438 1.3.4.2 rmind
439 1.3.4.2 rmind return (&AcpiGbl_AmlOpInfo [AcpiGbl_ShortOpIndex [(UINT8) Opcode]]);
440 1.3.4.2 rmind }
441 1.3.4.2 rmind
442 1.3.4.2 rmind if (((Opcode & 0xFF00) == AML_EXTENDED_OPCODE) &&
443 1.3.4.2 rmind (((UINT8) Opcode) <= MAX_EXTENDED_OPCODE))
444 1.3.4.2 rmind {
445 1.3.4.2 rmind /* Valid extended (16-bit) opcode */
446 1.3.4.2 rmind
447 1.3.4.2 rmind return (&AcpiGbl_AmlOpInfo [AcpiGbl_LongOpIndex [(UINT8) Opcode]]);
448 1.3.4.2 rmind }
449 1.3.4.2 rmind
450 1.3.4.2 rmind /* Unknown AML opcode */
451 1.3.4.2 rmind
452 1.3.4.2 rmind ACPI_DEBUG_PRINT ((ACPI_DB_EXEC,
453 1.3.4.2 rmind "Unknown AML opcode [%4.4X]\n", Opcode));
454 1.3.4.2 rmind
455 1.3.4.2 rmind return (&AcpiGbl_AmlOpInfo [_UNK]);
456 1.3.4.2 rmind }
457 1.3.4.2 rmind
458 1.3.4.2 rmind
459 1.3.4.2 rmind /*******************************************************************************
460 1.3.4.2 rmind *
461 1.3.4.2 rmind * FUNCTION: AcpiPsGetOpcodeName
462 1.3.4.2 rmind *
463 1.3.4.2 rmind * PARAMETERS: Opcode - The AML opcode
464 1.3.4.2 rmind *
465 1.3.4.2 rmind * RETURN: A pointer to the name of the opcode (ASCII String)
466 1.3.4.2 rmind * Note: Never returns NULL.
467 1.3.4.2 rmind *
468 1.3.4.2 rmind * DESCRIPTION: Translate an opcode into a human-readable string
469 1.3.4.2 rmind *
470 1.3.4.2 rmind ******************************************************************************/
471 1.3.4.2 rmind
472 1.3.4.2 rmind char *
473 1.3.4.2 rmind AcpiPsGetOpcodeName (
474 1.3.4.2 rmind UINT16 Opcode)
475 1.3.4.2 rmind {
476 1.3.4.2 rmind #if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUG_OUTPUT)
477 1.3.4.2 rmind
478 1.3.4.2 rmind const ACPI_OPCODE_INFO *Op;
479 1.3.4.2 rmind
480 1.3.4.2 rmind
481 1.3.4.2 rmind Op = AcpiPsGetOpcodeInfo (Opcode);
482 1.3.4.2 rmind
483 1.3.4.2 rmind /* Always guaranteed to return a valid pointer */
484 1.3.4.2 rmind
485 1.3.4.2 rmind return __UNCONST(Op->Name);
486 1.3.4.2 rmind
487 1.3.4.2 rmind #else
488 1.3.4.2 rmind return __UNCONST("OpcodeName unavailable");
489 1.3.4.2 rmind
490 1.3.4.2 rmind #endif
491 1.3.4.2 rmind }
492 1.3.4.2 rmind
493 1.3.4.2 rmind
494 1.3.4.2 rmind /*******************************************************************************
495 1.3.4.2 rmind *
496 1.3.4.2 rmind * FUNCTION: AcpiPsGetArgumentCount
497 1.3.4.2 rmind *
498 1.3.4.2 rmind * PARAMETERS: OpType - Type associated with the AML opcode
499 1.3.4.2 rmind *
500 1.3.4.2 rmind * RETURN: Argument count
501 1.3.4.2 rmind *
502 1.3.4.2 rmind * DESCRIPTION: Obtain the number of expected arguments for an AML opcode
503 1.3.4.2 rmind *
504 1.3.4.2 rmind ******************************************************************************/
505 1.3.4.2 rmind
506 1.3.4.2 rmind UINT8
507 1.3.4.2 rmind AcpiPsGetArgumentCount (
508 1.3.4.2 rmind UINT32 OpType)
509 1.3.4.2 rmind {
510 1.3.4.2 rmind
511 1.3.4.2 rmind if (OpType <= AML_TYPE_EXEC_6A_0T_1R)
512 1.3.4.2 rmind {
513 1.3.4.2 rmind return (AcpiGbl_ArgumentCount[OpType]);
514 1.3.4.2 rmind }
515 1.3.4.2 rmind
516 1.3.4.2 rmind return (0);
517 1.3.4.2 rmind }
518