dmopcode.c revision 217365
1233294Sstas/******************************************************************************* 2102644Snectar * 355682Smarkm * Module Name: dmopcode - AML disassembler, specific AML opcodes 4142403Snectar * 5233294Sstas ******************************************************************************/ 6233294Sstas 755682Smarkm/* 855682Smarkm * Copyright (C) 2000 - 2011, Intel Corp. 955682Smarkm * All rights reserved. 1055682Smarkm * 1155682Smarkm * Redistribution and use in source and binary forms, with or without 1255682Smarkm * modification, are permitted provided that the following conditions 1355682Smarkm * are met: 1455682Smarkm * 1. Redistributions of source code must retain the above copyright 1555682Smarkm * notice, this list of conditions, and the following disclaimer, 1690926Snectar * without modification. 1790926Snectar * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18233294Sstas * substantially similar to the "NO WARRANTY" disclaimer below 1990926Snectar * ("Disclaimer") and any redistribution must be conditioned upon 20233294Sstas * including a substantially similar Disclaimer requirement for further 2190926Snectar * binary redistribution. 22233294Sstas * 3. Neither the names of the above-listed copyright holders nor the names 2355682Smarkm * of any contributors may be used to endorse or promote products derived 2455682Smarkm * from this software without specific prior written permission. 2555682Smarkm * 26233294Sstas * Alternatively, this software may be distributed under the terms of the 2755682Smarkm * GNU General Public License ("GPL") version 2 as published by the Free 28233294Sstas * Software Foundation. 29102644Snectar * 30102644Snectar * NO WARRANTY 31102644Snectar * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32127808Snectar * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 3390926Snectar * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34127808Snectar * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 3555682Smarkm * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 3655682Smarkm * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 3755682Smarkm * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3855682Smarkm * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 3955682Smarkm * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 4055682Smarkm * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41178825Sdfr * POSSIBILITY OF SUCH DAMAGES. 4255682Smarkm */ 43142403Snectar 44142403Snectar#include <contrib/dev/acpica/include/acpi.h> 45142403Snectar#include <contrib/dev/acpica/include/accommon.h> 46142403Snectar#include <contrib/dev/acpica/include/acparser.h> 47142403Snectar#include <contrib/dev/acpica/include/amlcode.h> 48142403Snectar#include <contrib/dev/acpica/include/acdisasm.h> 49142403Snectar 50233294Sstas#ifdef ACPI_DISASSEMBLER 51142403Snectar 52142403Snectar#define _COMPONENT ACPI_CA_DEBUGGER 53142403Snectar ACPI_MODULE_NAME ("dmopcode") 54142403Snectar 55142403Snectar/* Local prototypes */ 56142403Snectar 57142403Snectarstatic void 58142403SnectarAcpiDmMatchKeyword ( 59142403Snectar ACPI_PARSE_OBJECT *Op); 60142403Snectar 61142403Snectar 62142403Snectar/******************************************************************************* 63142403Snectar * 64142403Snectar * FUNCTION: AcpiDmMethodFlags 65233294Sstas * 66142403Snectar * PARAMETERS: Op - Method Object to be examined 67142403Snectar * 68142403Snectar * RETURN: None 69142403Snectar * 70178825Sdfr * DESCRIPTION: Decode control method flags 71142403Snectar * 72142403Snectar ******************************************************************************/ 73142403Snectar 74142403Snectarvoid 75142403SnectarAcpiDmMethodFlags ( 76142403Snectar ACPI_PARSE_OBJECT *Op) 77142403Snectar{ 78142403Snectar UINT32 Flags; 79233294Sstas UINT32 Args; 80233294Sstas 81233294Sstas 82233294Sstas /* The next Op contains the flags */ 83233294Sstas 84233294Sstas Op = AcpiPsGetDepthNext (NULL, Op); 85178825Sdfr Flags = (UINT8) Op->Common.Value.Integer; 86178825Sdfr Args = Flags & 0x07; 87178825Sdfr 88178825Sdfr /* Mark the Op as completed */ 89178825Sdfr 90178825Sdfr Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; 91178825Sdfr 92233294Sstas /* 1) Method argument count */ 93142403Snectar 94142403Snectar AcpiOsPrintf (", %u, ", Args); 95178825Sdfr 96142403Snectar /* 2) Serialize rule */ 97142403Snectar 98233294Sstas if (!(Flags & 0x08)) 99178825Sdfr { 100142403Snectar AcpiOsPrintf ("Not"); 101142403Snectar } 102142403Snectar 103142403Snectar AcpiOsPrintf ("Serialized"); 104142403Snectar 105142403Snectar /* 3) SyncLevel */ 106142403Snectar 107142403Snectar if (Flags & 0xF0) 108142403Snectar { 109233294Sstas AcpiOsPrintf (", %u", Flags >> 4); 110233294Sstas } 111233294Sstas} 112233294Sstas 113142403Snectar 114142403Snectar/******************************************************************************* 115178825Sdfr * 116178825Sdfr * FUNCTION: AcpiDmFieldFlags 117178825Sdfr * 118142403Snectar * PARAMETERS: Op - Field Object to be examined 119178825Sdfr * 120178825Sdfr * RETURN: None 121178825Sdfr * 122142403Snectar * DESCRIPTION: Decode Field definition flags 123142403Snectar * 124233294Sstas ******************************************************************************/ 125233294Sstas 126233294Sstasvoid 127233294SstasAcpiDmFieldFlags ( 128233294Sstas ACPI_PARSE_OBJECT *Op) 129233294Sstas{ 130233294Sstas UINT32 Flags; 131233294Sstas 132233294Sstas 133233294Sstas Op = Op->Common.Next; 134233294Sstas Flags = (UINT8) Op->Common.Value.Integer; 135233294Sstas 136233294Sstas /* Mark the Op as completed */ 137233294Sstas 138233294Sstas Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; 139233294Sstas 140233294Sstas AcpiOsPrintf ("%s, ", AcpiGbl_AccessTypes [Flags & 0x07]); 141233294Sstas AcpiOsPrintf ("%s, ", AcpiGbl_LockRule [(Flags & 0x10) >> 4]); 142233294Sstas AcpiOsPrintf ("%s)", AcpiGbl_UpdateRules [(Flags & 0x60) >> 5]); 143233294Sstas} 144233294Sstas 145178825Sdfr 146178825Sdfr/******************************************************************************* 147142403Snectar * 148142403Snectar * FUNCTION: AcpiDmAddressSpace 149142403Snectar * 150127808Snectar * PARAMETERS: SpaceId - ID to be translated 15155682Smarkm * 15272445Sassar * RETURN: None 153127808Snectar * 154233294Sstas * DESCRIPTION: Decode a SpaceId to an AddressSpaceKeyword 155233294Sstas * 156127808Snectar ******************************************************************************/ 157127808Snectar 158127808Snectarvoid 15955682SmarkmAcpiDmAddressSpace ( 16055682Smarkm UINT8 SpaceId) 161233294Sstas{ 162233294Sstas 16355682Smarkm if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS) 16455682Smarkm { 16555682Smarkm if (SpaceId == 0x7F) 166233294Sstas { 167127808Snectar AcpiOsPrintf ("FFixedHW, "); 16890926Snectar } 16972445Sassar else 170127808Snectar { 171127808Snectar AcpiOsPrintf ("0x%.2X, ", SpaceId); 172233294Sstas } 17355682Smarkm } 174127808Snectar else 175233294Sstas { 17690926Snectar AcpiOsPrintf ("%s, ", AcpiGbl_RegionTypes [SpaceId]); 177178825Sdfr } 178178825Sdfr} 17972445Sassar 180233294Sstas 181233294Sstas/******************************************************************************* 182233294Sstas * 183127808Snectar * FUNCTION: AcpiDmRegionFlags 184127808Snectar * 185127808Snectar * PARAMETERS: Op - Object to be examined 186127808Snectar * 187127808Snectar * RETURN: None 188233294Sstas * 189178825Sdfr * DESCRIPTION: Decode OperationRegion flags 19055682Smarkm * 19172445Sassar ******************************************************************************/ 192178825Sdfr 193127808Snectarvoid 194127808SnectarAcpiDmRegionFlags ( 195233294Sstas ACPI_PARSE_OBJECT *Op) 196233294Sstas{ 197127808Snectar 198127808Snectar 199233294Sstas /* The next Op contains the SpaceId */ 200178825Sdfr 201127808Snectar Op = AcpiPsGetDepthNext (NULL, Op); 202127808Snectar 203127808Snectar /* Mark the Op as completed */ 20490926Snectar 205233294Sstas Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; 206127808Snectar 207178825Sdfr AcpiOsPrintf (", "); 20855682Smarkm AcpiDmAddressSpace ((UINT8) Op->Common.Value.Integer); 209102644Snectar} 210102644Snectar 211178825Sdfr 212127808Snectar/******************************************************************************* 213127808Snectar * 21455682Smarkm * FUNCTION: AcpiDmMatchOp 21555682Smarkm * 21690926Snectar * PARAMETERS: Op - Match Object to be examined 217127808Snectar * 218127808Snectar * RETURN: None 219127808Snectar * 220127808Snectar * DESCRIPTION: Decode Match opcode operands 221127808Snectar * 22290926Snectar ******************************************************************************/ 22390926Snectar 22490926Snectarvoid 225127808SnectarAcpiDmMatchOp ( 226127808Snectar ACPI_PARSE_OBJECT *Op) 227127808Snectar{ 228127808Snectar ACPI_PARSE_OBJECT *NextOp; 229233294Sstas 230127808Snectar 231127808Snectar NextOp = AcpiPsGetDepthNext (NULL, Op); 232233294Sstas NextOp = NextOp->Common.Next; 233178825Sdfr 234127808Snectar if (!NextOp) 235127808Snectar { 236127808Snectar /* Handle partial tree during single-step */ 237127808Snectar 238127808Snectar return; 239127808Snectar } 240127808Snectar 241127808Snectar /* Mark the two nodes that contain the encoding for the match keywords */ 242178825Sdfr 243178825Sdfr NextOp->Common.DisasmOpcode = ACPI_DASM_MATCHOP; 244178825Sdfr 245178825Sdfr NextOp = NextOp->Common.Next; 246127808Snectar NextOp = NextOp->Common.Next; 247127808Snectar NextOp->Common.DisasmOpcode = ACPI_DASM_MATCHOP; 24855682Smarkm} 249127808Snectar 250233294Sstas 251233294Sstas/******************************************************************************* 252127808Snectar * 253127808Snectar * FUNCTION: AcpiDmMatchKeyword 254127808Snectar * 255127808Snectar * PARAMETERS: Op - Match Object to be examined 256127808Snectar * 25755682Smarkm * RETURN: None 258127808Snectar * 259127808Snectar * DESCRIPTION: Decode Match opcode operands 260178825Sdfr * 261127808Snectar ******************************************************************************/ 262127808Snectar 26355682Smarkmstatic void 26455682SmarkmAcpiDmMatchKeyword ( 265127808Snectar ACPI_PARSE_OBJECT *Op) 266127808Snectar{ 267233294Sstas 268127808Snectar 269127808Snectar if (((UINT32) Op->Common.Value.Integer) > ACPI_MAX_MATCH_OPCODE) 270233294Sstas { 27155682Smarkm AcpiOsPrintf ("/* Unknown Match Keyword encoding */"); 27255682Smarkm } 273120945Snectar else 274127808Snectar { 275233294Sstas AcpiOsPrintf ("%s", ACPI_CAST_PTR (char, 276178825Sdfr AcpiGbl_MatchOps[(ACPI_SIZE) Op->Common.Value.Integer])); 277233294Sstas } 278233294Sstas} 279233294Sstas 28055682Smarkm 281233294Sstas/******************************************************************************* 282127808Snectar * 283233294Sstas * FUNCTION: AcpiDmDisassembleOneOp 284233294Sstas * 28555682Smarkm * PARAMETERS: WalkState - Current walk info 286127808Snectar * Info - Parse tree walk info 287127808Snectar * Op - Op that is to be printed 288127808Snectar * 289127808Snectar * RETURN: None 290233294Sstas * 291127808Snectar * DESCRIPTION: Disassemble a single AML opcode 292127808Snectar * 293233294Sstas ******************************************************************************/ 294233294Sstas 295233294Sstasvoid 296233294SstasAcpiDmDisassembleOneOp ( 29755682Smarkm ACPI_WALK_STATE *WalkState, 298233294Sstas ACPI_OP_WALK_INFO *Info, 299127808Snectar ACPI_PARSE_OBJECT *Op) 300127808Snectar{ 301233294Sstas const ACPI_OPCODE_INFO *OpInfo = NULL; 302233294Sstas UINT32 Offset; 303102644Snectar UINT32 Length; 30455682Smarkm ACPI_PARSE_OBJECT *Child; 305178825Sdfr ACPI_STATUS Status; 30655682Smarkm 30755682Smarkm 30855682Smarkm if (!Op) 309178825Sdfr { 31090926Snectar AcpiOsPrintf ("<NULL OP PTR>"); 31190926Snectar return; 31290926Snectar } 31390926Snectar 31455682Smarkm switch (Op->Common.DisasmOpcode) 315178825Sdfr { 316178825Sdfr case ACPI_DASM_MATCHOP: 317178825Sdfr 318178825Sdfr AcpiDmMatchKeyword (Op); 319178825Sdfr return; 320233294Sstas 321127808Snectar case ACPI_DASM_LNOT_SUFFIX: 322233294Sstas switch (Op->Common.AmlOpcode) 323233294Sstas { 324127808Snectar case AML_LEQUAL_OP: 325233294Sstas AcpiOsPrintf ("LNotEqual"); 326178825Sdfr break; 327178825Sdfr 328127808Snectar case AML_LGREATER_OP: 329127808Snectar AcpiOsPrintf ("LLessEqual"); 330127808Snectar break; 331127808Snectar 332127808Snectar case AML_LLESS_OP: 333127808Snectar AcpiOsPrintf ("LGreaterEqual"); 334178825Sdfr break; 335127808Snectar 336178825Sdfr default: 337178825Sdfr break; 338102644Snectar } 339102644Snectar Op->Common.DisasmOpcode = 0; 340102644Snectar Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; 341178825Sdfr return; 342127808Snectar 343127808Snectar default: 344127808Snectar break; 345127808Snectar } 346127808Snectar 347127808Snectar 348178825Sdfr OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); 349127808Snectar 350127808Snectar /* The op and arguments */ 35172445Sassar 352127808Snectar switch (Op->Common.AmlOpcode) 353127808Snectar { 354178825Sdfr case AML_LNOT_OP: 355127808Snectar 356127808Snectar Child = Op->Common.Value.Arg; 357142403Snectar if ((Child->Common.AmlOpcode == AML_LEQUAL_OP) || 358127808Snectar (Child->Common.AmlOpcode == AML_LGREATER_OP) || 359178825Sdfr (Child->Common.AmlOpcode == AML_LLESS_OP)) 360127808Snectar { 361127808Snectar Child->Common.DisasmOpcode = ACPI_DASM_LNOT_SUFFIX; 362178825Sdfr Op->Common.DisasmOpcode = ACPI_DASM_LNOT_PREFIX; 363127808Snectar } 364127808Snectar else 365178825Sdfr { 366233294Sstas AcpiOsPrintf ("%s", OpInfo->Name); 367127808Snectar } 368127808Snectar break; 369233294Sstas 370178825Sdfr case AML_BYTE_OP: 371178825Sdfr 372233294Sstas AcpiOsPrintf ("0x%2.2X", (UINT32) Op->Common.Value.Integer); 373233294Sstas break; 374233294Sstas 375102644Snectar 37690926Snectar case AML_WORD_OP: 37772445Sassar 37855682Smarkm if (Op->Common.DisasmOpcode == ACPI_DASM_EISAID) 379233294Sstas { 38055682Smarkm AcpiDmEisaId ((UINT32) Op->Common.Value.Integer); 38155682Smarkm } 38255682Smarkm else 38355682Smarkm { 38455682Smarkm AcpiOsPrintf ("0x%4.4X", (UINT32) Op->Common.Value.Integer); 38555682Smarkm } 386233294Sstas break; 38755682Smarkm 388120945Snectar 38990926Snectar case AML_DWORD_OP: 39072445Sassar 39155682Smarkm if (Op->Common.DisasmOpcode == ACPI_DASM_EISAID) 39290926Snectar { 393233294Sstas AcpiDmEisaId ((UINT32) Op->Common.Value.Integer); 39490926Snectar } 39572445Sassar else 396178825Sdfr { 397178825Sdfr AcpiOsPrintf ("0x%8.8X", (UINT32) Op->Common.Value.Integer); 39872445Sassar } 39972445Sassar break; 400178825Sdfr 40172445Sassar 40272445Sassar case AML_QWORD_OP: 40355682Smarkm 404233294Sstas AcpiOsPrintf ("0x%8.8X%8.8X", 40590926Snectar ACPI_FORMAT_UINT64 (Op->Common.Value.Integer)); 40655682Smarkm break; 40755682Smarkm 408233294Sstas 409142403Snectar case AML_STRING_OP: 410142403Snectar 411142403Snectar AcpiUtPrintString (Op->Common.Value.String, ACPI_UINT8_MAX); 412142403Snectar break; 413233294Sstas 414233294Sstas 415142403Snectar case AML_BUFFER_OP: 416142403Snectar 417142403Snectar /* 418233294Sstas * Determine the type of buffer. We can have one of the following: 419233294Sstas * 420233294Sstas * 1) ResourceTemplate containing Resource Descriptors. 421142403Snectar * 2) Unicode String buffer 422142403Snectar * 3) ASCII String buffer 423142403Snectar * 4) Raw data buffer (if none of the above) 424142403Snectar * 425142403Snectar * Since there are no special AML opcodes to differentiate these 426142403Snectar * types of buffers, we have to closely look at the data in the 427142403Snectar * buffer to determine the type. 428142403Snectar */ 429142403Snectar Status = AcpiDmIsResourceTemplate (Op); 430142403Snectar if (ACPI_SUCCESS (Status)) 431142403Snectar { 432142403Snectar Op->Common.DisasmOpcode = ACPI_DASM_RESOURCE; 433142403Snectar AcpiOsPrintf ("ResourceTemplate"); 434142403Snectar break; 435142403Snectar } 436142403Snectar else if (Status == AE_AML_NO_RESOURCE_END_TAG) 437142403Snectar { 438233294Sstas AcpiOsPrintf ("/**** Is ResourceTemplate, but EndTag not at buffer end ****/ "); 43972445Sassar } 44072445Sassar 441178825Sdfr if (AcpiDmIsUnicodeBuffer (Op)) 442233294Sstas { 443233294Sstas Op->Common.DisasmOpcode = ACPI_DASM_UNICODE; 444233294Sstas AcpiOsPrintf ("Unicode ("); 445233294Sstas } 446233294Sstas else if (AcpiDmIsStringBuffer (Op)) 447233294Sstas { 448233294Sstas Op->Common.DisasmOpcode = ACPI_DASM_STRING; 449233294Sstas AcpiOsPrintf ("Buffer"); 450233294Sstas } 451233294Sstas else 452233294Sstas { 453233294Sstas Op->Common.DisasmOpcode = ACPI_DASM_BUFFER; 454233294Sstas AcpiOsPrintf ("Buffer"); 455233294Sstas } 456233294Sstas break; 457233294Sstas 458233294Sstas 459233294Sstas case AML_INT_STATICSTRING_OP: 460233294Sstas 461233294Sstas if (Op->Common.Value.String) 462233294Sstas { 46355682Smarkm AcpiOsPrintf ("%s", Op->Common.Value.String); 46472445Sassar } 46572445Sassar else 466233294Sstas { 467233294Sstas AcpiOsPrintf ("\"<NULL STATIC STRING PTR>\""); 468233294Sstas } 469233294Sstas break; 470233294Sstas 471233294Sstas 472233294Sstas case AML_INT_NAMEPATH_OP: 47355682Smarkm 47490926Snectar AcpiDmNamestring (Op->Common.Value.Name); 475233294Sstas break; 476233294Sstas 477233294Sstas 478233294Sstas case AML_INT_NAMEDFIELD_OP: 479233294Sstas 480233294Sstas Length = AcpiDmDumpName (Op->Named.Name); 481233294Sstas AcpiOsPrintf (",%*.s %u", (unsigned) (5 - Length), " ", 48290926Snectar (UINT32) Op->Common.Value.Integer); 48390926Snectar AcpiDmCommaIfFieldMember (Op); 484178825Sdfr 48590926Snectar Info->BitOffset += (UINT32) Op->Common.Value.Integer; 48655682Smarkm break; 487142403Snectar 48855682Smarkm 48955682Smarkm case AML_INT_RESERVEDFIELD_OP: 49055682Smarkm 49155682Smarkm /* Offset() -- Must account for previous offsets */ 492233294Sstas 493233294Sstas Offset = (UINT32) Op->Common.Value.Integer; 49490926Snectar Info->BitOffset += Offset; 495233294Sstas 496233294Sstas if (Info->BitOffset % 8 == 0) 497233294Sstas { 498233294Sstas AcpiOsPrintf (" Offset (0x%.2X)", ACPI_DIV_8 (Info->BitOffset)); 499233294Sstas } 50055682Smarkm else 50172445Sassar { 502233294Sstas AcpiOsPrintf (" , %u", Offset); 503233294Sstas } 504233294Sstas 505233294Sstas AcpiDmCommaIfFieldMember (Op); 506233294Sstas break; 50790926Snectar 50872445Sassar 509233294Sstas case AML_INT_ACCESSFIELD_OP: 510233294Sstas 511233294Sstas AcpiOsPrintf (" AccessAs (%s, ", 512233294Sstas AcpiGbl_AccessTypes [(UINT32) (Op->Common.Value.Integer >> 8) & 0x7]); 513233294Sstas 514102644Snectar AcpiDmDecodeAttribute ((UINT8) Op->Common.Value.Integer); 515102644Snectar AcpiOsPrintf (")"); 516102644Snectar AcpiDmCommaIfFieldMember (Op); 517102644Snectar break; 518102644Snectar 519102644Snectar 520233294Sstas case AML_INT_BYTELIST_OP: 521178825Sdfr 522178825Sdfr AcpiDmByteList (Info, Op); 523233294Sstas break; 524233294Sstas 525233294Sstas 526233294Sstas case AML_INT_METHODCALL_OP: 527233294Sstas 528233294Sstas Op = AcpiPsGetDepthNext (NULL, Op); 529233294Sstas Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; 530233294Sstas 531233294Sstas AcpiDmNamestring (Op->Common.Value.Name); 532233294Sstas break; 533233294Sstas 534233294Sstas 535233294Sstas default: 536233294Sstas 537233294Sstas /* Just get the opcode name and print it */ 538233294Sstas 539178825Sdfr AcpiOsPrintf ("%s", OpInfo->Name); 540233294Sstas 541233294Sstas 542233294Sstas#ifdef ACPI_DEBUGGER 543233294Sstas 544233294Sstas if ((Op->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP) && 545233294Sstas (WalkState) && 546233294Sstas (WalkState->Results) && 547178825Sdfr (WalkState->ResultCount)) 548178825Sdfr { 549233294Sstas AcpiDmDecodeInternalObject ( 550233294Sstas WalkState->Results->Results.ObjDesc [ 551233294Sstas (WalkState->ResultCount - 1) % 552233294Sstas ACPI_RESULTS_FRAME_OBJ_NUM]); 553233294Sstas } 554233294Sstas#endif 555233294Sstas 556233294Sstas break; 557233294Sstas } 558102644Snectar} 55972445Sassar 560102644Snectar#endif /* ACPI_DISASSEMBLER */ 56172445Sassar