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