^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Module Name: psopinfo - AML opcode information functions and dispatch tables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Copyright (C) 2000 - 2020, Intel Corp.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) *****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <acpi/acpi.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include "accommon.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include "acparser.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include "acopcode.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include "amlcode.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define _COMPONENT ACPI_PARSER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) ACPI_MODULE_NAME("psopinfo")
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) static const u8 acpi_gbl_argument_count[] =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) { 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 6 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) * FUNCTION: acpi_ps_get_opcode_info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) * PARAMETERS: opcode - The AML opcode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) * RETURN: A pointer to the info about the opcode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) * DESCRIPTION: Find AML opcode description based on the opcode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) * NOTE: This procedure must ALWAYS return a valid pointer!
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) const struct acpi_opcode_info *acpi_ps_get_opcode_info(u16 opcode)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #ifdef ACPI_DEBUG_OUTPUT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) const char *opcode_name = "Unknown AML opcode";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) ACPI_FUNCTION_NAME(ps_get_opcode_info);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) * Detect normal 8-bit opcode or extended 16-bit opcode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) if (!(opcode & 0xFF00)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) /* Simple (8-bit) opcode: 0-255, can't index beyond table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) return (&acpi_gbl_aml_op_info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) [acpi_gbl_short_op_index[(u8)opcode]]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) if (((opcode & 0xFF00) == AML_EXTENDED_OPCODE) &&
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) (((u8)opcode) <= MAX_EXTENDED_OPCODE)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) /* Valid extended (16-bit) opcode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) return (&acpi_gbl_aml_op_info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) [acpi_gbl_long_op_index[(u8)opcode]]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) #if defined ACPI_ASL_COMPILER && defined ACPI_DEBUG_OUTPUT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) #include "asldefine.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) switch (opcode) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) case AML_RAW_DATA_BYTE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) opcode_name = "-Raw Data Byte-";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) case AML_RAW_DATA_WORD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) opcode_name = "-Raw Data Word-";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) case AML_RAW_DATA_DWORD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) opcode_name = "-Raw Data Dword-";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) case AML_RAW_DATA_QWORD:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) opcode_name = "-Raw Data Qword-";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) case AML_RAW_DATA_BUFFER:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) opcode_name = "-Raw Data Buffer-";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) case AML_RAW_DATA_CHAIN:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) opcode_name = "-Raw Data Buffer Chain-";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) case AML_PACKAGE_LENGTH:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) opcode_name = "-Package Length-";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) case AML_UNASSIGNED_OPCODE:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) opcode_name = "-Unassigned Opcode-";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) case AML_DEFAULT_ARG_OP:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) opcode_name = "-Default Arg-";
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) /* Unknown AML opcode */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "%s [%4.4X]\n", opcode_name, opcode));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) return (&acpi_gbl_aml_op_info[_UNK]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) * FUNCTION: acpi_ps_get_opcode_name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) * PARAMETERS: opcode - The AML opcode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) * RETURN: A pointer to the name of the opcode (ASCII String)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) * Note: Never returns NULL.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) * DESCRIPTION: Translate an opcode into a human-readable string
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) const char *acpi_ps_get_opcode_name(u16 opcode)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) #if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUG_OUTPUT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) const struct acpi_opcode_info *op;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) op = acpi_ps_get_opcode_info(opcode);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) /* Always guaranteed to return a valid pointer */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) return (op->name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) return ("OpcodeName unavailable");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) /*******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) * FUNCTION: acpi_ps_get_argument_count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) * PARAMETERS: op_type - Type associated with the AML opcode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) * RETURN: Argument count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) * DESCRIPTION: Obtain the number of expected arguments for an AML opcode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) ******************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) u8 acpi_ps_get_argument_count(u32 op_type)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) if (op_type <= AML_TYPE_EXEC_6A_0T_1R) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) return (acpi_gbl_argument_count[op_type]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) return (0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) * This table is directly indexed by the opcodes It returns
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) * an index into the opcode table (acpi_gbl_aml_op_info)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) const u8 acpi_gbl_short_op_index[256] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) /* 0 1 2 3 4 5 6 7 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) /* 8 9 A B C D E F */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) /* 0x00 */ 0x00, 0x01, _UNK, _UNK, _UNK, _UNK, 0x02, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) /* 0x08 */ 0x03, _UNK, 0x04, 0x05, 0x06, 0x07, 0x6E, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) /* 0x10 */ 0x08, 0x09, 0x0a, 0x6F, 0x0b, 0x81, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) /* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) /* 0x20 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) /* 0x28 */ _UNK, _UNK, _UNK, _UNK, _UNK, 0x63, _PFX, _PFX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) /* 0x30 */ 0x67, 0x66, 0x68, 0x65, 0x69, 0x64, 0x6A, 0x7D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) /* 0x38 */ 0x7F, 0x80, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) /* 0x40 */ _UNK, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) /* 0x48 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) /* 0x50 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) /* 0x58 */ _ASC, _ASC, _ASC, _UNK, _PFX, _UNK, _PFX, _ASC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) /* 0x60 */ 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) /* 0x68 */ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) /* 0x70 */ 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) /* 0x78 */ 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) /* 0x80 */ 0x2b, 0x2c, 0x2d, 0x2e, 0x70, 0x71, 0x2f, 0x30,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) /* 0x88 */ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x72,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) /* 0x90 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x73, 0x74,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) /* 0x98 */ 0x75, 0x76, _UNK, _UNK, 0x77, 0x78, 0x79, 0x7A,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) /* 0xA0 */ 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x60, 0x61,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) /* 0xA8 */ 0x62, 0x82, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) /* 0xB0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) /* 0xB8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) /* 0xC0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) /* 0xC8 */ _UNK, _UNK, _UNK, _UNK, 0x44, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) /* 0xD0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) /* 0xD8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) /* 0xE0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) /* 0xE8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) /* 0xF0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) /* 0xF8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, 0x45,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) * This table is indexed by the second opcode of the extended opcode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) * pair. It returns an index into the opcode table (acpi_gbl_aml_op_info)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) const u8 acpi_gbl_long_op_index[NUM_EXTENDED_OPCODE] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) /* 0 1 2 3 4 5 6 7 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) /* 8 9 A B C D E F */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) /* 0x00 */ _UNK, 0x46, 0x47, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) /* 0x08 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) /* 0x10 */ _UNK, _UNK, 0x48, 0x49, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) /* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, 0x7B,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) /* 0x20 */ 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) /* 0x28 */ 0x52, 0x53, 0x54, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) /* 0x30 */ 0x55, 0x56, 0x57, 0x7e, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) /* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) /* 0x40 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) /* 0x48 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) /* 0x50 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) /* 0x58 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) /* 0x60 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) /* 0x68 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) /* 0x70 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) /* 0x78 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) /* 0x80 */ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) /* 0x88 */ 0x7C,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) };