Home | History | Annotate | Line # | Download | only in disassembler
dmopcode.c revision 1.1.1.2.20.1
      1           1.1  jruoho /*******************************************************************************
      2           1.1  jruoho  *
      3           1.1  jruoho  * Module Name: dmopcode - AML disassembler, specific AML opcodes
      4           1.1  jruoho  *
      5           1.1  jruoho  ******************************************************************************/
      6           1.1  jruoho 
      7       1.1.1.2  jruoho /*
      8  1.1.1.2.20.1     tls  * Copyright (C) 2000 - 2013, Intel Corp.
      9           1.1  jruoho  * All rights reserved.
     10           1.1  jruoho  *
     11       1.1.1.2  jruoho  * Redistribution and use in source and binary forms, with or without
     12       1.1.1.2  jruoho  * modification, are permitted provided that the following conditions
     13       1.1.1.2  jruoho  * are met:
     14       1.1.1.2  jruoho  * 1. Redistributions of source code must retain the above copyright
     15       1.1.1.2  jruoho  *    notice, this list of conditions, and the following disclaimer,
     16       1.1.1.2  jruoho  *    without modification.
     17       1.1.1.2  jruoho  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     18       1.1.1.2  jruoho  *    substantially similar to the "NO WARRANTY" disclaimer below
     19       1.1.1.2  jruoho  *    ("Disclaimer") and any redistribution must be conditioned upon
     20       1.1.1.2  jruoho  *    including a substantially similar Disclaimer requirement for further
     21       1.1.1.2  jruoho  *    binary redistribution.
     22       1.1.1.2  jruoho  * 3. Neither the names of the above-listed copyright holders nor the names
     23       1.1.1.2  jruoho  *    of any contributors may be used to endorse or promote products derived
     24       1.1.1.2  jruoho  *    from this software without specific prior written permission.
     25       1.1.1.2  jruoho  *
     26       1.1.1.2  jruoho  * Alternatively, this software may be distributed under the terms of the
     27       1.1.1.2  jruoho  * GNU General Public License ("GPL") version 2 as published by the Free
     28       1.1.1.2  jruoho  * Software Foundation.
     29       1.1.1.2  jruoho  *
     30       1.1.1.2  jruoho  * NO WARRANTY
     31       1.1.1.2  jruoho  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32       1.1.1.2  jruoho  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33       1.1.1.2  jruoho  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     34       1.1.1.2  jruoho  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35       1.1.1.2  jruoho  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     36       1.1.1.2  jruoho  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     37       1.1.1.2  jruoho  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     38       1.1.1.2  jruoho  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     39       1.1.1.2  jruoho  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     40       1.1.1.2  jruoho  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     41       1.1.1.2  jruoho  * POSSIBILITY OF SUCH DAMAGES.
     42       1.1.1.2  jruoho  */
     43           1.1  jruoho 
     44           1.1  jruoho #include "acpi.h"
     45           1.1  jruoho #include "accommon.h"
     46           1.1  jruoho #include "acparser.h"
     47           1.1  jruoho #include "amlcode.h"
     48           1.1  jruoho #include "acdisasm.h"
     49           1.1  jruoho 
     50           1.1  jruoho #ifdef ACPI_DISASSEMBLER
     51           1.1  jruoho 
     52           1.1  jruoho #define _COMPONENT          ACPI_CA_DEBUGGER
     53           1.1  jruoho         ACPI_MODULE_NAME    ("dmopcode")
     54           1.1  jruoho 
     55           1.1  jruoho /* Local prototypes */
     56           1.1  jruoho 
     57           1.1  jruoho static void
     58           1.1  jruoho AcpiDmMatchKeyword (
     59           1.1  jruoho     ACPI_PARSE_OBJECT       *Op);
     60           1.1  jruoho 
     61           1.1  jruoho 
     62           1.1  jruoho /*******************************************************************************
     63           1.1  jruoho  *
     64  1.1.1.2.20.1     tls  * FUNCTION:    AcpiDmPredefinedDescription
     65  1.1.1.2.20.1     tls  *
     66  1.1.1.2.20.1     tls  * PARAMETERS:  Op              - Name() parse object
     67  1.1.1.2.20.1     tls  *
     68  1.1.1.2.20.1     tls  * RETURN:      None
     69  1.1.1.2.20.1     tls  *
     70  1.1.1.2.20.1     tls  * DESCRIPTION: Emit a description comment for a predefined ACPI name.
     71  1.1.1.2.20.1     tls  *              Used for iASL compiler only.
     72  1.1.1.2.20.1     tls  *
     73  1.1.1.2.20.1     tls  ******************************************************************************/
     74  1.1.1.2.20.1     tls 
     75  1.1.1.2.20.1     tls void
     76  1.1.1.2.20.1     tls AcpiDmPredefinedDescription (
     77  1.1.1.2.20.1     tls     ACPI_PARSE_OBJECT       *Op)
     78  1.1.1.2.20.1     tls {
     79  1.1.1.2.20.1     tls #ifdef ACPI_ASL_COMPILER
     80  1.1.1.2.20.1     tls     const AH_PREDEFINED_NAME    *Info;
     81  1.1.1.2.20.1     tls     char                        *NameString;
     82  1.1.1.2.20.1     tls     int                         LastCharIsDigit;
     83  1.1.1.2.20.1     tls     int                         LastCharsAreHex;
     84  1.1.1.2.20.1     tls 
     85  1.1.1.2.20.1     tls 
     86  1.1.1.2.20.1     tls     if (!Op)
     87  1.1.1.2.20.1     tls     {
     88  1.1.1.2.20.1     tls         return;
     89  1.1.1.2.20.1     tls     }
     90  1.1.1.2.20.1     tls 
     91  1.1.1.2.20.1     tls     /* Ensure that the comment field is emitted only once */
     92  1.1.1.2.20.1     tls 
     93  1.1.1.2.20.1     tls     if (Op->Common.DisasmFlags & ACPI_PARSEOP_PREDEF_CHECKED)
     94  1.1.1.2.20.1     tls     {
     95  1.1.1.2.20.1     tls         return;
     96  1.1.1.2.20.1     tls     }
     97  1.1.1.2.20.1     tls     Op->Common.DisasmFlags |= ACPI_PARSEOP_PREDEF_CHECKED;
     98  1.1.1.2.20.1     tls 
     99  1.1.1.2.20.1     tls     /* Predefined name must start with an underscore */
    100  1.1.1.2.20.1     tls 
    101  1.1.1.2.20.1     tls     NameString = ACPI_CAST_PTR (char, &Op->Named.Name);
    102  1.1.1.2.20.1     tls     if (NameString[0] != '_')
    103  1.1.1.2.20.1     tls     {
    104  1.1.1.2.20.1     tls         return;
    105  1.1.1.2.20.1     tls     }
    106  1.1.1.2.20.1     tls 
    107  1.1.1.2.20.1     tls     /*
    108  1.1.1.2.20.1     tls      * Check for the special ACPI names:
    109  1.1.1.2.20.1     tls      * _ACd, _ALd, _EJd, _Exx, _Lxx, _Qxx, _Wxx, _T_a
    110  1.1.1.2.20.1     tls      * (where d=decimal_digit, x=hex_digit, a=anything)
    111  1.1.1.2.20.1     tls      *
    112  1.1.1.2.20.1     tls      * Convert these to the generic name for table lookup.
    113  1.1.1.2.20.1     tls      * Note: NameString is guaranteed to be upper case here.
    114  1.1.1.2.20.1     tls      */
    115  1.1.1.2.20.1     tls     LastCharIsDigit =
    116  1.1.1.2.20.1     tls         (ACPI_IS_DIGIT (NameString[3]));    /* d */
    117  1.1.1.2.20.1     tls     LastCharsAreHex =
    118  1.1.1.2.20.1     tls         (ACPI_IS_XDIGIT (NameString[2]) &&  /* xx */
    119  1.1.1.2.20.1     tls          ACPI_IS_XDIGIT (NameString[3]));
    120  1.1.1.2.20.1     tls 
    121  1.1.1.2.20.1     tls     switch (NameString[1])
    122  1.1.1.2.20.1     tls     {
    123  1.1.1.2.20.1     tls     case 'A':
    124  1.1.1.2.20.1     tls 
    125  1.1.1.2.20.1     tls         if ((NameString[2] == 'C') && (LastCharIsDigit))
    126  1.1.1.2.20.1     tls         {
    127  1.1.1.2.20.1     tls             NameString = "_ACx";
    128  1.1.1.2.20.1     tls         }
    129  1.1.1.2.20.1     tls         else if ((NameString[2] == 'L') && (LastCharIsDigit))
    130  1.1.1.2.20.1     tls         {
    131  1.1.1.2.20.1     tls             NameString = "_ALx";
    132  1.1.1.2.20.1     tls         }
    133  1.1.1.2.20.1     tls         break;
    134  1.1.1.2.20.1     tls 
    135  1.1.1.2.20.1     tls     case 'E':
    136  1.1.1.2.20.1     tls 
    137  1.1.1.2.20.1     tls         if ((NameString[2] == 'J') && (LastCharIsDigit))
    138  1.1.1.2.20.1     tls         {
    139  1.1.1.2.20.1     tls             NameString = "_EJx";
    140  1.1.1.2.20.1     tls         }
    141  1.1.1.2.20.1     tls         else if (LastCharsAreHex)
    142  1.1.1.2.20.1     tls         {
    143  1.1.1.2.20.1     tls             NameString = "_Exx";
    144  1.1.1.2.20.1     tls         }
    145  1.1.1.2.20.1     tls         break;
    146  1.1.1.2.20.1     tls 
    147  1.1.1.2.20.1     tls     case 'L':
    148  1.1.1.2.20.1     tls 
    149  1.1.1.2.20.1     tls         if (LastCharsAreHex)
    150  1.1.1.2.20.1     tls         {
    151  1.1.1.2.20.1     tls             NameString = "_Lxx";
    152  1.1.1.2.20.1     tls         }
    153  1.1.1.2.20.1     tls         break;
    154  1.1.1.2.20.1     tls 
    155  1.1.1.2.20.1     tls     case 'Q':
    156  1.1.1.2.20.1     tls 
    157  1.1.1.2.20.1     tls         if (LastCharsAreHex)
    158  1.1.1.2.20.1     tls         {
    159  1.1.1.2.20.1     tls             NameString = "_Qxx";
    160  1.1.1.2.20.1     tls         }
    161  1.1.1.2.20.1     tls         break;
    162  1.1.1.2.20.1     tls 
    163  1.1.1.2.20.1     tls     case 'T':
    164  1.1.1.2.20.1     tls 
    165  1.1.1.2.20.1     tls         if (NameString[2] == '_')
    166  1.1.1.2.20.1     tls         {
    167  1.1.1.2.20.1     tls             NameString = "_T_x";
    168  1.1.1.2.20.1     tls         }
    169  1.1.1.2.20.1     tls         break;
    170  1.1.1.2.20.1     tls 
    171  1.1.1.2.20.1     tls     case 'W':
    172  1.1.1.2.20.1     tls 
    173  1.1.1.2.20.1     tls         if (LastCharsAreHex)
    174  1.1.1.2.20.1     tls         {
    175  1.1.1.2.20.1     tls             NameString = "_Wxx";
    176  1.1.1.2.20.1     tls         }
    177  1.1.1.2.20.1     tls         break;
    178  1.1.1.2.20.1     tls 
    179  1.1.1.2.20.1     tls     default:
    180  1.1.1.2.20.1     tls 
    181  1.1.1.2.20.1     tls         break;
    182  1.1.1.2.20.1     tls     }
    183  1.1.1.2.20.1     tls 
    184  1.1.1.2.20.1     tls     /* Match the name in the info table */
    185  1.1.1.2.20.1     tls 
    186  1.1.1.2.20.1     tls     for (Info = AslPredefinedInfo; Info->Name; Info++)
    187  1.1.1.2.20.1     tls     {
    188  1.1.1.2.20.1     tls         if (ACPI_COMPARE_NAME (NameString, Info->Name))
    189  1.1.1.2.20.1     tls         {
    190  1.1.1.2.20.1     tls             AcpiOsPrintf ("  // %4.4s: %s",
    191  1.1.1.2.20.1     tls                 NameString, ACPI_CAST_PTR (char, Info->Description));
    192  1.1.1.2.20.1     tls             return;
    193  1.1.1.2.20.1     tls         }
    194  1.1.1.2.20.1     tls     }
    195  1.1.1.2.20.1     tls 
    196  1.1.1.2.20.1     tls #endif
    197  1.1.1.2.20.1     tls     return;
    198  1.1.1.2.20.1     tls }
    199  1.1.1.2.20.1     tls 
    200  1.1.1.2.20.1     tls 
    201  1.1.1.2.20.1     tls /*******************************************************************************
    202  1.1.1.2.20.1     tls  *
    203  1.1.1.2.20.1     tls  * FUNCTION:    AcpiDmFieldPredefinedDescription
    204  1.1.1.2.20.1     tls  *
    205  1.1.1.2.20.1     tls  * PARAMETERS:  Op              - Parse object
    206  1.1.1.2.20.1     tls  *
    207  1.1.1.2.20.1     tls  * RETURN:      None
    208  1.1.1.2.20.1     tls  *
    209  1.1.1.2.20.1     tls  * DESCRIPTION: Emit a description comment for a resource descriptor tag
    210  1.1.1.2.20.1     tls  *              (which is a predefined ACPI name.) Used for iASL compiler only.
    211  1.1.1.2.20.1     tls  *
    212  1.1.1.2.20.1     tls  ******************************************************************************/
    213  1.1.1.2.20.1     tls 
    214  1.1.1.2.20.1     tls void
    215  1.1.1.2.20.1     tls AcpiDmFieldPredefinedDescription (
    216  1.1.1.2.20.1     tls     ACPI_PARSE_OBJECT       *Op)
    217  1.1.1.2.20.1     tls {
    218  1.1.1.2.20.1     tls #ifdef ACPI_ASL_COMPILER
    219  1.1.1.2.20.1     tls     ACPI_PARSE_OBJECT       *IndexOp;
    220  1.1.1.2.20.1     tls     char                    *Tag;
    221  1.1.1.2.20.1     tls     const ACPI_OPCODE_INFO  *OpInfo;
    222  1.1.1.2.20.1     tls     const AH_PREDEFINED_NAME *Info;
    223  1.1.1.2.20.1     tls 
    224  1.1.1.2.20.1     tls 
    225  1.1.1.2.20.1     tls     if (!Op)
    226  1.1.1.2.20.1     tls     {
    227  1.1.1.2.20.1     tls         return;
    228  1.1.1.2.20.1     tls     }
    229  1.1.1.2.20.1     tls 
    230  1.1.1.2.20.1     tls     /* Ensure that the comment field is emitted only once */
    231  1.1.1.2.20.1     tls 
    232  1.1.1.2.20.1     tls     if (Op->Common.DisasmFlags & ACPI_PARSEOP_PREDEF_CHECKED)
    233  1.1.1.2.20.1     tls     {
    234  1.1.1.2.20.1     tls         return;
    235  1.1.1.2.20.1     tls     }
    236  1.1.1.2.20.1     tls     Op->Common.DisasmFlags |= ACPI_PARSEOP_PREDEF_CHECKED;
    237  1.1.1.2.20.1     tls 
    238  1.1.1.2.20.1     tls     /*
    239  1.1.1.2.20.1     tls      * Op must be one of the Create* operators: CreateField, CreateBitField,
    240  1.1.1.2.20.1     tls      * CreateByteField, CreateWordField, CreateDwordField, CreateQwordField
    241  1.1.1.2.20.1     tls      */
    242  1.1.1.2.20.1     tls     OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
    243  1.1.1.2.20.1     tls     if (!(OpInfo->Flags & AML_CREATE))
    244  1.1.1.2.20.1     tls     {
    245  1.1.1.2.20.1     tls         return;
    246  1.1.1.2.20.1     tls     }
    247  1.1.1.2.20.1     tls 
    248  1.1.1.2.20.1     tls     /* Second argument is the Index argument */
    249  1.1.1.2.20.1     tls 
    250  1.1.1.2.20.1     tls     IndexOp = Op->Common.Value.Arg;
    251  1.1.1.2.20.1     tls     IndexOp = IndexOp->Common.Next;
    252  1.1.1.2.20.1     tls 
    253  1.1.1.2.20.1     tls     /* Index argument must be a namepath */
    254  1.1.1.2.20.1     tls 
    255  1.1.1.2.20.1     tls     if (IndexOp->Common.AmlOpcode != AML_INT_NAMEPATH_OP)
    256  1.1.1.2.20.1     tls     {
    257  1.1.1.2.20.1     tls         return;
    258  1.1.1.2.20.1     tls     }
    259  1.1.1.2.20.1     tls 
    260  1.1.1.2.20.1     tls     /* Major cheat: We previously put the Tag ptr in the Node field */
    261  1.1.1.2.20.1     tls 
    262  1.1.1.2.20.1     tls     Tag = ACPI_CAST_PTR (char, IndexOp->Common.Node);
    263  1.1.1.2.20.1     tls     if (!Tag)
    264  1.1.1.2.20.1     tls     {
    265  1.1.1.2.20.1     tls         return;
    266  1.1.1.2.20.1     tls     }
    267  1.1.1.2.20.1     tls 
    268  1.1.1.2.20.1     tls     /* Match the name in the info table */
    269  1.1.1.2.20.1     tls 
    270  1.1.1.2.20.1     tls     for (Info = AslPredefinedInfo; Info->Name; Info++)
    271  1.1.1.2.20.1     tls     {
    272  1.1.1.2.20.1     tls         if (ACPI_COMPARE_NAME (Tag, Info->Name))
    273  1.1.1.2.20.1     tls         {
    274  1.1.1.2.20.1     tls             AcpiOsPrintf ("  // %4.4s: %s", Tag,
    275  1.1.1.2.20.1     tls                 ACPI_CAST_PTR (char, Info->Description));
    276  1.1.1.2.20.1     tls             return;
    277  1.1.1.2.20.1     tls         }
    278  1.1.1.2.20.1     tls     }
    279  1.1.1.2.20.1     tls 
    280  1.1.1.2.20.1     tls #endif
    281  1.1.1.2.20.1     tls     return;
    282  1.1.1.2.20.1     tls }
    283  1.1.1.2.20.1     tls 
    284  1.1.1.2.20.1     tls 
    285  1.1.1.2.20.1     tls /*******************************************************************************
    286  1.1.1.2.20.1     tls  *
    287           1.1  jruoho  * FUNCTION:    AcpiDmMethodFlags
    288           1.1  jruoho  *
    289           1.1  jruoho  * PARAMETERS:  Op              - Method Object to be examined
    290           1.1  jruoho  *
    291           1.1  jruoho  * RETURN:      None
    292           1.1  jruoho  *
    293           1.1  jruoho  * DESCRIPTION: Decode control method flags
    294           1.1  jruoho  *
    295           1.1  jruoho  ******************************************************************************/
    296           1.1  jruoho 
    297           1.1  jruoho void
    298           1.1  jruoho AcpiDmMethodFlags (
    299           1.1  jruoho     ACPI_PARSE_OBJECT       *Op)
    300           1.1  jruoho {
    301           1.1  jruoho     UINT32                  Flags;
    302           1.1  jruoho     UINT32                  Args;
    303           1.1  jruoho 
    304           1.1  jruoho 
    305           1.1  jruoho     /* The next Op contains the flags */
    306           1.1  jruoho 
    307           1.1  jruoho     Op = AcpiPsGetDepthNext (NULL, Op);
    308           1.1  jruoho     Flags = (UINT8) Op->Common.Value.Integer;
    309           1.1  jruoho     Args = Flags & 0x07;
    310           1.1  jruoho 
    311           1.1  jruoho     /* Mark the Op as completed */
    312           1.1  jruoho 
    313           1.1  jruoho     Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
    314           1.1  jruoho 
    315           1.1  jruoho     /* 1) Method argument count */
    316           1.1  jruoho 
    317           1.1  jruoho     AcpiOsPrintf (", %u, ", Args);
    318           1.1  jruoho 
    319           1.1  jruoho     /* 2) Serialize rule */
    320           1.1  jruoho 
    321           1.1  jruoho     if (!(Flags & 0x08))
    322           1.1  jruoho     {
    323           1.1  jruoho         AcpiOsPrintf ("Not");
    324           1.1  jruoho     }
    325           1.1  jruoho 
    326           1.1  jruoho     AcpiOsPrintf ("Serialized");
    327           1.1  jruoho 
    328           1.1  jruoho     /* 3) SyncLevel */
    329           1.1  jruoho 
    330           1.1  jruoho     if (Flags & 0xF0)
    331           1.1  jruoho     {
    332           1.1  jruoho         AcpiOsPrintf (", %u", Flags >> 4);
    333           1.1  jruoho     }
    334           1.1  jruoho }
    335           1.1  jruoho 
    336           1.1  jruoho 
    337           1.1  jruoho /*******************************************************************************
    338           1.1  jruoho  *
    339           1.1  jruoho  * FUNCTION:    AcpiDmFieldFlags
    340           1.1  jruoho  *
    341           1.1  jruoho  * PARAMETERS:  Op              - Field Object to be examined
    342           1.1  jruoho  *
    343           1.1  jruoho  * RETURN:      None
    344           1.1  jruoho  *
    345           1.1  jruoho  * DESCRIPTION: Decode Field definition flags
    346           1.1  jruoho  *
    347           1.1  jruoho  ******************************************************************************/
    348           1.1  jruoho 
    349           1.1  jruoho void
    350           1.1  jruoho AcpiDmFieldFlags (
    351           1.1  jruoho     ACPI_PARSE_OBJECT       *Op)
    352           1.1  jruoho {
    353           1.1  jruoho     UINT32                  Flags;
    354           1.1  jruoho 
    355           1.1  jruoho 
    356           1.1  jruoho     Op = Op->Common.Next;
    357           1.1  jruoho     Flags = (UINT8) Op->Common.Value.Integer;
    358           1.1  jruoho 
    359           1.1  jruoho     /* Mark the Op as completed */
    360           1.1  jruoho 
    361           1.1  jruoho     Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
    362           1.1  jruoho 
    363           1.1  jruoho     AcpiOsPrintf ("%s, ", AcpiGbl_AccessTypes [Flags & 0x07]);
    364           1.1  jruoho     AcpiOsPrintf ("%s, ", AcpiGbl_LockRule [(Flags & 0x10) >> 4]);
    365           1.1  jruoho     AcpiOsPrintf ("%s)",  AcpiGbl_UpdateRules [(Flags & 0x60) >> 5]);
    366           1.1  jruoho }
    367           1.1  jruoho 
    368           1.1  jruoho 
    369           1.1  jruoho /*******************************************************************************
    370           1.1  jruoho  *
    371           1.1  jruoho  * FUNCTION:    AcpiDmAddressSpace
    372           1.1  jruoho  *
    373           1.1  jruoho  * PARAMETERS:  SpaceId         - ID to be translated
    374           1.1  jruoho  *
    375           1.1  jruoho  * RETURN:      None
    376           1.1  jruoho  *
    377           1.1  jruoho  * DESCRIPTION: Decode a SpaceId to an AddressSpaceKeyword
    378           1.1  jruoho  *
    379           1.1  jruoho  ******************************************************************************/
    380           1.1  jruoho 
    381           1.1  jruoho void
    382           1.1  jruoho AcpiDmAddressSpace (
    383           1.1  jruoho     UINT8                   SpaceId)
    384           1.1  jruoho {
    385           1.1  jruoho 
    386           1.1  jruoho     if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS)
    387           1.1  jruoho     {
    388           1.1  jruoho         if (SpaceId == 0x7F)
    389           1.1  jruoho         {
    390           1.1  jruoho             AcpiOsPrintf ("FFixedHW, ");
    391           1.1  jruoho         }
    392           1.1  jruoho         else
    393           1.1  jruoho         {
    394           1.1  jruoho             AcpiOsPrintf ("0x%.2X, ", SpaceId);
    395           1.1  jruoho         }
    396           1.1  jruoho     }
    397           1.1  jruoho     else
    398           1.1  jruoho     {
    399           1.1  jruoho         AcpiOsPrintf ("%s, ", AcpiGbl_RegionTypes [SpaceId]);
    400           1.1  jruoho     }
    401           1.1  jruoho }
    402           1.1  jruoho 
    403           1.1  jruoho 
    404           1.1  jruoho /*******************************************************************************
    405           1.1  jruoho  *
    406           1.1  jruoho  * FUNCTION:    AcpiDmRegionFlags
    407           1.1  jruoho  *
    408           1.1  jruoho  * PARAMETERS:  Op              - Object to be examined
    409           1.1  jruoho  *
    410           1.1  jruoho  * RETURN:      None
    411           1.1  jruoho  *
    412           1.1  jruoho  * DESCRIPTION: Decode OperationRegion flags
    413           1.1  jruoho  *
    414           1.1  jruoho  ******************************************************************************/
    415           1.1  jruoho 
    416           1.1  jruoho void
    417           1.1  jruoho AcpiDmRegionFlags (
    418           1.1  jruoho     ACPI_PARSE_OBJECT       *Op)
    419           1.1  jruoho {
    420           1.1  jruoho 
    421           1.1  jruoho 
    422           1.1  jruoho     /* The next Op contains the SpaceId */
    423           1.1  jruoho 
    424           1.1  jruoho     Op = AcpiPsGetDepthNext (NULL, Op);
    425           1.1  jruoho 
    426           1.1  jruoho     /* Mark the Op as completed */
    427           1.1  jruoho 
    428           1.1  jruoho     Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
    429           1.1  jruoho 
    430           1.1  jruoho     AcpiOsPrintf (", ");
    431           1.1  jruoho     AcpiDmAddressSpace ((UINT8) Op->Common.Value.Integer);
    432           1.1  jruoho }
    433           1.1  jruoho 
    434           1.1  jruoho 
    435           1.1  jruoho /*******************************************************************************
    436           1.1  jruoho  *
    437           1.1  jruoho  * FUNCTION:    AcpiDmMatchOp
    438           1.1  jruoho  *
    439           1.1  jruoho  * PARAMETERS:  Op              - Match Object to be examined
    440           1.1  jruoho  *
    441           1.1  jruoho  * RETURN:      None
    442           1.1  jruoho  *
    443           1.1  jruoho  * DESCRIPTION: Decode Match opcode operands
    444           1.1  jruoho  *
    445           1.1  jruoho  ******************************************************************************/
    446           1.1  jruoho 
    447           1.1  jruoho void
    448           1.1  jruoho AcpiDmMatchOp (
    449           1.1  jruoho     ACPI_PARSE_OBJECT       *Op)
    450           1.1  jruoho {
    451           1.1  jruoho     ACPI_PARSE_OBJECT       *NextOp;
    452           1.1  jruoho 
    453           1.1  jruoho 
    454           1.1  jruoho     NextOp = AcpiPsGetDepthNext (NULL, Op);
    455           1.1  jruoho     NextOp = NextOp->Common.Next;
    456           1.1  jruoho 
    457           1.1  jruoho     if (!NextOp)
    458           1.1  jruoho     {
    459           1.1  jruoho         /* Handle partial tree during single-step */
    460           1.1  jruoho 
    461           1.1  jruoho         return;
    462           1.1  jruoho     }
    463           1.1  jruoho 
    464           1.1  jruoho     /* Mark the two nodes that contain the encoding for the match keywords */
    465           1.1  jruoho 
    466           1.1  jruoho     NextOp->Common.DisasmOpcode = ACPI_DASM_MATCHOP;
    467           1.1  jruoho 
    468           1.1  jruoho     NextOp = NextOp->Common.Next;
    469           1.1  jruoho     NextOp = NextOp->Common.Next;
    470           1.1  jruoho     NextOp->Common.DisasmOpcode = ACPI_DASM_MATCHOP;
    471           1.1  jruoho }
    472           1.1  jruoho 
    473           1.1  jruoho 
    474           1.1  jruoho /*******************************************************************************
    475           1.1  jruoho  *
    476           1.1  jruoho  * FUNCTION:    AcpiDmMatchKeyword
    477           1.1  jruoho  *
    478           1.1  jruoho  * PARAMETERS:  Op              - Match Object to be examined
    479           1.1  jruoho  *
    480           1.1  jruoho  * RETURN:      None
    481           1.1  jruoho  *
    482           1.1  jruoho  * DESCRIPTION: Decode Match opcode operands
    483           1.1  jruoho  *
    484           1.1  jruoho  ******************************************************************************/
    485           1.1  jruoho 
    486           1.1  jruoho static void
    487           1.1  jruoho AcpiDmMatchKeyword (
    488           1.1  jruoho     ACPI_PARSE_OBJECT       *Op)
    489           1.1  jruoho {
    490           1.1  jruoho 
    491           1.1  jruoho 
    492           1.1  jruoho     if (((UINT32) Op->Common.Value.Integer) > ACPI_MAX_MATCH_OPCODE)
    493           1.1  jruoho     {
    494           1.1  jruoho         AcpiOsPrintf ("/* Unknown Match Keyword encoding */");
    495           1.1  jruoho     }
    496           1.1  jruoho     else
    497           1.1  jruoho     {
    498           1.1  jruoho         AcpiOsPrintf ("%s", ACPI_CAST_PTR (char,
    499           1.1  jruoho             AcpiGbl_MatchOps[(ACPI_SIZE) Op->Common.Value.Integer]));
    500           1.1  jruoho     }
    501           1.1  jruoho }
    502           1.1  jruoho 
    503           1.1  jruoho 
    504           1.1  jruoho /*******************************************************************************
    505           1.1  jruoho  *
    506           1.1  jruoho  * FUNCTION:    AcpiDmDisassembleOneOp
    507           1.1  jruoho  *
    508           1.1  jruoho  * PARAMETERS:  WalkState           - Current walk info
    509           1.1  jruoho  *              Info                - Parse tree walk info
    510           1.1  jruoho  *              Op                  - Op that is to be printed
    511           1.1  jruoho  *
    512           1.1  jruoho  * RETURN:      None
    513           1.1  jruoho  *
    514           1.1  jruoho  * DESCRIPTION: Disassemble a single AML opcode
    515           1.1  jruoho  *
    516           1.1  jruoho  ******************************************************************************/
    517           1.1  jruoho 
    518           1.1  jruoho void
    519           1.1  jruoho AcpiDmDisassembleOneOp (
    520           1.1  jruoho     ACPI_WALK_STATE         *WalkState,
    521           1.1  jruoho     ACPI_OP_WALK_INFO       *Info,
    522           1.1  jruoho     ACPI_PARSE_OBJECT       *Op)
    523           1.1  jruoho {
    524           1.1  jruoho     const ACPI_OPCODE_INFO  *OpInfo = NULL;
    525           1.1  jruoho     UINT32                  Offset;
    526           1.1  jruoho     UINT32                  Length;
    527           1.1  jruoho     ACPI_PARSE_OBJECT       *Child;
    528           1.1  jruoho     ACPI_STATUS             Status;
    529  1.1.1.2.20.1     tls     UINT8                   *Aml;
    530           1.1  jruoho 
    531           1.1  jruoho 
    532           1.1  jruoho     if (!Op)
    533           1.1  jruoho     {
    534           1.1  jruoho         AcpiOsPrintf ("<NULL OP PTR>");
    535           1.1  jruoho         return;
    536           1.1  jruoho     }
    537           1.1  jruoho 
    538           1.1  jruoho     switch (Op->Common.DisasmOpcode)
    539           1.1  jruoho     {
    540           1.1  jruoho     case ACPI_DASM_MATCHOP:
    541           1.1  jruoho 
    542           1.1  jruoho         AcpiDmMatchKeyword (Op);
    543           1.1  jruoho         return;
    544           1.1  jruoho 
    545           1.1  jruoho     case ACPI_DASM_LNOT_SUFFIX:
    546  1.1.1.2.20.1     tls 
    547           1.1  jruoho         switch (Op->Common.AmlOpcode)
    548           1.1  jruoho         {
    549           1.1  jruoho         case AML_LEQUAL_OP:
    550  1.1.1.2.20.1     tls 
    551           1.1  jruoho             AcpiOsPrintf ("LNotEqual");
    552           1.1  jruoho             break;
    553           1.1  jruoho 
    554           1.1  jruoho         case AML_LGREATER_OP:
    555  1.1.1.2.20.1     tls 
    556           1.1  jruoho             AcpiOsPrintf ("LLessEqual");
    557           1.1  jruoho             break;
    558           1.1  jruoho 
    559           1.1  jruoho         case AML_LLESS_OP:
    560  1.1.1.2.20.1     tls 
    561           1.1  jruoho             AcpiOsPrintf ("LGreaterEqual");
    562           1.1  jruoho             break;
    563           1.1  jruoho 
    564           1.1  jruoho         default:
    565  1.1.1.2.20.1     tls 
    566           1.1  jruoho             break;
    567           1.1  jruoho         }
    568           1.1  jruoho         Op->Common.DisasmOpcode = 0;
    569           1.1  jruoho         Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
    570           1.1  jruoho         return;
    571           1.1  jruoho 
    572           1.1  jruoho     default:
    573           1.1  jruoho         break;
    574           1.1  jruoho     }
    575           1.1  jruoho 
    576           1.1  jruoho 
    577           1.1  jruoho     OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
    578           1.1  jruoho 
    579           1.1  jruoho     /* The op and arguments */
    580           1.1  jruoho 
    581           1.1  jruoho     switch (Op->Common.AmlOpcode)
    582           1.1  jruoho     {
    583           1.1  jruoho     case AML_LNOT_OP:
    584           1.1  jruoho 
    585           1.1  jruoho         Child = Op->Common.Value.Arg;
    586           1.1  jruoho         if ((Child->Common.AmlOpcode == AML_LEQUAL_OP) ||
    587           1.1  jruoho             (Child->Common.AmlOpcode == AML_LGREATER_OP) ||
    588           1.1  jruoho             (Child->Common.AmlOpcode == AML_LLESS_OP))
    589           1.1  jruoho         {
    590           1.1  jruoho             Child->Common.DisasmOpcode = ACPI_DASM_LNOT_SUFFIX;
    591           1.1  jruoho             Op->Common.DisasmOpcode = ACPI_DASM_LNOT_PREFIX;
    592           1.1  jruoho         }
    593           1.1  jruoho         else
    594           1.1  jruoho         {
    595           1.1  jruoho             AcpiOsPrintf ("%s", OpInfo->Name);
    596           1.1  jruoho         }
    597           1.1  jruoho         break;
    598           1.1  jruoho 
    599           1.1  jruoho     case AML_BYTE_OP:
    600           1.1  jruoho 
    601           1.1  jruoho         AcpiOsPrintf ("0x%2.2X", (UINT32) Op->Common.Value.Integer);
    602           1.1  jruoho         break;
    603           1.1  jruoho 
    604           1.1  jruoho     case AML_WORD_OP:
    605           1.1  jruoho 
    606           1.1  jruoho         if (Op->Common.DisasmOpcode == ACPI_DASM_EISAID)
    607           1.1  jruoho         {
    608           1.1  jruoho             AcpiDmEisaId ((UINT32) Op->Common.Value.Integer);
    609           1.1  jruoho         }
    610           1.1  jruoho         else
    611           1.1  jruoho         {
    612           1.1  jruoho             AcpiOsPrintf ("0x%4.4X", (UINT32) Op->Common.Value.Integer);
    613           1.1  jruoho         }
    614           1.1  jruoho         break;
    615           1.1  jruoho 
    616           1.1  jruoho     case AML_DWORD_OP:
    617           1.1  jruoho 
    618           1.1  jruoho         if (Op->Common.DisasmOpcode == ACPI_DASM_EISAID)
    619           1.1  jruoho         {
    620           1.1  jruoho             AcpiDmEisaId ((UINT32) Op->Common.Value.Integer);
    621           1.1  jruoho         }
    622           1.1  jruoho         else
    623           1.1  jruoho         {
    624           1.1  jruoho             AcpiOsPrintf ("0x%8.8X", (UINT32) Op->Common.Value.Integer);
    625           1.1  jruoho         }
    626           1.1  jruoho         break;
    627           1.1  jruoho 
    628           1.1  jruoho     case AML_QWORD_OP:
    629           1.1  jruoho 
    630           1.1  jruoho         AcpiOsPrintf ("0x%8.8X%8.8X",
    631           1.1  jruoho             ACPI_FORMAT_UINT64 (Op->Common.Value.Integer));
    632           1.1  jruoho         break;
    633           1.1  jruoho 
    634           1.1  jruoho     case AML_STRING_OP:
    635           1.1  jruoho 
    636  1.1.1.2.20.1     tls         AcpiUtPrintString (Op->Common.Value.String, ACPI_UINT16_MAX);
    637           1.1  jruoho         break;
    638           1.1  jruoho 
    639           1.1  jruoho     case AML_BUFFER_OP:
    640           1.1  jruoho         /*
    641  1.1.1.2.20.1     tls          * Determine the type of buffer. We can have one of the following:
    642           1.1  jruoho          *
    643           1.1  jruoho          * 1) ResourceTemplate containing Resource Descriptors.
    644           1.1  jruoho          * 2) Unicode String buffer
    645           1.1  jruoho          * 3) ASCII String buffer
    646           1.1  jruoho          * 4) Raw data buffer (if none of the above)
    647           1.1  jruoho          *
    648           1.1  jruoho          * Since there are no special AML opcodes to differentiate these
    649           1.1  jruoho          * types of buffers, we have to closely look at the data in the
    650           1.1  jruoho          * buffer to determine the type.
    651           1.1  jruoho          */
    652  1.1.1.2.20.1     tls         if (!AcpiGbl_NoResourceDisassembly)
    653           1.1  jruoho         {
    654  1.1.1.2.20.1     tls             Status = AcpiDmIsResourceTemplate (WalkState, Op);
    655  1.1.1.2.20.1     tls             if (ACPI_SUCCESS (Status))
    656  1.1.1.2.20.1     tls             {
    657  1.1.1.2.20.1     tls                 Op->Common.DisasmOpcode = ACPI_DASM_RESOURCE;
    658  1.1.1.2.20.1     tls                 AcpiOsPrintf ("ResourceTemplate");
    659  1.1.1.2.20.1     tls                 break;
    660  1.1.1.2.20.1     tls             }
    661  1.1.1.2.20.1     tls             else if (Status == AE_AML_NO_RESOURCE_END_TAG)
    662  1.1.1.2.20.1     tls             {
    663  1.1.1.2.20.1     tls                 AcpiOsPrintf ("/**** Is ResourceTemplate, but EndTag not at buffer end ****/ ");
    664  1.1.1.2.20.1     tls             }
    665           1.1  jruoho         }
    666           1.1  jruoho 
    667           1.1  jruoho         if (AcpiDmIsUnicodeBuffer (Op))
    668           1.1  jruoho         {
    669           1.1  jruoho             Op->Common.DisasmOpcode = ACPI_DASM_UNICODE;
    670           1.1  jruoho             AcpiOsPrintf ("Unicode (");
    671           1.1  jruoho         }
    672           1.1  jruoho         else if (AcpiDmIsStringBuffer (Op))
    673           1.1  jruoho         {
    674           1.1  jruoho             Op->Common.DisasmOpcode = ACPI_DASM_STRING;
    675           1.1  jruoho             AcpiOsPrintf ("Buffer");
    676           1.1  jruoho         }
    677  1.1.1.2.20.1     tls         else if (AcpiDmIsPldBuffer (Op))
    678  1.1.1.2.20.1     tls         {
    679  1.1.1.2.20.1     tls             Op->Common.DisasmOpcode = ACPI_DASM_PLD_METHOD;
    680  1.1.1.2.20.1     tls             AcpiOsPrintf ("Buffer");
    681  1.1.1.2.20.1     tls         }
    682           1.1  jruoho         else
    683           1.1  jruoho         {
    684           1.1  jruoho             Op->Common.DisasmOpcode = ACPI_DASM_BUFFER;
    685           1.1  jruoho             AcpiOsPrintf ("Buffer");
    686           1.1  jruoho         }
    687           1.1  jruoho         break;
    688           1.1  jruoho 
    689           1.1  jruoho     case AML_INT_STATICSTRING_OP:
    690           1.1  jruoho 
    691           1.1  jruoho         if (Op->Common.Value.String)
    692           1.1  jruoho         {
    693           1.1  jruoho             AcpiOsPrintf ("%s", Op->Common.Value.String);
    694           1.1  jruoho         }
    695           1.1  jruoho         else
    696           1.1  jruoho         {
    697           1.1  jruoho             AcpiOsPrintf ("\"<NULL STATIC STRING PTR>\"");
    698           1.1  jruoho         }
    699           1.1  jruoho         break;
    700           1.1  jruoho 
    701           1.1  jruoho     case AML_INT_NAMEPATH_OP:
    702           1.1  jruoho 
    703           1.1  jruoho         AcpiDmNamestring (Op->Common.Value.Name);
    704           1.1  jruoho         break;
    705           1.1  jruoho 
    706           1.1  jruoho     case AML_INT_NAMEDFIELD_OP:
    707           1.1  jruoho 
    708           1.1  jruoho         Length = AcpiDmDumpName (Op->Named.Name);
    709           1.1  jruoho         AcpiOsPrintf (",%*.s  %u", (unsigned) (5 - Length), " ",
    710           1.1  jruoho             (UINT32) Op->Common.Value.Integer);
    711           1.1  jruoho         AcpiDmCommaIfFieldMember (Op);
    712           1.1  jruoho 
    713           1.1  jruoho         Info->BitOffset += (UINT32) Op->Common.Value.Integer;
    714           1.1  jruoho         break;
    715           1.1  jruoho 
    716           1.1  jruoho     case AML_INT_RESERVEDFIELD_OP:
    717           1.1  jruoho 
    718           1.1  jruoho         /* Offset() -- Must account for previous offsets */
    719           1.1  jruoho 
    720           1.1  jruoho         Offset = (UINT32) Op->Common.Value.Integer;
    721           1.1  jruoho         Info->BitOffset += Offset;
    722           1.1  jruoho 
    723           1.1  jruoho         if (Info->BitOffset % 8 == 0)
    724           1.1  jruoho         {
    725  1.1.1.2.20.1     tls             AcpiOsPrintf ("Offset (0x%.2X)", ACPI_DIV_8 (Info->BitOffset));
    726           1.1  jruoho         }
    727           1.1  jruoho         else
    728           1.1  jruoho         {
    729           1.1  jruoho             AcpiOsPrintf ("    ,   %u", Offset);
    730           1.1  jruoho         }
    731           1.1  jruoho 
    732           1.1  jruoho         AcpiDmCommaIfFieldMember (Op);
    733           1.1  jruoho         break;
    734           1.1  jruoho 
    735           1.1  jruoho     case AML_INT_ACCESSFIELD_OP:
    736  1.1.1.2.20.1     tls     case AML_INT_EXTACCESSFIELD_OP:
    737  1.1.1.2.20.1     tls 
    738  1.1.1.2.20.1     tls         AcpiOsPrintf ("AccessAs (%s, ",
    739  1.1.1.2.20.1     tls             AcpiGbl_AccessTypes [(UINT32) (Op->Common.Value.Integer & 0x7)]);
    740  1.1.1.2.20.1     tls 
    741  1.1.1.2.20.1     tls         AcpiDmDecodeAttribute ((UINT8) (Op->Common.Value.Integer >> 8));
    742           1.1  jruoho 
    743  1.1.1.2.20.1     tls         if (Op->Common.AmlOpcode == AML_INT_EXTACCESSFIELD_OP)
    744  1.1.1.2.20.1     tls         {
    745  1.1.1.2.20.1     tls             AcpiOsPrintf (" (0x%2.2X)", (unsigned) ((Op->Common.Value.Integer >> 16) & 0xFF));
    746  1.1.1.2.20.1     tls         }
    747           1.1  jruoho 
    748           1.1  jruoho         AcpiOsPrintf (")");
    749           1.1  jruoho         AcpiDmCommaIfFieldMember (Op);
    750           1.1  jruoho         break;
    751           1.1  jruoho 
    752  1.1.1.2.20.1     tls     case AML_INT_CONNECTION_OP:
    753  1.1.1.2.20.1     tls         /*
    754  1.1.1.2.20.1     tls          * Two types of Connection() - one with a buffer object, the
    755  1.1.1.2.20.1     tls          * other with a namestring that points to a buffer object.
    756  1.1.1.2.20.1     tls          */
    757  1.1.1.2.20.1     tls         AcpiOsPrintf ("Connection (");
    758  1.1.1.2.20.1     tls         Child = Op->Common.Value.Arg;
    759  1.1.1.2.20.1     tls 
    760  1.1.1.2.20.1     tls         if (Child->Common.AmlOpcode == AML_INT_BYTELIST_OP)
    761  1.1.1.2.20.1     tls         {
    762  1.1.1.2.20.1     tls             AcpiOsPrintf ("\n");
    763  1.1.1.2.20.1     tls 
    764  1.1.1.2.20.1     tls             Aml = Child->Named.Data;
    765  1.1.1.2.20.1     tls             Length = (UINT32) Child->Common.Value.Integer;
    766  1.1.1.2.20.1     tls 
    767  1.1.1.2.20.1     tls             Info->Level += 1;
    768  1.1.1.2.20.1     tls             Op->Common.DisasmOpcode = ACPI_DASM_RESOURCE;
    769  1.1.1.2.20.1     tls             AcpiDmResourceTemplate (Info, Op->Common.Parent, Aml, Length);
    770  1.1.1.2.20.1     tls 
    771  1.1.1.2.20.1     tls             Info->Level -= 1;
    772  1.1.1.2.20.1     tls             AcpiDmIndent (Info->Level);
    773  1.1.1.2.20.1     tls         }
    774  1.1.1.2.20.1     tls         else
    775  1.1.1.2.20.1     tls         {
    776  1.1.1.2.20.1     tls             AcpiDmNamestring (Child->Common.Value.Name);
    777  1.1.1.2.20.1     tls         }
    778  1.1.1.2.20.1     tls 
    779  1.1.1.2.20.1     tls         AcpiOsPrintf (")");
    780  1.1.1.2.20.1     tls         AcpiDmCommaIfFieldMember (Op);
    781  1.1.1.2.20.1     tls         AcpiOsPrintf ("\n");
    782  1.1.1.2.20.1     tls 
    783  1.1.1.2.20.1     tls         Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; /* for now, ignore in AcpiDmAscendingOp */
    784  1.1.1.2.20.1     tls         Child->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
    785  1.1.1.2.20.1     tls         break;
    786           1.1  jruoho 
    787           1.1  jruoho     case AML_INT_BYTELIST_OP:
    788           1.1  jruoho 
    789           1.1  jruoho         AcpiDmByteList (Info, Op);
    790           1.1  jruoho         break;
    791           1.1  jruoho 
    792           1.1  jruoho     case AML_INT_METHODCALL_OP:
    793           1.1  jruoho 
    794           1.1  jruoho         Op = AcpiPsGetDepthNext (NULL, Op);
    795           1.1  jruoho         Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE;
    796           1.1  jruoho 
    797           1.1  jruoho         AcpiDmNamestring (Op->Common.Value.Name);
    798           1.1  jruoho         break;
    799           1.1  jruoho 
    800           1.1  jruoho     default:
    801           1.1  jruoho 
    802           1.1  jruoho         /* Just get the opcode name and print it */
    803           1.1  jruoho 
    804           1.1  jruoho         AcpiOsPrintf ("%s", OpInfo->Name);
    805           1.1  jruoho 
    806           1.1  jruoho 
    807           1.1  jruoho #ifdef ACPI_DEBUGGER
    808           1.1  jruoho 
    809           1.1  jruoho         if ((Op->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP) &&
    810           1.1  jruoho             (WalkState) &&
    811           1.1  jruoho             (WalkState->Results) &&
    812           1.1  jruoho             (WalkState->ResultCount))
    813           1.1  jruoho         {
    814           1.1  jruoho             AcpiDmDecodeInternalObject (
    815           1.1  jruoho                 WalkState->Results->Results.ObjDesc [
    816           1.1  jruoho                     (WalkState->ResultCount - 1) %
    817           1.1  jruoho                         ACPI_RESULTS_FRAME_OBJ_NUM]);
    818           1.1  jruoho         }
    819           1.1  jruoho #endif
    820           1.1  jruoho 
    821           1.1  jruoho         break;
    822           1.1  jruoho     }
    823           1.1  jruoho }
    824           1.1  jruoho 
    825           1.1  jruoho #endif  /* ACPI_DISASSEMBLER */
    826