1 /******************************************************************************
3 * Module Name: psopcode - Parser opcode information table
6 *****************************************************************************/
9 * Copyright (C) 2000, 2001 R. Byron Moore
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
32 #define _COMPONENT ACPI_PARSER
33 MODULE_NAME ("psopcode")
38 * Reserved ASCII characters. Do not use any of these for
39 * internal opcodes, since they are used to differentiate
40 * name strings from AML opcodes
45 #define _UNKNOWN_OPCODE 0x02 /* An example unknown opcode */
47 #define MAX_EXTENDED_OPCODE 0x88
48 #define NUM_EXTENDED_OPCODE MAX_EXTENDED_OPCODE + 1
49 #define MAX_INTERNAL_OPCODE
50 #define NUM_INTERNAL_OPCODE MAX_INTERNAL_OPCODE + 1
53 /*******************************************************************************
55 * NAME: Acpi_gbl_Aml_op_info
57 * DESCRIPTION: Opcode table. Each entry contains <opcode, type, name, operands>
58 * The name is a simple ascii string, the operand specifier is an
59 * ascii string with one letter per operand. The letter specifies
62 ******************************************************************************/
66 * Flags byte: 0-4 (5 bits) = Opcode Type
67 * 5 (1 bit) = Has arguments flag
68 * 6-7 (2 bits) = Reserved
71 #define AML_HAS_ARGS ACPI_OP_ARGS_MASK
74 * All AML opcodes and the parse-time arguments for each. Used by the AML parser Each list is compressed
75 * into a 32-bit number and stored in the master opcode table at the end of this file.
78 #define ARGP_ZERO_OP ARG_NONE
79 #define ARGP_ONE_OP ARG_NONE
80 #define ARGP_ALIAS_OP ARGP_LIST2 (ARGP_NAMESTRING, ARGP_NAME)
81 #define ARGP_NAME_OP ARGP_LIST2 (ARGP_NAME, ARGP_DATAOBJ)
82 #define ARGP_BYTE_OP ARGP_LIST1 (ARGP_BYTEDATA)
83 #define ARGP_WORD_OP ARGP_LIST1 (ARGP_WORDDATA)
84 #define ARGP_DWORD_OP ARGP_LIST1 (ARGP_DWORDDATA)
85 #define ARGP_STRING_OP ARGP_LIST1 (ARGP_CHARLIST)
86 #define ARGP_QWORD_OP ARGP_LIST1 (ARGP_QWORDDATA)
87 #define ARGP_SCOPE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_TERMLIST)
88 #define ARGP_BUFFER_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_BYTELIST)
89 #define ARGP_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST)
90 #define ARGP_VAR_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST)
91 #define ARGP_METHOD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMLIST)
92 #define ARGP_LOCAL0 ARG_NONE
93 #define ARGP_LOCAL1 ARG_NONE
94 #define ARGP_LOCAL2 ARG_NONE
95 #define ARGP_LOCAL3 ARG_NONE
96 #define ARGP_LOCAL4 ARG_NONE
97 #define ARGP_LOCAL5 ARG_NONE
98 #define ARGP_LOCAL6 ARG_NONE
99 #define ARGP_LOCAL7 ARG_NONE
100 #define ARGP_ARG0 ARG_NONE
101 #define ARGP_ARG1 ARG_NONE
102 #define ARGP_ARG2 ARG_NONE
103 #define ARGP_ARG3 ARG_NONE
104 #define ARGP_ARG4 ARG_NONE
105 #define ARGP_ARG5 ARG_NONE
106 #define ARGP_ARG6 ARG_NONE
107 #define ARGP_STORE_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SUPERNAME)
108 #define ARGP_REF_OF_OP ARGP_LIST1 (ARGP_SUPERNAME)
109 #define ARGP_ADD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
110 #define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
111 #define ARGP_SUBTRACT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
112 #define ARGP_INCREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME)
113 #define ARGP_DECREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME)
114 #define ARGP_MULTIPLY_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
115 #define ARGP_DIVIDE_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET, ARGP_TARGET)
116 #define ARGP_SHIFT_LEFT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
117 #define ARGP_SHIFT_RIGHT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
118 #define ARGP_BIT_AND_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
119 #define ARGP_BIT_NAND_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
120 #define ARGP_BIT_OR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
121 #define ARGP_BIT_NOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
122 #define ARGP_BIT_XOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
123 #define ARGP_BIT_NOT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
124 #define ARGP_FIND_SET_LEFT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
125 #define ARGP_FIND_SET_RIGHT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
126 #define ARGP_DEREF_OF_OP ARGP_LIST1 (ARGP_TERMARG)
127 #define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
128 #define ARGP_MOD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
129 #define ARGP_NOTIFY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG)
130 #define ARGP_SIZE_OF_OP ARGP_LIST1 (ARGP_SUPERNAME)
131 #define ARGP_INDEX_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
132 #define ARGP_MATCH_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG)
133 #define ARGP_DWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
134 #define ARGP_WORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
135 #define ARGP_BYTE_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
136 #define ARGP_BIT_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
137 #define ARGP_TYPE_OP ARGP_LIST1 (ARGP_SUPERNAME)
138 #define ARGP_QWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
139 #define ARGP_LAND_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
140 #define ARGP_LOR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
141 #define ARGP_LNOT_OP ARGP_LIST1 (ARGP_TERMARG)
142 #define ARGP_LEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
143 #define ARGP_LGREATER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
144 #define ARGP_LLESS_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
145 #define ARGP_TO_BUFFER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
146 #define ARGP_TO_DEC_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
147 #define ARGP_TO_HEX_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
148 #define ARGP_TO_INTEGER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
149 #define ARGP_TO_STRING_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
150 #define ARGP_COPY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SIMPLENAME)
151 #define ARGP_MID_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
152 #define ARGP_CONTINUE_OP ARG_NONE
153 #define ARGP_IF_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST)
154 #define ARGP_ELSE_OP ARGP_LIST2 (ARGP_PKGLENGTH, ARGP_TERMLIST)
155 #define ARGP_WHILE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST)
156 #define ARGP_NOOP_OP ARG_NONE
157 #define ARGP_RETURN_OP ARGP_LIST1 (ARGP_TERMARG)
158 #define ARGP_BREAK_OP ARG_NONE
159 #define ARGP_BREAK_POINT_OP ARG_NONE
160 #define ARGP_ONES_OP ARG_NONE
161 #define ARGP_MUTEX_OP ARGP_LIST2 (ARGP_NAME, ARGP_BYTEDATA)
162 #define ARGP_EVENT_OP ARGP_LIST1 (ARGP_NAME)
163 #define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME)
164 #define ARGP_CREATE_FIELD_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
165 #define ARGP_LOAD_TABLE_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG)
166 #define ARGP_LOAD_OP ARGP_LIST2 (ARGP_NAMESTRING, ARGP_SUPERNAME)
167 #define ARGP_STALL_OP ARGP_LIST1 (ARGP_TERMARG)
168 #define ARGP_SLEEP_OP ARGP_LIST1 (ARGP_TERMARG)
169 #define ARGP_ACQUIRE_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_WORDDATA)
170 #define ARGP_SIGNAL_OP ARGP_LIST1 (ARGP_SUPERNAME)
171 #define ARGP_WAIT_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG)
172 #define ARGP_RESET_OP ARGP_LIST1 (ARGP_SUPERNAME)
173 #define ARGP_RELEASE_OP ARGP_LIST1 (ARGP_SUPERNAME)
174 #define ARGP_FROM_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
175 #define ARGP_TO_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET)
176 #define ARGP_UNLOAD_OP ARGP_LIST1 (ARGP_SUPERNAME)
177 #define ARGP_REVISION_OP ARG_NONE
178 #define ARGP_DEBUG_OP ARG_NONE
179 #define ARGP_FATAL_OP ARGP_LIST3 (ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_TERMARG)
180 #define ARGP_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG)
181 #define ARGP_DEF_FIELD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_BYTEDATA, ARGP_FIELDLIST)
182 #define ARGP_DEVICE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST)
183 #define ARGP_PROCESSOR_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_BYTEDATA, ARGP_OBJLIST)
184 #define ARGP_POWER_RES_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_WORDDATA, ARGP_OBJLIST)
185 #define ARGP_THERMAL_ZONE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST)
186 #define ARGP_INDEX_FIELD_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_BYTEDATA, ARGP_FIELDLIST)
187 #define ARGP_BANK_FIELD_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_TERMARG, ARGP_BYTEDATA, ARGP_FIELDLIST)
188 #define ARGP_DATA_REGION_OP ARGP_LIST4 (ARGP_NAMESTRING, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG)
189 #define ARGP_LNOTEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
190 #define ARGP_LLESSEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
191 #define ARGP_LGREATEREQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG)
192 #define ARGP_NAMEPATH_OP ARGP_LIST1 (ARGP_NAMESTRING)
193 #define ARGP_METHODCALL_OP ARGP_LIST1 (ARGP_NAMESTRING)
194 #define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING)
195 #define ARGP_RESERVEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
196 #define ARGP_NAMEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
197 #define ARGP_ACCESSFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
198 #define ARGP_STATICSTRING_OP ARGP_LIST1 (ARGP_NAMESTRING)
202 * All AML opcodes and the runtime arguments for each. Used by the AML interpreter Each list is compressed
203 * into a 32-bit number and stored in the master opcode table at the end of this file.
205 * (Used by Acpi_aml_prep_operands procedure and the ASL Compiler)
208 #define ARGI_ZERO_OP ARG_NONE
209 #define ARGI_ONE_OP ARG_NONE
210 #define ARGI_ALIAS_OP ARGI_INVALID_OPCODE
211 #define ARGI_NAME_OP ARGI_INVALID_OPCODE
212 #define ARGI_BYTE_OP ARGI_INVALID_OPCODE
213 #define ARGI_WORD_OP ARGI_INVALID_OPCODE
214 #define ARGI_DWORD_OP ARGI_INVALID_OPCODE
215 #define ARGI_STRING_OP ARGI_INVALID_OPCODE
216 #define ARGI_QWORD_OP ARGI_INVALID_OPCODE
217 #define ARGI_SCOPE_OP ARGI_INVALID_OPCODE
218 #define ARGI_BUFFER_OP ARGI_INVALID_OPCODE
219 #define ARGI_PACKAGE_OP ARGI_INVALID_OPCODE
220 #define ARGI_VAR_PACKAGE_OP ARGI_INVALID_OPCODE
221 #define ARGI_METHOD_OP ARGI_INVALID_OPCODE
222 #define ARGI_LOCAL0 ARG_NONE
223 #define ARGI_LOCAL1 ARG_NONE
224 #define ARGI_LOCAL2 ARG_NONE
225 #define ARGI_LOCAL3 ARG_NONE
226 #define ARGI_LOCAL4 ARG_NONE
227 #define ARGI_LOCAL5 ARG_NONE
228 #define ARGI_LOCAL6 ARG_NONE
229 #define ARGI_LOCAL7 ARG_NONE
230 #define ARGI_ARG0 ARG_NONE
231 #define ARGI_ARG1 ARG_NONE
232 #define ARGI_ARG2 ARG_NONE
233 #define ARGI_ARG3 ARG_NONE
234 #define ARGI_ARG4 ARG_NONE
235 #define ARGI_ARG5 ARG_NONE
236 #define ARGI_ARG6 ARG_NONE
237 #define ARGI_STORE_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_TARGETREF)
238 #define ARGI_REF_OF_OP ARGI_LIST1 (ARGI_OBJECT_REF)
239 #define ARGI_ADD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
240 #define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF)
241 #define ARGI_SUBTRACT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
242 #define ARGI_INCREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF)
243 #define ARGI_DECREMENT_OP ARGI_LIST1 (ARGI_INTEGER_REF)
244 #define ARGI_MULTIPLY_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
245 #define ARGI_DIVIDE_OP ARGI_LIST4 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF, ARGI_TARGETREF)
246 #define ARGI_SHIFT_LEFT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
247 #define ARGI_SHIFT_RIGHT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
248 #define ARGI_BIT_AND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
249 #define ARGI_BIT_NAND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
250 #define ARGI_BIT_OR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
251 #define ARGI_BIT_NOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
252 #define ARGI_BIT_XOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
253 #define ARGI_BIT_NOT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
254 #define ARGI_FIND_SET_LEFT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
255 #define ARGI_FIND_SET_RIGHT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
256 #define ARGI_DEREF_OF_OP ARGI_LIST1 (ARGI_REFERENCE)
257 #define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF)
258 #define ARGI_MOD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
259 #define ARGI_NOTIFY_OP ARGI_LIST2 (ARGI_DEVICE_REF, ARGI_INTEGER)
260 #define ARGI_SIZE_OF_OP ARGI_LIST1 (ARGI_DATAOBJECT)
261 #define ARGI_INDEX_OP ARGI_LIST3 (ARGI_COMPLEXOBJ, ARGI_INTEGER, ARGI_TARGETREF)
262 #define ARGI_MATCH_OP ARGI_LIST6 (ARGI_PACKAGE, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER)
263 #define ARGI_DWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
264 #define ARGI_WORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
265 #define ARGI_BYTE_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
266 #define ARGI_BIT_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
267 #define ARGI_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE)
268 #define ARGI_QWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
269 #define ARGI_LAND_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
270 #define ARGI_LOR_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
271 #define ARGI_LNOT_OP ARGI_LIST1 (ARGI_INTEGER)
272 #define ARGI_LEQUAL_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
273 #define ARGI_LGREATER_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
274 #define ARGI_LLESS_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
275 #define ARGI_TO_BUFFER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
276 #define ARGI_TO_DEC_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
277 #define ARGI_TO_HEX_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
278 #define ARGI_TO_INTEGER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET)
279 #define ARGI_TO_STRING_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_FIXED_TARGET)
280 #define ARGI_COPY_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_SIMPLE_TARGET)
281 #define ARGI_MID_OP ARGI_LIST4 (ARGI_BUFFERSTRING,ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
282 #define ARGI_CONTINUE_OP ARGI_INVALID_OPCODE
283 #define ARGI_IF_OP ARGI_INVALID_OPCODE
284 #define ARGI_ELSE_OP ARGI_INVALID_OPCODE
285 #define ARGI_WHILE_OP ARGI_INVALID_OPCODE
286 #define ARGI_NOOP_OP ARG_NONE
287 #define ARGI_RETURN_OP ARGI_INVALID_OPCODE
288 #define ARGI_BREAK_OP ARG_NONE
289 #define ARGI_BREAK_POINT_OP ARG_NONE
290 #define ARGI_ONES_OP ARG_NONE
291 #define ARGI_MUTEX_OP ARGI_INVALID_OPCODE
292 #define ARGI_EVENT_OP ARGI_INVALID_OPCODE
293 #define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF)
294 #define ARGI_CREATE_FIELD_OP ARGI_LIST4 (ARGI_BUFFER, ARGI_INTEGER, ARGI_INTEGER, ARGI_REFERENCE)
295 #define ARGI_LOAD_TABLE_OP ARGI_LIST6 (ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_TARGETREF)
296 #define ARGI_LOAD_OP ARGI_LIST2 (ARGI_REGION, ARGI_TARGETREF)
297 #define ARGI_STALL_OP ARGI_LIST1 (ARGI_INTEGER)
298 #define ARGI_SLEEP_OP ARGI_LIST1 (ARGI_INTEGER)
299 #define ARGI_ACQUIRE_OP ARGI_LIST2 (ARGI_MUTEX, ARGI_INTEGER)
300 #define ARGI_SIGNAL_OP ARGI_LIST1 (ARGI_EVENT)
301 #define ARGI_WAIT_OP ARGI_LIST2 (ARGI_EVENT, ARGI_INTEGER)
302 #define ARGI_RESET_OP ARGI_LIST1 (ARGI_EVENT)
303 #define ARGI_RELEASE_OP ARGI_LIST1 (ARGI_MUTEX)
304 #define ARGI_FROM_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)
305 #define ARGI_TO_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET)
306 #define ARGI_UNLOAD_OP ARGI_LIST1 (ARGI_DDBHANDLE)
307 #define ARGI_REVISION_OP ARG_NONE
308 #define ARGI_DEBUG_OP ARG_NONE
309 #define ARGI_FATAL_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER)
310 #define ARGI_REGION_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER)
311 #define ARGI_DEF_FIELD_OP ARGI_INVALID_OPCODE
312 #define ARGI_DEVICE_OP ARGI_INVALID_OPCODE
313 #define ARGI_PROCESSOR_OP ARGI_INVALID_OPCODE
314 #define ARGI_POWER_RES_OP ARGI_INVALID_OPCODE
315 #define ARGI_THERMAL_ZONE_OP ARGI_INVALID_OPCODE
316 #define ARGI_INDEX_FIELD_OP ARGI_INVALID_OPCODE
317 #define ARGI_BANK_FIELD_OP ARGI_INVALID_OPCODE
318 #define ARGI_DATA_REGION_OP ARGI_LIST3 (ARGI_STRING, ARGI_STRING, ARGI_STRING)
319 #define ARGI_LNOTEQUAL_OP ARGI_INVALID_OPCODE
320 #define ARGI_LLESSEQUAL_OP ARGI_INVALID_OPCODE
321 #define ARGI_LGREATEREQUAL_OP ARGI_INVALID_OPCODE
322 #define ARGI_NAMEPATH_OP ARGI_INVALID_OPCODE
323 #define ARGI_METHODCALL_OP ARGI_INVALID_OPCODE
324 #define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE
325 #define ARGI_RESERVEDFIELD_OP ARGI_INVALID_OPCODE
326 #define ARGI_NAMEDFIELD_OP ARGI_INVALID_OPCODE
327 #define ARGI_ACCESSFIELD_OP ARGI_INVALID_OPCODE
328 #define ARGI_STATICSTRING_OP ARGI_INVALID_OPCODE
332 * Master Opcode information table. A summary of everything we know about each opcode, all in one place.
336 static ACPI_OPCODE_INFO aml_op_info
[] =
338 /* Index Opcode Type Class Has Arguments? Name Parser Args Interpreter Args */
340 /* 00 */ /* AML_ZERO_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CONSTANT
| AML_NO_ARGS
, "Zero", ARGP_ZERO_OP
, ARGI_ZERO_OP
),
341 /* 01 */ /* AML_ONE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CONSTANT
| AML_NO_ARGS
, "One", ARGP_ONE_OP
, ARGI_ONE_OP
),
342 /* 02 */ /* AML_ALIAS_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_NAMED_OBJECT
| AML_HAS_ARGS
, "Alias", ARGP_ALIAS_OP
, ARGI_ALIAS_OP
),
343 /* 03 */ /* AML_NAME_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_NAMED_OBJECT
| AML_HAS_ARGS
, "Name", ARGP_NAME_OP
, ARGI_NAME_OP
),
344 /* 04 */ /* AML_BYTE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LITERAL
| AML_NO_ARGS
, "Byte_const", ARGP_BYTE_OP
, ARGI_BYTE_OP
),
345 /* 05 */ /* AML_WORD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LITERAL
| AML_NO_ARGS
, "Word_const", ARGP_WORD_OP
, ARGI_WORD_OP
),
346 /* 06 */ /* AML_DWORD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LITERAL
| AML_NO_ARGS
, "Dword_const", ARGP_DWORD_OP
, ARGI_DWORD_OP
),
347 /* 07 */ /* AML_STRING_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LITERAL
| AML_NO_ARGS
, "String", ARGP_STRING_OP
, ARGI_STRING_OP
),
348 /* 08 */ /* AML_SCOPE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_NAMED_OBJECT
| AML_HAS_ARGS
, "Scope", ARGP_SCOPE_OP
, ARGI_SCOPE_OP
),
349 /* 09 */ /* AML_BUFFER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DATA_TERM
| AML_HAS_ARGS
, "Buffer", ARGP_BUFFER_OP
, ARGI_BUFFER_OP
),
350 /* 0A */ /* AML_PACKAGE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DATA_TERM
| AML_HAS_ARGS
, "Package", ARGP_PACKAGE_OP
, ARGI_PACKAGE_OP
),
351 /* 0B */ /* AML_METHOD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_NAMED_OBJECT
| AML_HAS_ARGS
, "Method", ARGP_METHOD_OP
, ARGI_METHOD_OP
),
352 /* 0C */ /* AML_LOCAL0 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LOCAL_VARIABLE
| AML_NO_ARGS
, "Local0", ARGP_LOCAL0
, ARGI_LOCAL0
),
353 /* 0D */ /* AML_LOCAL1 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LOCAL_VARIABLE
| AML_NO_ARGS
, "Local1", ARGP_LOCAL1
, ARGI_LOCAL1
),
354 /* 0E */ /* AML_LOCAL2 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LOCAL_VARIABLE
| AML_NO_ARGS
, "Local2", ARGP_LOCAL2
, ARGI_LOCAL2
),
355 /* 0F */ /* AML_LOCAL3 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LOCAL_VARIABLE
| AML_NO_ARGS
, "Local3", ARGP_LOCAL3
, ARGI_LOCAL3
),
356 /* 10 */ /* AML_LOCAL4 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LOCAL_VARIABLE
| AML_NO_ARGS
, "Local4", ARGP_LOCAL4
, ARGI_LOCAL4
),
357 /* 11 */ /* AML_LOCAL5 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LOCAL_VARIABLE
| AML_NO_ARGS
, "Local5", ARGP_LOCAL5
, ARGI_LOCAL5
),
358 /* 12 */ /* AML_LOCAL6 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LOCAL_VARIABLE
| AML_NO_ARGS
, "Local6", ARGP_LOCAL6
, ARGI_LOCAL6
),
359 /* 13 */ /* AML_LOCAL7 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LOCAL_VARIABLE
| AML_NO_ARGS
, "Local7", ARGP_LOCAL7
, ARGI_LOCAL7
),
360 /* 14 */ /* AML_ARG0 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_METHOD_ARGUMENT
| AML_NO_ARGS
, "Arg0", ARGP_ARG0
, ARGI_ARG0
),
361 /* 15 */ /* AML_ARG1 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_METHOD_ARGUMENT
| AML_NO_ARGS
, "Arg1", ARGP_ARG1
, ARGI_ARG1
),
362 /* 16 */ /* AML_ARG2 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_METHOD_ARGUMENT
| AML_NO_ARGS
, "Arg2", ARGP_ARG2
, ARGI_ARG2
),
363 /* 17 */ /* AML_ARG3 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_METHOD_ARGUMENT
| AML_NO_ARGS
, "Arg3", ARGP_ARG3
, ARGI_ARG3
),
364 /* 18 */ /* AML_ARG4 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_METHOD_ARGUMENT
| AML_NO_ARGS
, "Arg4", ARGP_ARG4
, ARGI_ARG4
),
365 /* 19 */ /* AML_ARG5 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_METHOD_ARGUMENT
| AML_NO_ARGS
, "Arg5", ARGP_ARG5
, ARGI_ARG5
),
366 /* 1_a */ /* AML_ARG6 */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_METHOD_ARGUMENT
| AML_NO_ARGS
, "Arg6", ARGP_ARG6
, ARGI_ARG6
),
367 /* 1_b */ /* AML_STORE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "Store", ARGP_STORE_OP
, ARGI_STORE_OP
),
368 /* 1_c */ /* AML_REF_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2
| AML_HAS_ARGS
, "Ref_of", ARGP_REF_OF_OP
, ARGI_REF_OF_OP
),
369 /* 1_d */ /* AML_ADD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_r
| AML_HAS_ARGS
, "Add", ARGP_ADD_OP
, ARGI_ADD_OP
),
370 /* 1_e */ /* AML_CONCAT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_r
| AML_HAS_ARGS
, "Concatenate", ARGP_CONCAT_OP
, ARGI_CONCAT_OP
),
371 /* 1_f */ /* AML_SUBTRACT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_r
| AML_HAS_ARGS
, "Subtract", ARGP_SUBTRACT_OP
, ARGI_SUBTRACT_OP
),
372 /* 20 */ /* AML_INCREMENT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2
| AML_HAS_ARGS
, "Increment", ARGP_INCREMENT_OP
, ARGI_INCREMENT_OP
),
373 /* 21 */ /* AML_DECREMENT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2
| AML_HAS_ARGS
, "Decrement", ARGP_DECREMENT_OP
, ARGI_DECREMENT_OP
),
374 /* 22 */ /* AML_MULTIPLY_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_r
| AML_HAS_ARGS
, "Multiply", ARGP_MULTIPLY_OP
, ARGI_MULTIPLY_OP
),
375 /* 23 */ /* AML_DIVIDE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_r
| AML_HAS_ARGS
, "Divide", ARGP_DIVIDE_OP
, ARGI_DIVIDE_OP
),
376 /* 24 */ /* AML_SHIFT_LEFT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_r
| AML_HAS_ARGS
, "Shift_left", ARGP_SHIFT_LEFT_OP
, ARGI_SHIFT_LEFT_OP
),
377 /* 25 */ /* AML_SHIFT_RIGHT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_r
| AML_HAS_ARGS
, "Shift_right", ARGP_SHIFT_RIGHT_OP
, ARGI_SHIFT_RIGHT_OP
),
378 /* 26 */ /* AML_BIT_AND_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_r
| AML_HAS_ARGS
, "And", ARGP_BIT_AND_OP
, ARGI_BIT_AND_OP
),
379 /* 27 */ /* AML_BIT_NAND_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_r
| AML_HAS_ARGS
, "NAnd", ARGP_BIT_NAND_OP
, ARGI_BIT_NAND_OP
),
380 /* 28 */ /* AML_BIT_OR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_r
| AML_HAS_ARGS
, "Or", ARGP_BIT_OR_OP
, ARGI_BIT_OR_OP
),
381 /* 29 */ /* AML_BIT_NOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_r
| AML_HAS_ARGS
, "NOr", ARGP_BIT_NOR_OP
, ARGI_BIT_NOR_OP
),
382 /* 2_a */ /* AML_BIT_XOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_r
| AML_HAS_ARGS
, "XOr", ARGP_BIT_XOR_OP
, ARGI_BIT_XOR_OP
),
383 /* 2_b */ /* AML_BIT_NOT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "Not", ARGP_BIT_NOT_OP
, ARGI_BIT_NOT_OP
),
384 /* 2_c */ /* AML_FIND_SET_LEFT_BIT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "Find_set_left_bit", ARGP_FIND_SET_LEFT_BIT_OP
, ARGI_FIND_SET_LEFT_BIT_OP
),
385 /* 2_d */ /* AML_FIND_SET_RIGHT_BIT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "Find_set_right_bit", ARGP_FIND_SET_RIGHT_BIT_OP
, ARGI_FIND_SET_RIGHT_BIT_OP
),
386 /* 2_e */ /* AML_DEREF_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2
| AML_HAS_ARGS
, "Deref_of", ARGP_DEREF_OF_OP
, ARGI_DEREF_OF_OP
),
387 /* 2_f */ /* AML_NOTIFY_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC1
| AML_HAS_ARGS
, "Notify", ARGP_NOTIFY_OP
, ARGI_NOTIFY_OP
),
388 /* 30 */ /* AML_SIZE_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2
| AML_HAS_ARGS
, "Size_of", ARGP_SIZE_OF_OP
, ARGI_SIZE_OF_OP
),
389 /* 31 */ /* AML_INDEX_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_INDEX
| AML_HAS_ARGS
, "Index", ARGP_INDEX_OP
, ARGI_INDEX_OP
),
390 /* 32 */ /* AML_MATCH_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MATCH
| AML_HAS_ARGS
, "Match", ARGP_MATCH_OP
, ARGI_MATCH_OP
),
391 /* 33 */ /* AML_DWORD_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CREATE_FIELD
| AML_HAS_ARGS
, "Create_dWord_field", ARGP_DWORD_FIELD_OP
, ARGI_DWORD_FIELD_OP
),
392 /* 34 */ /* AML_WORD_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CREATE_FIELD
| AML_HAS_ARGS
, "Create_word_field", ARGP_WORD_FIELD_OP
, ARGI_WORD_FIELD_OP
),
393 /* 35 */ /* AML_BYTE_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CREATE_FIELD
| AML_HAS_ARGS
, "Create_byte_field", ARGP_BYTE_FIELD_OP
, ARGI_BYTE_FIELD_OP
),
394 /* 36 */ /* AML_BIT_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CREATE_FIELD
| AML_HAS_ARGS
, "Create_bit_field", ARGP_BIT_FIELD_OP
, ARGI_BIT_FIELD_OP
),
395 /* 37 */ /* AML_TYPE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2
| AML_HAS_ARGS
, "Object_type", ARGP_TYPE_OP
, ARGI_TYPE_OP
),
396 /* 38 */ /* AML_LAND_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2
| AML_HAS_ARGS
, "LAnd", ARGP_LAND_OP
, ARGI_LAND_OP
),
397 /* 39 */ /* AML_LOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2
| AML_HAS_ARGS
, "LOr", ARGP_LOR_OP
, ARGI_LOR_OP
),
398 /* 3_a */ /* AML_LNOT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2
| AML_HAS_ARGS
, "LNot", ARGP_LNOT_OP
, ARGI_LNOT_OP
),
399 /* 3_b */ /* AML_LEQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2
| AML_HAS_ARGS
, "LEqual", ARGP_LEQUAL_OP
, ARGI_LEQUAL_OP
),
400 /* 3_c */ /* AML_LGREATER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2
| AML_HAS_ARGS
, "LGreater", ARGP_LGREATER_OP
, ARGI_LGREATER_OP
),
401 /* 3_d */ /* AML_LLESS_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2
| AML_HAS_ARGS
, "LLess", ARGP_LLESS_OP
, ARGI_LLESS_OP
),
402 /* 3_e */ /* AML_IF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CONTROL
| AML_HAS_ARGS
, "If", ARGP_IF_OP
, ARGI_IF_OP
),
403 /* 3_f */ /* AML_ELSE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CONTROL
| AML_HAS_ARGS
, "Else", ARGP_ELSE_OP
, ARGI_ELSE_OP
),
404 /* 40 */ /* AML_WHILE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CONTROL
| AML_HAS_ARGS
, "While", ARGP_WHILE_OP
, ARGI_WHILE_OP
),
405 /* 41 */ /* AML_NOOP_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CONTROL
| AML_NO_ARGS
, "Noop", ARGP_NOOP_OP
, ARGI_NOOP_OP
),
406 /* 42 */ /* AML_RETURN_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CONTROL
| AML_HAS_ARGS
, "Return", ARGP_RETURN_OP
, ARGI_RETURN_OP
),
407 /* 43 */ /* AML_BREAK_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CONTROL
| AML_NO_ARGS
, "Break", ARGP_BREAK_OP
, ARGI_BREAK_OP
),
408 /* 44 */ /* AML_BREAK_POINT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CONTROL
| AML_NO_ARGS
, "Break_point", ARGP_BREAK_POINT_OP
, ARGI_BREAK_POINT_OP
),
409 /* 45 */ /* AML_ONES_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CONSTANT
| AML_NO_ARGS
, "Ones", ARGP_ONES_OP
, ARGI_ONES_OP
),
411 /* Prefixed opcodes (Two-byte opcodes with a prefix op) */
413 /* 46 */ /* AML_MUTEX_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_NAMED_OBJECT
| AML_HAS_ARGS
, "Mutex", ARGP_MUTEX_OP
, ARGI_MUTEX_OP
),
414 /* 47 */ /* AML_EVENT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_NAMED_OBJECT
| AML_NO_ARGS
, "Event", ARGP_EVENT_OP
, ARGI_EVENT_OP
),
415 /* 48 */ /* AML_COND_REF_OF_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "Cond_ref_of", ARGP_COND_REF_OF_OP
, ARGI_COND_REF_OF_OP
),
416 /* 49 */ /* AML_CREATE_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CREATE_FIELD
| AML_HAS_ARGS
, "Create_field", ARGP_CREATE_FIELD_OP
, ARGI_CREATE_FIELD_OP
),
417 /* 4_a */ /* AML_LOAD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_RECONFIGURATION
| AML_HAS_ARGS
, "Load", ARGP_LOAD_OP
, ARGI_LOAD_OP
),
418 /* 4_b */ /* AML_STALL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC1
| AML_HAS_ARGS
, "Stall", ARGP_STALL_OP
, ARGI_STALL_OP
),
419 /* 4_c */ /* AML_SLEEP_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC1
| AML_HAS_ARGS
, "Sleep", ARGP_SLEEP_OP
, ARGI_SLEEP_OP
),
420 /* 4_d */ /* AML_ACQUIRE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_s
| AML_HAS_ARGS
, "Acquire", ARGP_ACQUIRE_OP
, ARGI_ACQUIRE_OP
),
421 /* 4_e */ /* AML_SIGNAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC1
| AML_HAS_ARGS
, "Signal", ARGP_SIGNAL_OP
, ARGI_SIGNAL_OP
),
422 /* 4_f */ /* AML_WAIT_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_s
| AML_HAS_ARGS
, "Wait", ARGP_WAIT_OP
, ARGI_WAIT_OP
),
423 /* 50 */ /* AML_RESET_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC1
| AML_HAS_ARGS
, "Reset", ARGP_RESET_OP
, ARGI_RESET_OP
),
424 /* 51 */ /* AML_RELEASE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC1
| AML_HAS_ARGS
, "Release", ARGP_RELEASE_OP
, ARGI_RELEASE_OP
),
425 /* 52 */ /* AML_FROM_BCD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "From_bCD", ARGP_FROM_BCD_OP
, ARGI_FROM_BCD_OP
),
426 /* 53 */ /* AML_TO_BCD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "To_bCD", ARGP_TO_BCD_OP
, ARGI_TO_BCD_OP
),
427 /* 54 */ /* AML_UNLOAD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_RECONFIGURATION
| AML_HAS_ARGS
, "Unload", ARGP_UNLOAD_OP
, ARGI_UNLOAD_OP
),
428 /* 55 */ /* AML_REVISION_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CONSTANT
| AML_NO_ARGS
, "Revision", ARGP_REVISION_OP
, ARGI_REVISION_OP
),
429 /* 56 */ /* AML_DEBUG_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CONSTANT
| AML_NO_ARGS
, "Debug", ARGP_DEBUG_OP
, ARGI_DEBUG_OP
),
430 /* 57 */ /* AML_FATAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_FATAL
| AML_HAS_ARGS
, "Fatal", ARGP_FATAL_OP
, ARGI_FATAL_OP
),
431 /* 58 */ /* AML_REGION_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_NAMED_OBJECT
| AML_HAS_ARGS
, "Op_region", ARGP_REGION_OP
, ARGI_REGION_OP
),
432 /* 59 */ /* AML_DEF_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_NAMED_OBJECT
| AML_HAS_ARGS
, "Field", ARGP_DEF_FIELD_OP
, ARGI_DEF_FIELD_OP
),
433 /* 5_a */ /* AML_DEVICE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_NAMED_OBJECT
| AML_HAS_ARGS
, "Device", ARGP_DEVICE_OP
, ARGI_DEVICE_OP
),
434 /* 5_b */ /* AML_PROCESSOR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_NAMED_OBJECT
| AML_HAS_ARGS
, "Processor", ARGP_PROCESSOR_OP
, ARGI_PROCESSOR_OP
),
435 /* 5_c */ /* AML_POWER_RES_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_NAMED_OBJECT
| AML_HAS_ARGS
, "Power_resource", ARGP_POWER_RES_OP
, ARGI_POWER_RES_OP
),
436 /* 5_d */ /* AML_THERMAL_ZONE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_NAMED_OBJECT
| AML_HAS_ARGS
, "Thermal_zone", ARGP_THERMAL_ZONE_OP
, ARGI_THERMAL_ZONE_OP
),
437 /* 5_e */ /* AML_INDEX_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_NAMED_OBJECT
| AML_HAS_ARGS
, "Index_field", ARGP_INDEX_FIELD_OP
, ARGI_INDEX_FIELD_OP
),
438 /* 5_f */ /* AML_BANK_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_NAMED_OBJECT
| AML_HAS_ARGS
, "Bank_field", ARGP_BANK_FIELD_OP
, ARGI_BANK_FIELD_OP
),
440 /* Internal opcodes that map to invalid AML opcodes */
442 /* 60 */ /* AML_LNOTEQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_BOGUS
| AML_HAS_ARGS
, "LNot_equal", ARGP_LNOTEQUAL_OP
, ARGI_LNOTEQUAL_OP
),
443 /* 61 */ /* AML_LLESSEQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_BOGUS
| AML_HAS_ARGS
, "LLess_equal", ARGP_LLESSEQUAL_OP
, ARGI_LLESSEQUAL_OP
),
444 /* 62 */ /* AML_LGREATEREQUAL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_BOGUS
| AML_HAS_ARGS
, "LGreater_equal", ARGP_LGREATEREQUAL_OP
, ARGI_LGREATEREQUAL_OP
),
445 /* 63 */ /* AML_NAMEPATH_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LITERAL
| AML_NO_ARGS
, "Name_path", ARGP_NAMEPATH_OP
, ARGI_NAMEPATH_OP
),
446 /* 64 */ /* AML_METHODCALL_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_METHOD_CALL
| AML_HAS_ARGS
, "Method_call", ARGP_METHODCALL_OP
, ARGI_METHODCALL_OP
),
447 /* 65 */ /* AML_BYTELIST_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LITERAL
| AML_NO_ARGS
, "Byte_list", ARGP_BYTELIST_OP
, ARGI_BYTELIST_OP
),
448 /* 66 */ /* AML_RESERVEDFIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_BOGUS
| AML_NO_ARGS
, "Reserved_field", ARGP_RESERVEDFIELD_OP
, ARGI_RESERVEDFIELD_OP
),
449 /* 67 */ /* AML_NAMEDFIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_BOGUS
| AML_NO_ARGS
, "Named_field", ARGP_NAMEDFIELD_OP
, ARGI_NAMEDFIELD_OP
),
450 /* 68 */ /* AML_ACCESSFIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_BOGUS
| AML_NO_ARGS
, "Access_field", ARGP_ACCESSFIELD_OP
, ARGI_ACCESSFIELD_OP
),
451 /* 69 */ /* AML_STATICSTRING_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_BOGUS
| AML_NO_ARGS
, "Static_string", ARGP_STATICSTRING_OP
, ARGI_STATICSTRING_OP
),
452 /* 6_a */ /* AML_RETURN_VALUE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_RETURN
| AML_HAS_ARGS
, "[Return Value]", ARG_NONE
, ARG_NONE
),
453 /* 6_b */ /* UNKNOWN OPCODES */ OP_INFO_ENTRY (ACPI_OP_TYPE_UNKNOWN
| OPTYPE_BOGUS
| AML_HAS_ARGS
, "UNKNOWN_OP!", ARG_NONE
, ARG_NONE
),
454 /* 6_c */ /* ASCII CHARACTERS */ OP_INFO_ENTRY (ACPI_OP_TYPE_ASCII
| OPTYPE_BOGUS
| AML_HAS_ARGS
, "ASCII_ONLY!", ARG_NONE
, ARG_NONE
),
455 /* 6_d */ /* PREFIX CHARACTERS */ OP_INFO_ENTRY (ACPI_OP_TYPE_PREFIX
| OPTYPE_BOGUS
| AML_HAS_ARGS
, "PREFIX_ONLY!", ARG_NONE
, ARG_NONE
),
458 /* ACPI 2.0 (new) opcodes */
460 /* 6_e */ /* AML_QWORD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_LITERAL
| AML_NO_ARGS
, "Qword_const", ARGP_QWORD_OP
, ARGI_QWORD_OP
),
461 /* 6_f */ /* AML_VAR_PACKAGE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DATA_TERM
| AML_HAS_ARGS
, "Var_package", ARGP_VAR_PACKAGE_OP
, ARGI_VAR_PACKAGE_OP
),
462 /* 70 */ /* AML_CONCAT_RES_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_r
| AML_HAS_ARGS
, "Concat_res", ARGP_CONCAT_RES_OP
, ARGI_CONCAT_RES_OP
),
463 /* 71 */ /* AML_MOD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_DYADIC2_r
| AML_HAS_ARGS
, "Mod", ARGP_MOD_OP
, ARGI_MOD_OP
),
464 /* 72 */ /* AML_QWORD_FIELD_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CREATE_FIELD
| AML_HAS_ARGS
, "Create_qWord_field", ARGP_QWORD_FIELD_OP
, ARGI_QWORD_FIELD_OP
),
465 /* 73 */ /* AML_TO_BUFFER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "To_buffer", ARGP_TO_BUFFER_OP
, ARGI_TO_BUFFER_OP
),
466 /* 74 */ /* AML_TO_DEC_STR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "To_dec_string", ARGP_TO_DEC_STR_OP
, ARGI_TO_DEC_STR_OP
),
467 /* 75 */ /* AML_TO_HEX_STR_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "To_hex_string", ARGP_TO_HEX_STR_OP
, ARGI_TO_HEX_STR_OP
),
468 /* 76 */ /* AML_TO_INTEGER_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "To_integer", ARGP_TO_INTEGER_OP
, ARGI_TO_INTEGER_OP
),
469 /* 77 */ /* AML_TO_STRING_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "To_string", ARGP_TO_STRING_OP
, ARGI_TO_STRING_OP
),
470 /* 78 */ /* AML_COPY_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "Copy", ARGP_COPY_OP
, ARGI_COPY_OP
),
471 /* 79 */ /* AML_MID_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "Mid", ARGP_MID_OP
, ARGI_MID_OP
),
472 /* 7_a */ /* AML_CONTINUE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_CONTROL
| AML_NO_ARGS
, "Continue", ARGP_CONTINUE_OP
, ARGI_CONTINUE_OP
),
473 /* 7_b */ /* AML_LOAD_TABLE_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "Load_table", ARGP_LOAD_TABLE_OP
, ARGI_LOAD_TABLE_OP
),
474 /* 7_c */ /* AML_DATA_REGION_OP */ OP_INFO_ENTRY (ACPI_OP_TYPE_OPCODE
| OPTYPE_MONADIC2_r
| AML_HAS_ARGS
, "Data_op_region", ARGP_DATA_REGION_OP
, ARGI_DATA_REGION_OP
),
479 * This table is directly indexed by the opcodes, and returns an
480 * index into the table above
483 static u8 aml_short_op_info_index
[256] =
485 /* 0 1 2 3 4 5 6 7 */
486 /* 8 9 A B C D E F */
487 /* 0x00 */ 0x00, 0x01, _UNK
, _UNK
, _UNK
, _UNK
, 0x02, _UNK
,
488 /* 0x08 */ 0x03, _UNK
, 0x04, 0x05, 0x06, 0x07, 0x6E, _UNK
,
489 /* 0x10 */ 0x08, 0x09, 0x0a, 0x6F, 0x0b, _UNK
, _UNK
, _UNK
,
490 /* 0x18 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
491 /* 0x20 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
492 /* 0x28 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, 0x63, _PFX
, _PFX
,
493 /* 0x30 */ 0x67, 0x66, 0x68, 0x65, 0x69, 0x64, 0x6A, _UNK
,
494 /* 0x38 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
495 /* 0x40 */ _UNK
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
,
496 /* 0x48 */ _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
,
497 /* 0x50 */ _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
, _ASC
,
498 /* 0x58 */ _ASC
, _ASC
, _ASC
, _UNK
, _PFX
, _UNK
, _PFX
, _ASC
,
499 /* 0x60 */ 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13,
500 /* 0x68 */ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, _UNK
,
501 /* 0x70 */ 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
502 /* 0x78 */ 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a,
503 /* 0x80 */ 0x2b, 0x2c, 0x2d, 0x2e, 0x70, 0x71, 0x2f, 0x30,
504 /* 0x88 */ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x72,
505 /* 0x90 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x73, 0x74,
506 /* 0x98 */ 0x75, 0x76, _UNK
, _UNK
, 0x77, 0x78, 0x79, 0x7A,
507 /* 0xA0 */ 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x60, 0x61,
508 /* 0xA8 */ 0x62, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
509 /* 0xB0 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
510 /* 0xB8 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
511 /* 0xC0 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
512 /* 0xC8 */ _UNK
, _UNK
, _UNK
, _UNK
, 0x44, _UNK
, _UNK
, _UNK
,
513 /* 0xD0 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
514 /* 0xD8 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
515 /* 0xE0 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
516 /* 0xE8 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
517 /* 0xF0 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
518 /* 0xF8 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, 0x45,
522 static u8 aml_long_op_info_index
[NUM_EXTENDED_OPCODE
] =
524 /* 0 1 2 3 4 5 6 7 */
525 /* 8 9 A B C D E F */
526 /* 0x00 */ _UNK
, 0x46, 0x47, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
527 /* 0x08 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
528 /* 0x10 */ _UNK
, _UNK
, 0x48, 0x49, _UNK
, _UNK
, _UNK
, _UNK
,
529 /* 0x18 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, 0x7B,
530 /* 0x20 */ 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51,
531 /* 0x28 */ 0x52, 0x53, 0x54, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
532 /* 0x30 */ 0x55, 0x56, 0x57, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
533 /* 0x38 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
534 /* 0x40 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
535 /* 0x48 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
536 /* 0x50 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
537 /* 0x58 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
538 /* 0x60 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
539 /* 0x68 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
540 /* 0x70 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
541 /* 0x78 */ _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
, _UNK
,
542 /* 0x80 */ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
547 /*******************************************************************************
549 * FUNCTION: Acpi_ps_get_opcode_info
551 * PARAMETERS: Opcode - The AML opcode
553 * RETURN: A pointer to the info about the opcode. NULL if the opcode was
554 * not found in the table.
556 * DESCRIPTION: Find AML opcode description based on the opcode.
557 * NOTE: This procedure must ALWAYS return a valid pointer!
559 ******************************************************************************/
562 acpi_ps_get_opcode_info (
565 ACPI_OPCODE_INFO
*op_info
;
570 /* Split the 16-bit opcode into separate bytes */
572 upper_opcode
= (u8
) (opcode
>> 8);
573 lower_opcode
= (u8
) opcode
;
575 /* Default is "unknown opcode" */
577 op_info
= &aml_op_info
[_UNK
];
581 * Detect normal 8-bit opcode or extended 16-bit opcode
584 switch (upper_opcode
) {
587 /* Simple (8-bit) opcode: 0-255, can't index beyond table */
589 op_info
= &aml_op_info
[aml_short_op_info_index
[lower_opcode
]];
595 /* Extended (16-bit, prefix+opcode) opcode */
597 if (lower_opcode
<= MAX_EXTENDED_OPCODE
) {
598 op_info
= &aml_op_info
[aml_long_op_info_index
[lower_opcode
]];
605 /* This case is for the bogus opcodes LNOTEQUAL, LLESSEQUAL, LGREATEREQUAL */
606 /* TBD: [Investigate] remove this case? */
617 /* Get the Op info pointer for this opcode */
623 /*******************************************************************************
625 * FUNCTION: Acpi_ps_get_opcode_name
627 * PARAMETERS: Opcode - The AML opcode
629 * RETURN: A pointer to the name of the opcode (ASCII String)
630 * Note: Never returns NULL.
632 * DESCRIPTION: Translate an opcode into a human-readable string
634 ******************************************************************************/
637 acpi_ps_get_opcode_name (
640 ACPI_OPCODE_INFO
*op
;
643 op
= acpi_ps_get_opcode_info (opcode
);
645 /* Always guaranteed to return a valid pointer */
647 return ("AE_NOT_CONFIGURED");