630 lines · c
1// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.02/******************************************************************************3 *4 * Module Name: psopcode - Parser/Interpreter opcode information table5 *6 * Copyright (C) 2000 - 2023, Intel Corp.7 *8 *****************************************************************************/9 10#include <acpi/acpi.h>11#include "accommon.h"12#include "acopcode.h"13#include "amlcode.h"14 15#define _COMPONENT ACPI_PARSER16ACPI_MODULE_NAME("psopcode")17 18/*******************************************************************************19 *20 * NAME: acpi_gbl_aml_op_info21 *22 * DESCRIPTION: Opcode table. Each entry contains <opcode, type, name, operands>23 * The name is a simple ascii string, the operand specifier is an24 * ascii string with one letter per operand. The letter specifies25 * the operand type.26 *27 ******************************************************************************/28/*29 * Summary of opcode types/flags30 *31 32 Opcodes that have associated namespace objects (AML_NSOBJECT flag)33 34 AML_SCOPE_OP35 AML_DEVICE_OP36 AML_THERMAL_ZONE_OP37 AML_METHOD_OP38 AML_POWER_RESOURCE_OP39 AML_PROCESSOR_OP40 AML_FIELD_OP41 AML_INDEX_FIELD_OP42 AML_BANK_FIELD_OP43 AML_NAME_OP44 AML_ALIAS_OP45 AML_MUTEX_OP46 AML_EVENT_OP47 AML_REGION_OP48 AML_CREATE_FIELD_OP49 AML_CREATE_BIT_FIELD_OP50 AML_CREATE_BYTE_FIELD_OP51 AML_CREATE_WORD_FIELD_OP52 AML_CREATE_DWORD_FIELD_OP53 AML_CREATE_QWORD_FIELD_OP54 AML_INT_NAMEDFIELD_OP55 AML_INT_METHODCALL_OP56 AML_INT_NAMEPATH_OP57 58 Opcodes that are "namespace" opcodes (AML_NSOPCODE flag)59 60 AML_SCOPE_OP61 AML_DEVICE_OP62 AML_THERMAL_ZONE_OP63 AML_METHOD_OP64 AML_POWER_RESOURCE_OP65 AML_PROCESSOR_OP66 AML_FIELD_OP67 AML_INDEX_FIELD_OP68 AML_BANK_FIELD_OP69 AML_NAME_OP70 AML_ALIAS_OP71 AML_MUTEX_OP72 AML_EVENT_OP73 AML_REGION_OP74 AML_INT_NAMEDFIELD_OP75 76 Opcodes that have an associated namespace node (AML_NSNODE flag)77 78 AML_SCOPE_OP79 AML_DEVICE_OP80 AML_THERMAL_ZONE_OP81 AML_METHOD_OP82 AML_POWER_RESOURCE_OP83 AML_PROCESSOR_OP84 AML_NAME_OP85 AML_ALIAS_OP86 AML_MUTEX_OP87 AML_EVENT_OP88 AML_REGION_OP89 AML_CREATE_FIELD_OP90 AML_CREATE_BIT_FIELD_OP91 AML_CREATE_BYTE_FIELD_OP92 AML_CREATE_WORD_FIELD_OP93 AML_CREATE_DWORD_FIELD_OP94 AML_CREATE_QWORD_FIELD_OP95 AML_INT_NAMEDFIELD_OP96 AML_INT_METHODCALL_OP97 AML_INT_NAMEPATH_OP98 99 Opcodes that define named ACPI objects (AML_NAMED flag)100 101 AML_SCOPE_OP102 AML_DEVICE_OP103 AML_THERMAL_ZONE_OP104 AML_METHOD_OP105 AML_POWER_RESOURCE_OP106 AML_PROCESSOR_OP107 AML_NAME_OP108 AML_ALIAS_OP109 AML_MUTEX_OP110 AML_EVENT_OP111 AML_REGION_OP112 AML_INT_NAMEDFIELD_OP113 114 Opcodes that contain executable AML as part of the definition that115 must be deferred until needed116 117 AML_METHOD_OP118 AML_VARIABLE_PACKAGE_OP119 AML_CREATE_FIELD_OP120 AML_CREATE_BIT_FIELD_OP121 AML_CREATE_BYTE_FIELD_OP122 AML_CREATE_WORD_FIELD_OP123 AML_CREATE_DWORD_FIELD_OP124 AML_CREATE_QWORD_FIELD_OP125 AML_REGION_OP126 AML_BUFFER_OP127 128 Field opcodes129 130 AML_CREATE_FIELD_OP131 AML_FIELD_OP132 AML_INDEX_FIELD_OP133 AML_BANK_FIELD_OP134 135 Field "Create" opcodes136 137 AML_CREATE_FIELD_OP138 AML_CREATE_BIT_FIELD_OP139 AML_CREATE_BYTE_FIELD_OP140 AML_CREATE_WORD_FIELD_OP141 AML_CREATE_DWORD_FIELD_OP142 AML_CREATE_QWORD_FIELD_OP143 144 ******************************************************************************/145/*146 * Master Opcode information table. A summary of everything we know about each147 * opcode, all in one place.148 */149const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES] = {150/*! [Begin] no source code translation */151/* Index Name Parser Args Interpreter Args ObjectType Class Type Flags */152 153/* 00 */ ACPI_OP("Zero", ARGP_ZERO_OP, ARGI_ZERO_OP, ACPI_TYPE_INTEGER,154 AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),155/* 01 */ ACPI_OP("One", ARGP_ONE_OP, ARGI_ONE_OP, ACPI_TYPE_INTEGER,156 AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),157/* 02 */ ACPI_OP("Alias", ARGP_ALIAS_OP, ARGI_ALIAS_OP,158 ACPI_TYPE_LOCAL_ALIAS, AML_CLASS_NAMED_OBJECT,159 AML_TYPE_NAMED_SIMPLE,160 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |161 AML_NSNODE | AML_NAMED),162/* 03 */ ACPI_OP("Name", ARGP_NAME_OP, ARGI_NAME_OP, ACPI_TYPE_ANY,163 AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX,164 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |165 AML_NSNODE | AML_NAMED),166/* 04 */ ACPI_OP("ByteConst", ARGP_BYTE_OP, ARGI_BYTE_OP,167 ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT,168 AML_TYPE_LITERAL, AML_CONSTANT),169/* 05 */ ACPI_OP("WordConst", ARGP_WORD_OP, ARGI_WORD_OP,170 ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT,171 AML_TYPE_LITERAL, AML_CONSTANT),172/* 06 */ ACPI_OP("DwordConst", ARGP_DWORD_OP, ARGI_DWORD_OP,173 ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT,174 AML_TYPE_LITERAL, AML_CONSTANT),175/* 07 */ ACPI_OP("String", ARGP_STRING_OP, ARGI_STRING_OP,176 ACPI_TYPE_STRING, AML_CLASS_ARGUMENT,177 AML_TYPE_LITERAL, AML_CONSTANT),178/* 08 */ ACPI_OP("Scope", ARGP_SCOPE_OP, ARGI_SCOPE_OP,179 ACPI_TYPE_LOCAL_SCOPE, AML_CLASS_NAMED_OBJECT,180 AML_TYPE_NAMED_NO_OBJ,181 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |182 AML_NSNODE | AML_NAMED),183/* 09 */ ACPI_OP("Buffer", ARGP_BUFFER_OP, ARGI_BUFFER_OP,184 ACPI_TYPE_BUFFER, AML_CLASS_CREATE,185 AML_TYPE_CREATE_OBJECT,186 AML_HAS_ARGS | AML_DEFER | AML_CONSTANT),187/* 0A */ ACPI_OP("Package", ARGP_PACKAGE_OP, ARGI_PACKAGE_OP,188 ACPI_TYPE_PACKAGE, AML_CLASS_CREATE,189 AML_TYPE_CREATE_OBJECT,190 AML_HAS_ARGS | AML_DEFER | AML_CONSTANT),191/* 0B */ ACPI_OP("Method", ARGP_METHOD_OP, ARGI_METHOD_OP,192 ACPI_TYPE_METHOD, AML_CLASS_NAMED_OBJECT,193 AML_TYPE_NAMED_COMPLEX,194 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |195 AML_NSNODE | AML_NAMED | AML_DEFER),196/* 0C */ ACPI_OP("Local0", ARGP_LOCAL0, ARGI_LOCAL0,197 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,198 AML_TYPE_LOCAL_VARIABLE, 0),199/* 0D */ ACPI_OP("Local1", ARGP_LOCAL1, ARGI_LOCAL1,200 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,201 AML_TYPE_LOCAL_VARIABLE, 0),202/* 0E */ ACPI_OP("Local2", ARGP_LOCAL2, ARGI_LOCAL2,203 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,204 AML_TYPE_LOCAL_VARIABLE, 0),205/* 0F */ ACPI_OP("Local3", ARGP_LOCAL3, ARGI_LOCAL3,206 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,207 AML_TYPE_LOCAL_VARIABLE, 0),208/* 10 */ ACPI_OP("Local4", ARGP_LOCAL4, ARGI_LOCAL4,209 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,210 AML_TYPE_LOCAL_VARIABLE, 0),211/* 11 */ ACPI_OP("Local5", ARGP_LOCAL5, ARGI_LOCAL5,212 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,213 AML_TYPE_LOCAL_VARIABLE, 0),214/* 12 */ ACPI_OP("Local6", ARGP_LOCAL6, ARGI_LOCAL6,215 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,216 AML_TYPE_LOCAL_VARIABLE, 0),217/* 13 */ ACPI_OP("Local7", ARGP_LOCAL7, ARGI_LOCAL7,218 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,219 AML_TYPE_LOCAL_VARIABLE, 0),220/* 14 */ ACPI_OP("Arg0", ARGP_ARG0, ARGI_ARG0,221 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,222 AML_TYPE_METHOD_ARGUMENT, 0),223/* 15 */ ACPI_OP("Arg1", ARGP_ARG1, ARGI_ARG1,224 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,225 AML_TYPE_METHOD_ARGUMENT, 0),226/* 16 */ ACPI_OP("Arg2", ARGP_ARG2, ARGI_ARG2,227 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,228 AML_TYPE_METHOD_ARGUMENT, 0),229/* 17 */ ACPI_OP("Arg3", ARGP_ARG3, ARGI_ARG3,230 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,231 AML_TYPE_METHOD_ARGUMENT, 0),232/* 18 */ ACPI_OP("Arg4", ARGP_ARG4, ARGI_ARG4,233 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,234 AML_TYPE_METHOD_ARGUMENT, 0),235/* 19 */ ACPI_OP("Arg5", ARGP_ARG5, ARGI_ARG5,236 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,237 AML_TYPE_METHOD_ARGUMENT, 0),238/* 1A */ ACPI_OP("Arg6", ARGP_ARG6, ARGI_ARG6,239 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,240 AML_TYPE_METHOD_ARGUMENT, 0),241/* 1B */ ACPI_OP("Store", ARGP_STORE_OP, ARGI_STORE_OP, ACPI_TYPE_ANY,242 AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R,243 AML_FLAGS_EXEC_1A_1T_1R),244/* 1C */ ACPI_OP("RefOf", ARGP_REF_OF_OP, ARGI_REF_OF_OP, ACPI_TYPE_ANY,245 AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R,246 AML_FLAGS_EXEC_1A_0T_1R),247/* 1D */ ACPI_OP("Add", ARGP_ADD_OP, ARGI_ADD_OP, ACPI_TYPE_ANY,248 AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,249 AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),250/* 1E */ ACPI_OP("Concatenate", ARGP_CONCAT_OP, ARGI_CONCAT_OP,251 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,252 AML_TYPE_EXEC_2A_1T_1R,253 AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),254/* 1F */ ACPI_OP("Subtract", ARGP_SUBTRACT_OP, ARGI_SUBTRACT_OP,255 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,256 AML_TYPE_EXEC_2A_1T_1R,257 AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),258/* 20 */ ACPI_OP("Increment", ARGP_INCREMENT_OP, ARGI_INCREMENT_OP,259 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,260 AML_TYPE_EXEC_1A_0T_1R,261 AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),262/* 21 */ ACPI_OP("Decrement", ARGP_DECREMENT_OP, ARGI_DECREMENT_OP,263 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,264 AML_TYPE_EXEC_1A_0T_1R,265 AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),266/* 22 */ ACPI_OP("Multiply", ARGP_MULTIPLY_OP, ARGI_MULTIPLY_OP,267 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,268 AML_TYPE_EXEC_2A_1T_1R,269 AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),270/* 23 */ ACPI_OP("Divide", ARGP_DIVIDE_OP, ARGI_DIVIDE_OP,271 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,272 AML_TYPE_EXEC_2A_2T_1R,273 AML_FLAGS_EXEC_2A_2T_1R | AML_CONSTANT),274/* 24 */ ACPI_OP("ShiftLeft", ARGP_SHIFT_LEFT_OP, ARGI_SHIFT_LEFT_OP,275 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,276 AML_TYPE_EXEC_2A_1T_1R,277 AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),278/* 25 */ ACPI_OP("ShiftRight", ARGP_SHIFT_RIGHT_OP, ARGI_SHIFT_RIGHT_OP,279 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,280 AML_TYPE_EXEC_2A_1T_1R,281 AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),282/* 26 */ ACPI_OP("And", ARGP_BIT_AND_OP, ARGI_BIT_AND_OP, ACPI_TYPE_ANY,283 AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,284 AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),285/* 27 */ ACPI_OP("NAnd", ARGP_BIT_NAND_OP, ARGI_BIT_NAND_OP,286 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,287 AML_TYPE_EXEC_2A_1T_1R,288 AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),289/* 28 */ ACPI_OP("Or", ARGP_BIT_OR_OP, ARGI_BIT_OR_OP, ACPI_TYPE_ANY,290 AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,291 AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),292/* 29 */ ACPI_OP("NOr", ARGP_BIT_NOR_OP, ARGI_BIT_NOR_OP, ACPI_TYPE_ANY,293 AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,294 AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),295/* 2A */ ACPI_OP("XOr", ARGP_BIT_XOR_OP, ARGI_BIT_XOR_OP, ACPI_TYPE_ANY,296 AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,297 AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT),298/* 2B */ ACPI_OP("Not", ARGP_BIT_NOT_OP, ARGI_BIT_NOT_OP, ACPI_TYPE_ANY,299 AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R,300 AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),301/* 2C */ ACPI_OP("FindSetLeftBit", ARGP_FIND_SET_LEFT_BIT_OP,302 ARGI_FIND_SET_LEFT_BIT_OP, ACPI_TYPE_ANY,303 AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R,304 AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),305/* 2D */ ACPI_OP("FindSetRightBit", ARGP_FIND_SET_RIGHT_BIT_OP,306 ARGI_FIND_SET_RIGHT_BIT_OP, ACPI_TYPE_ANY,307 AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R,308 AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),309/* 2E */ ACPI_OP("DerefOf", ARGP_DEREF_OF_OP, ARGI_DEREF_OF_OP,310 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,311 AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R),312/* 2F */ ACPI_OP("Notify", ARGP_NOTIFY_OP, ARGI_NOTIFY_OP,313 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,314 AML_TYPE_EXEC_2A_0T_0R, AML_FLAGS_EXEC_2A_0T_0R),315/* 30 */ ACPI_OP("SizeOf", ARGP_SIZE_OF_OP, ARGI_SIZE_OF_OP,316 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,317 AML_TYPE_EXEC_1A_0T_1R,318 AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE),319/* 31 */ ACPI_OP("Index", ARGP_INDEX_OP, ARGI_INDEX_OP, ACPI_TYPE_ANY,320 AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,321 AML_FLAGS_EXEC_2A_1T_1R),322/* 32 */ ACPI_OP("Match", ARGP_MATCH_OP, ARGI_MATCH_OP, ACPI_TYPE_ANY,323 AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R,324 AML_FLAGS_EXEC_6A_0T_1R | AML_CONSTANT),325/* 33 */ ACPI_OP("CreateDWordField", ARGP_CREATE_DWORD_FIELD_OP,326 ARGI_CREATE_DWORD_FIELD_OP,327 ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE,328 AML_TYPE_CREATE_FIELD,329 AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE |330 AML_DEFER | AML_CREATE),331/* 34 */ ACPI_OP("CreateWordField", ARGP_CREATE_WORD_FIELD_OP,332 ARGI_CREATE_WORD_FIELD_OP,333 ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE,334 AML_TYPE_CREATE_FIELD,335 AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE |336 AML_DEFER | AML_CREATE),337/* 35 */ ACPI_OP("CreateByteField", ARGP_CREATE_BYTE_FIELD_OP,338 ARGI_CREATE_BYTE_FIELD_OP,339 ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE,340 AML_TYPE_CREATE_FIELD,341 AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE |342 AML_DEFER | AML_CREATE),343/* 36 */ ACPI_OP("CreateBitField", ARGP_CREATE_BIT_FIELD_OP,344 ARGI_CREATE_BIT_FIELD_OP,345 ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE,346 AML_TYPE_CREATE_FIELD,347 AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE |348 AML_DEFER | AML_CREATE),349/* 37 */ ACPI_OP("ObjectType", ARGP_OBJECT_TYPE_OP, ARGI_OBJECT_TYPE_OP,350 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,351 AML_TYPE_EXEC_1A_0T_1R,352 AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE),353/* 38 */ ACPI_OP("LAnd", ARGP_LAND_OP, ARGI_LAND_OP, ACPI_TYPE_ANY,354 AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R,355 AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC |356 AML_CONSTANT),357/* 39 */ ACPI_OP("LOr", ARGP_LOR_OP, ARGI_LOR_OP, ACPI_TYPE_ANY,358 AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R,359 AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC |360 AML_CONSTANT),361/* 3A */ ACPI_OP("LNot", ARGP_LNOT_OP, ARGI_LNOT_OP, ACPI_TYPE_ANY,362 AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R,363 AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT),364/* 3B */ ACPI_OP("LEqual", ARGP_LEQUAL_OP, ARGI_LEQUAL_OP,365 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,366 AML_TYPE_EXEC_2A_0T_1R,367 AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),368/* 3C */ ACPI_OP("LGreater", ARGP_LGREATER_OP, ARGI_LGREATER_OP,369 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,370 AML_TYPE_EXEC_2A_0T_1R,371 AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),372/* 3D */ ACPI_OP("LLess", ARGP_LLESS_OP, ARGI_LLESS_OP, ACPI_TYPE_ANY,373 AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R,374 AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT),375/* 3E */ ACPI_OP("If", ARGP_IF_OP, ARGI_IF_OP, ACPI_TYPE_ANY,376 AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),377/* 3F */ ACPI_OP("Else", ARGP_ELSE_OP, ARGI_ELSE_OP, ACPI_TYPE_ANY,378 AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),379/* 40 */ ACPI_OP("While", ARGP_WHILE_OP, ARGI_WHILE_OP, ACPI_TYPE_ANY,380 AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS),381/* 41 */ ACPI_OP("Noop", ARGP_NOOP_OP, ARGI_NOOP_OP, ACPI_TYPE_ANY,382 AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),383/* 42 */ ACPI_OP("Return", ARGP_RETURN_OP, ARGI_RETURN_OP,384 ACPI_TYPE_ANY, AML_CLASS_CONTROL,385 AML_TYPE_CONTROL, AML_HAS_ARGS),386/* 43 */ ACPI_OP("Break", ARGP_BREAK_OP, ARGI_BREAK_OP, ACPI_TYPE_ANY,387 AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),388/* 44 */ ACPI_OP("BreakPoint", ARGP_BREAK_POINT_OP, ARGI_BREAK_POINT_OP,389 ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),390/* 45 */ ACPI_OP("Ones", ARGP_ONES_OP, ARGI_ONES_OP, ACPI_TYPE_INTEGER,391 AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT),392 393/* Prefixed opcodes (Two-byte opcodes with a prefix op) */394 395/* 46 */ ACPI_OP("Mutex", ARGP_MUTEX_OP, ARGI_MUTEX_OP, ACPI_TYPE_MUTEX,396 AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE,397 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |398 AML_NSNODE | AML_NAMED),399/* 47 */ ACPI_OP("Event", ARGP_EVENT_OP, ARGI_EVENT_OP, ACPI_TYPE_EVENT,400 AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE,401 AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),402/* 48 */ ACPI_OP("CondRefOf", ARGP_COND_REF_OF_OP, ARGI_COND_REF_OF_OP,403 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,404 AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),405/* 49 */ ACPI_OP("CreateField", ARGP_CREATE_FIELD_OP,406 ARGI_CREATE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD,407 AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD,408 AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE |409 AML_DEFER | AML_FIELD | AML_CREATE),410/* 4A */ ACPI_OP("Load", ARGP_LOAD_OP, ARGI_LOAD_OP, ACPI_TYPE_ANY,411 AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R,412 AML_FLAGS_EXEC_1A_1T_1R),413/* 4B */ ACPI_OP("Stall", ARGP_STALL_OP, ARGI_STALL_OP, ACPI_TYPE_ANY,414 AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R,415 AML_FLAGS_EXEC_1A_0T_0R),416/* 4C */ ACPI_OP("Sleep", ARGP_SLEEP_OP, ARGI_SLEEP_OP, ACPI_TYPE_ANY,417 AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R,418 AML_FLAGS_EXEC_1A_0T_0R),419/* 4D */ ACPI_OP("Acquire", ARGP_ACQUIRE_OP, ARGI_ACQUIRE_OP,420 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,421 AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R),422/* 4E */ ACPI_OP("Signal", ARGP_SIGNAL_OP, ARGI_SIGNAL_OP,423 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,424 AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),425/* 4F */ ACPI_OP("Wait", ARGP_WAIT_OP, ARGI_WAIT_OP, ACPI_TYPE_ANY,426 AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R,427 AML_FLAGS_EXEC_2A_0T_1R),428/* 50 */ ACPI_OP("Reset", ARGP_RESET_OP, ARGI_RESET_OP, ACPI_TYPE_ANY,429 AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R,430 AML_FLAGS_EXEC_1A_0T_0R),431/* 51 */ ACPI_OP("Release", ARGP_RELEASE_OP, ARGI_RELEASE_OP,432 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,433 AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),434/* 52 */ ACPI_OP("FromBCD", ARGP_FROM_BCD_OP, ARGI_FROM_BCD_OP,435 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,436 AML_TYPE_EXEC_1A_1T_1R,437 AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),438/* 53 */ ACPI_OP("ToBCD", ARGP_TO_BCD_OP, ARGI_TO_BCD_OP, ACPI_TYPE_ANY,439 AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R,440 AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),441/* 54 */ ACPI_OP("Unload", ARGP_UNLOAD_OP, ARGI_UNLOAD_OP,442 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,443 AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R),444/* 55 */ ACPI_OP("Revision", ARGP_REVISION_OP, ARGI_REVISION_OP,445 ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT,446 AML_TYPE_CONSTANT, 0),447/* 56 */ ACPI_OP("Debug", ARGP_DEBUG_OP, ARGI_DEBUG_OP,448 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,449 AML_TYPE_CONSTANT, 0),450/* 57 */ ACPI_OP("Fatal", ARGP_FATAL_OP, ARGI_FATAL_OP, ACPI_TYPE_ANY,451 AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_0T_0R,452 AML_FLAGS_EXEC_3A_0T_0R),453/* 58 */ ACPI_OP("OperationRegion", ARGP_REGION_OP, ARGI_REGION_OP,454 ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT,455 AML_TYPE_NAMED_COMPLEX,456 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |457 AML_NSNODE | AML_NAMED | AML_DEFER),458/* 59 */ ACPI_OP("Field", ARGP_FIELD_OP, ARGI_FIELD_OP, ACPI_TYPE_ANY,459 AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD,460 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |461 AML_FIELD),462/* 5A */ ACPI_OP("Device", ARGP_DEVICE_OP, ARGI_DEVICE_OP,463 ACPI_TYPE_DEVICE, AML_CLASS_NAMED_OBJECT,464 AML_TYPE_NAMED_NO_OBJ,465 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |466 AML_NSNODE | AML_NAMED),467/* 5B */ ACPI_OP("Processor", ARGP_PROCESSOR_OP, ARGI_PROCESSOR_OP,468 ACPI_TYPE_PROCESSOR, AML_CLASS_NAMED_OBJECT,469 AML_TYPE_NAMED_SIMPLE,470 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |471 AML_NSNODE | AML_NAMED),472/* 5C */ ACPI_OP("PowerResource", ARGP_POWER_RES_OP, ARGI_POWER_RES_OP,473 ACPI_TYPE_POWER, AML_CLASS_NAMED_OBJECT,474 AML_TYPE_NAMED_SIMPLE,475 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |476 AML_NSNODE | AML_NAMED),477/* 5D */ ACPI_OP("ThermalZone", ARGP_THERMAL_ZONE_OP,478 ARGI_THERMAL_ZONE_OP, ACPI_TYPE_THERMAL,479 AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ,480 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |481 AML_NSNODE | AML_NAMED),482/* 5E */ ACPI_OP("IndexField", ARGP_INDEX_FIELD_OP, ARGI_INDEX_FIELD_OP,483 ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT,484 AML_TYPE_NAMED_FIELD,485 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |486 AML_FIELD),487/* 5F */ ACPI_OP("BankField", ARGP_BANK_FIELD_OP, ARGI_BANK_FIELD_OP,488 ACPI_TYPE_LOCAL_BANK_FIELD,489 AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD,490 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |491 AML_FIELD | AML_DEFER),492 493/* Internal opcodes that map to invalid AML opcodes */494 495/* 60 */ ACPI_OP("LNotEqual", ARGP_LNOTEQUAL_OP, ARGI_LNOTEQUAL_OP,496 ACPI_TYPE_ANY, AML_CLASS_INTERNAL,497 AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),498/* 61 */ ACPI_OP("LLessEqual", ARGP_LLESSEQUAL_OP, ARGI_LLESSEQUAL_OP,499 ACPI_TYPE_ANY, AML_CLASS_INTERNAL,500 AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT),501/* 62 */ ACPI_OP("LGreaterEqual", ARGP_LGREATEREQUAL_OP,502 ARGI_LGREATEREQUAL_OP, ACPI_TYPE_ANY,503 AML_CLASS_INTERNAL, AML_TYPE_BOGUS,504 AML_HAS_ARGS | AML_CONSTANT),505/* 63 */ ACPI_OP("-NamePath-", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP,506 ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT,507 AML_TYPE_LITERAL, AML_NSOBJECT | AML_NSNODE),508/* 64 */ ACPI_OP("-MethodCall-", ARGP_METHODCALL_OP, ARGI_METHODCALL_OP,509 ACPI_TYPE_METHOD, AML_CLASS_METHOD_CALL,510 AML_TYPE_METHOD_CALL,511 AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE),512/* 65 */ ACPI_OP("-ByteList-", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP,513 ACPI_TYPE_ANY, AML_CLASS_ARGUMENT,514 AML_TYPE_LITERAL, 0),515/* 66 */ ACPI_OP("-ReservedField-", ARGP_RESERVEDFIELD_OP,516 ARGI_RESERVEDFIELD_OP, ACPI_TYPE_ANY,517 AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),518/* 67 */ ACPI_OP("-NamedField-", ARGP_NAMEDFIELD_OP, ARGI_NAMEDFIELD_OP,519 ACPI_TYPE_ANY, AML_CLASS_INTERNAL,520 AML_TYPE_BOGUS,521 AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED),522/* 68 */ ACPI_OP("-AccessField-", ARGP_ACCESSFIELD_OP,523 ARGI_ACCESSFIELD_OP, ACPI_TYPE_ANY,524 AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),525/* 69 */ ACPI_OP("-StaticString", ARGP_STATICSTRING_OP,526 ARGI_STATICSTRING_OP, ACPI_TYPE_ANY,527 AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),528/* 6A */ ACPI_OP("-Return Value-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY,529 AML_CLASS_RETURN_VALUE, AML_TYPE_RETURN,530 AML_HAS_ARGS | AML_HAS_RETVAL),531/* 6B */ ACPI_OP("-UNKNOWN_OP-", ARG_NONE, ARG_NONE, ACPI_TYPE_INVALID,532 AML_CLASS_UNKNOWN, AML_TYPE_BOGUS, AML_HAS_ARGS),533/* 6C */ ACPI_OP("-ASCII_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY,534 AML_CLASS_ASCII, AML_TYPE_BOGUS, AML_HAS_ARGS),535/* 6D */ ACPI_OP("-PREFIX_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY,536 AML_CLASS_PREFIX, AML_TYPE_BOGUS, AML_HAS_ARGS),537 538/* ACPI 2.0 opcodes */539 540/* 6E */ ACPI_OP("QwordConst", ARGP_QWORD_OP, ARGI_QWORD_OP,541 ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT,542 AML_TYPE_LITERAL, AML_CONSTANT),543 /* 6F */ ACPI_OP("Package", /* Var */ ARGP_VAR_PACKAGE_OP,544 ARGI_VAR_PACKAGE_OP, ACPI_TYPE_PACKAGE,545 AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT,546 AML_HAS_ARGS | AML_DEFER),547/* 70 */ ACPI_OP("ConcatenateResTemplate", ARGP_CONCAT_RES_OP,548 ARGI_CONCAT_RES_OP, ACPI_TYPE_ANY,549 AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,550 AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),551/* 71 */ ACPI_OP("Mod", ARGP_MOD_OP, ARGI_MOD_OP, ACPI_TYPE_ANY,552 AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R,553 AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),554/* 72 */ ACPI_OP("CreateQWordField", ARGP_CREATE_QWORD_FIELD_OP,555 ARGI_CREATE_QWORD_FIELD_OP,556 ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE,557 AML_TYPE_CREATE_FIELD,558 AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE |559 AML_DEFER | AML_CREATE),560/* 73 */ ACPI_OP("ToBuffer", ARGP_TO_BUFFER_OP, ARGI_TO_BUFFER_OP,561 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,562 AML_TYPE_EXEC_1A_1T_1R,563 AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),564/* 74 */ ACPI_OP("ToDecimalString", ARGP_TO_DEC_STR_OP,565 ARGI_TO_DEC_STR_OP, ACPI_TYPE_ANY,566 AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R,567 AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),568/* 75 */ ACPI_OP("ToHexString", ARGP_TO_HEX_STR_OP, ARGI_TO_HEX_STR_OP,569 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,570 AML_TYPE_EXEC_1A_1T_1R,571 AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),572/* 76 */ ACPI_OP("ToInteger", ARGP_TO_INTEGER_OP, ARGI_TO_INTEGER_OP,573 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,574 AML_TYPE_EXEC_1A_1T_1R,575 AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT),576/* 77 */ ACPI_OP("ToString", ARGP_TO_STRING_OP, ARGI_TO_STRING_OP,577 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,578 AML_TYPE_EXEC_2A_1T_1R,579 AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT),580/* 78 */ ACPI_OP("CopyObject", ARGP_COPY_OP, ARGI_COPY_OP,581 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,582 AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R),583/* 79 */ ACPI_OP("Mid", ARGP_MID_OP, ARGI_MID_OP, ACPI_TYPE_ANY,584 AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_1T_1R,585 AML_FLAGS_EXEC_3A_1T_1R | AML_CONSTANT),586/* 7A */ ACPI_OP("Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP,587 ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0),588/* 7B */ ACPI_OP("LoadTable", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP,589 ACPI_TYPE_ANY, AML_CLASS_EXECUTE,590 AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R),591/* 7C */ ACPI_OP("DataTableRegion", ARGP_DATA_REGION_OP,592 ARGI_DATA_REGION_OP, ACPI_TYPE_REGION,593 AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX,594 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |595 AML_NSNODE | AML_NAMED | AML_DEFER),596/* 7D */ ACPI_OP("[EvalSubTree]", ARGP_SCOPE_OP, ARGI_SCOPE_OP,597 ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT,598 AML_TYPE_NAMED_NO_OBJ,599 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |600 AML_NSNODE),601 602/* ACPI 3.0 opcodes */603 604/* 7E */ ACPI_OP("Timer", ARGP_TIMER_OP, ARGI_TIMER_OP, ACPI_TYPE_ANY,605 AML_CLASS_EXECUTE, AML_TYPE_EXEC_0A_0T_1R,606 AML_FLAGS_EXEC_0A_0T_1R | AML_NO_OPERAND_RESOLVE),607 608/* ACPI 5.0 opcodes */609 610/* 7F */ ACPI_OP("-ConnectField-", ARGP_CONNECTFIELD_OP,611 ARGI_CONNECTFIELD_OP, ACPI_TYPE_ANY,612 AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS),613/* 80 */ ACPI_OP("-ExtAccessField-", ARGP_CONNECTFIELD_OP,614 ARGI_CONNECTFIELD_OP, ACPI_TYPE_ANY,615 AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0),616 617/* ACPI 6.0 opcodes */618 619/* 81 */ ACPI_OP("External", ARGP_EXTERNAL_OP, ARGI_EXTERNAL_OP,620 ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT,621 AML_TYPE_NAMED_SIMPLE,622 AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE |623 AML_NSNODE | AML_NAMED),624/* 82 */ ACPI_OP("Comment", ARGP_COMMENT_OP, ARGI_COMMENT_OP,625 ACPI_TYPE_STRING, AML_CLASS_ARGUMENT,626 AML_TYPE_LITERAL, AML_CONSTANT)627 628/*! [End] no source code translation !*/629};630