1 /****************************************************************************** 2 * 3 * Module Name: aslbtypes - Support for bitfield types 4 * 5 *****************************************************************************/ 6 7 /****************************************************************************** 8 * 9 * 1. Copyright Notice 10 * 11 * Some or all of this work - Copyright (c) 1999 - 2021, Intel Corp. 12 * All rights reserved. 13 * 14 * 2. License 15 * 16 * 2.1. This is your license from Intel Corp. under its intellectual property 17 * rights. You may have additional license terms from the party that provided 18 * you this software, covering your right to use that party's intellectual 19 * property rights. 20 * 21 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 22 * copy of the source code appearing in this file ("Covered Code") an 23 * irrevocable, perpetual, worldwide license under Intel's copyrights in the 24 * base code distributed originally by Intel ("Original Intel Code") to copy, 25 * make derivatives, distribute, use and display any portion of the Covered 26 * Code in any form, with the right to sublicense such rights; and 27 * 28 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 29 * license (with the right to sublicense), under only those claims of Intel 30 * patents that are infringed by the Original Intel Code, to make, use, sell, 31 * offer to sell, and import the Covered Code and derivative works thereof 32 * solely to the minimum extent necessary to exercise the above copyright 33 * license, and in no event shall the patent license extend to any additions 34 * to or modifications of the Original Intel Code. No other license or right 35 * is granted directly or by implication, estoppel or otherwise; 36 * 37 * The above copyright and patent license is granted only if the following 38 * conditions are met: 39 * 40 * 3. Conditions 41 * 42 * 3.1. Redistribution of Source with Rights to Further Distribute Source. 43 * Redistribution of source code of any substantial portion of the Covered 44 * Code or modification with rights to further distribute source must include 45 * the above Copyright Notice, the above License, this list of Conditions, 46 * and the following Disclaimer and Export Compliance provision. In addition, 47 * Licensee must cause all Covered Code to which Licensee contributes to 48 * contain a file documenting the changes Licensee made to create that Covered 49 * Code and the date of any change. Licensee must include in that file the 50 * documentation of any changes made by any predecessor Licensee. Licensee 51 * must include a prominent statement that the modification is derived, 52 * directly or indirectly, from Original Intel Code. 53 * 54 * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 55 * Redistribution of source code of any substantial portion of the Covered 56 * Code or modification without rights to further distribute source must 57 * include the following Disclaimer and Export Compliance provision in the 58 * documentation and/or other materials provided with distribution. In 59 * addition, Licensee may not authorize further sublicense of source of any 60 * portion of the Covered Code, and must include terms to the effect that the 61 * license from Licensee to its licensee is limited to the intellectual 62 * property embodied in the software Licensee provides to its licensee, and 63 * not to intellectual property embodied in modifications its licensee may 64 * make. 65 * 66 * 3.3. Redistribution of Executable. Redistribution in executable form of any 67 * substantial portion of the Covered Code or modification must reproduce the 68 * above Copyright Notice, and the following Disclaimer and Export Compliance 69 * provision in the documentation and/or other materials provided with the 70 * distribution. 71 * 72 * 3.4. Intel retains all right, title, and interest in and to the Original 73 * Intel Code. 74 * 75 * 3.5. Neither the name Intel nor any other trademark owned or controlled by 76 * Intel shall be used in advertising or otherwise to promote the sale, use or 77 * other dealings in products derived from or relating to the Covered Code 78 * without prior written authorization from Intel. 79 * 80 * 4. Disclaimer and Export Compliance 81 * 82 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 83 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 84 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 85 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 86 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 87 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 88 * PARTICULAR PURPOSE. 89 * 90 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 91 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 92 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 93 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 94 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 95 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 96 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 97 * LIMITED REMEDY. 98 * 99 * 4.3. Licensee shall not export, either directly or indirectly, any of this 100 * software or system incorporating such software without first obtaining any 101 * required license or other approval from the U. S. Department of Commerce or 102 * any other agency or department of the United States Government. In the 103 * event Licensee exports any such software from the United States or 104 * re-exports any such software from a foreign destination, Licensee shall 105 * ensure that the distribution and export/re-export of the software is in 106 * compliance with all laws, regulations, orders, or other restrictions of the 107 * U.S. Export Administration Regulations. Licensee agrees that neither it nor 108 * any of its subsidiaries will export/re-export any technical data, process, 109 * software, or service, directly or indirectly, to any country for which the 110 * United States government or any agency thereof requires an export license, 111 * other governmental approval, or letter of assurance, without first obtaining 112 * such license, approval or letter. 113 * 114 ***************************************************************************** 115 * 116 * Alternatively, you may choose to be licensed under the terms of the 117 * following license: 118 * 119 * Redistribution and use in source and binary forms, with or without 120 * modification, are permitted provided that the following conditions 121 * are met: 122 * 1. Redistributions of source code must retain the above copyright 123 * notice, this list of conditions, and the following disclaimer, 124 * without modification. 125 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 126 * substantially similar to the "NO WARRANTY" disclaimer below 127 * ("Disclaimer") and any redistribution must be conditioned upon 128 * including a substantially similar Disclaimer requirement for further 129 * binary redistribution. 130 * 3. Neither the names of the above-listed copyright holders nor the names 131 * of any contributors may be used to endorse or promote products derived 132 * from this software without specific prior written permission. 133 * 134 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 135 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 136 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 137 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 138 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 139 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 140 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 141 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 142 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 143 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 144 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 145 * 146 * Alternatively, you may choose to be licensed under the terms of the 147 * GNU General Public License ("GPL") version 2 as published by the Free 148 * Software Foundation. 149 * 150 *****************************************************************************/ 151 152 #include "aslcompiler.h" 153 #include "aslcompiler.y.h" 154 #include "amlcode.h" 155 156 157 #define _COMPONENT ACPI_COMPILER 158 ACPI_MODULE_NAME ("aslbtypes") 159 160 /* Local prototypes */ 161 162 static UINT32 163 AnMapEtypeToBtype ( 164 UINT32 Etype); 165 166 167 /******************************************************************************* 168 * 169 * FUNCTION: AnMapArgTypeToBtype 170 * 171 * PARAMETERS: ArgType - The ARGI required type(s) for this 172 * argument, from the opcode info table 173 * 174 * RETURN: The corresponding Bit-encoded types 175 * 176 * DESCRIPTION: Convert an encoded ARGI required argument type code into a 177 * bitfield type code. Implements the implicit source conversion 178 * rules. 179 * 180 ******************************************************************************/ 181 182 UINT32 183 AnMapArgTypeToBtype ( 184 UINT32 ArgType) 185 { 186 187 switch (ArgType) 188 { 189 /* Simple types */ 190 191 case ARGI_ANYTYPE: 192 193 return (ACPI_BTYPE_OBJECTS_AND_REFS); 194 195 case ARGI_PACKAGE: 196 197 return (ACPI_BTYPE_PACKAGE); 198 199 case ARGI_EVENT: 200 201 return (ACPI_BTYPE_EVENT); 202 203 case ARGI_MUTEX: 204 205 return (ACPI_BTYPE_MUTEX); 206 207 case ARGI_DDBHANDLE: 208 /* 209 * DDBHandleObject := SuperName 210 * ACPI_BTYPE_REFERENCE_OBJECT: 211 * Index reference as parameter of Load/Unload 212 */ 213 return (ACPI_BTYPE_DDB_HANDLE | ACPI_BTYPE_REFERENCE_OBJECT); 214 215 /* Interchangeable types */ 216 /* 217 * Source conversion rules: 218 * Integer, String, and Buffer are all interchangeable 219 */ 220 case ARGI_INTEGER: 221 case ARGI_STRING: 222 case ARGI_BUFFER: 223 case ARGI_BUFFER_OR_STRING: 224 case ARGI_COMPUTEDATA: 225 226 return (ACPI_BTYPE_COMPUTE_DATA); 227 228 /* References */ 229 230 case ARGI_INTEGER_REF: 231 232 return (ACPI_BTYPE_INTEGER); 233 234 case ARGI_OBJECT_REF: 235 236 return (ACPI_BTYPE_ALL_OBJECTS); 237 238 case ARGI_DEVICE_REF: 239 240 return (ACPI_BTYPE_DEVICE_OBJECTS); 241 242 case ARGI_REFERENCE: 243 244 return (ACPI_BTYPE_NAMED_REFERENCE); /* Name or Namestring */ 245 246 case ARGI_TARGETREF: 247 248 /* 249 * Target operand for most math and logic operators. 250 * Package objects not allowed as target. 251 */ 252 return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_DEBUG_OBJECT | 253 ACPI_BTYPE_REFERENCE_OBJECT); 254 255 case ARGI_STORE_TARGET: 256 257 /* Special target for Store(), includes packages */ 258 259 return (ACPI_BTYPE_DATA | ACPI_BTYPE_DEBUG_OBJECT | 260 ACPI_BTYPE_REFERENCE_OBJECT); 261 262 case ARGI_FIXED_TARGET: 263 case ARGI_SIMPLE_TARGET: 264 265 return (ACPI_BTYPE_OBJECTS_AND_REFS); 266 267 /* Complex types */ 268 269 case ARGI_DATAOBJECT: 270 /* 271 * Buffer, string, package or reference to a Op - 272 * Used only by SizeOf operator 273 */ 274 return (ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER | 275 ACPI_BTYPE_PACKAGE | ACPI_BTYPE_REFERENCE_OBJECT); 276 277 case ARGI_COMPLEXOBJ: 278 279 /* Buffer, String, or package */ 280 281 return (ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER | 282 ACPI_BTYPE_PACKAGE); 283 284 case ARGI_REF_OR_STRING: 285 286 /* Used by DeRefOf operator only */ 287 288 return (ACPI_BTYPE_STRING | ACPI_BTYPE_REFERENCE_OBJECT); 289 290 case ARGI_REGION_OR_BUFFER: 291 292 /* Used by Load() only. Allow buffers in addition to regions/fields */ 293 294 return (ACPI_BTYPE_REGION | ACPI_BTYPE_BUFFER | 295 ACPI_BTYPE_FIELD_UNIT); 296 297 case ARGI_DATAREFOBJ: 298 299 /* Used by Store() only, as the source operand */ 300 301 return (ACPI_BTYPE_DATA_REFERENCE | ACPI_BTYPE_REFERENCE_OBJECT); 302 303 default: 304 305 break; 306 } 307 308 return (ACPI_BTYPE_OBJECTS_AND_REFS); 309 } 310 311 312 /******************************************************************************* 313 * 314 * FUNCTION: AnMapEtypeToBtype 315 * 316 * PARAMETERS: Etype - Encoded ACPI Type 317 * 318 * RETURN: Btype corresponding to the Etype 319 * 320 * DESCRIPTION: Convert an encoded ACPI type to a bitfield type applying the 321 * operand conversion rules. In other words, returns the type(s) 322 * this Etype is implicitly converted to during interpretation. 323 * 324 ******************************************************************************/ 325 326 static UINT32 327 AnMapEtypeToBtype ( 328 UINT32 Etype) 329 { 330 331 if (Etype == ACPI_TYPE_ANY) 332 { 333 return (ACPI_BTYPE_OBJECTS_AND_REFS); 334 } 335 336 /* Try the standard ACPI data types */ 337 338 if (Etype <= ACPI_TYPE_EXTERNAL_MAX) 339 { 340 /* 341 * This switch statement implements the allowed operand conversion 342 * rules as per the "ASL Data Types" section of the ACPI 343 * specification. 344 */ 345 switch (Etype) 346 { 347 case ACPI_TYPE_INTEGER: 348 349 return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_DDB_HANDLE); 350 351 case ACPI_TYPE_STRING: 352 case ACPI_TYPE_BUFFER: 353 354 return (ACPI_BTYPE_COMPUTE_DATA); 355 356 case ACPI_TYPE_PACKAGE: 357 358 return (ACPI_BTYPE_PACKAGE); 359 360 case ACPI_TYPE_FIELD_UNIT: 361 362 return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_FIELD_UNIT); 363 364 case ACPI_TYPE_BUFFER_FIELD: 365 366 return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_BUFFER_FIELD); 367 368 case ACPI_TYPE_DDB_HANDLE: 369 370 return (ACPI_BTYPE_INTEGER | ACPI_BTYPE_DDB_HANDLE); 371 372 case ACPI_TYPE_DEBUG_OBJECT: 373 374 /* Cannot be used as a source operand */ 375 376 return (0); 377 378 default: 379 380 return (1 << (Etype - 1)); 381 } 382 } 383 384 /* Try the internal data types */ 385 386 switch (Etype) 387 { 388 case ACPI_TYPE_LOCAL_REGION_FIELD: 389 case ACPI_TYPE_LOCAL_BANK_FIELD: 390 case ACPI_TYPE_LOCAL_INDEX_FIELD: 391 392 /* Named fields can be either Integer/Buffer/String */ 393 394 return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_FIELD_UNIT); 395 396 case ACPI_TYPE_LOCAL_ALIAS: 397 398 return (ACPI_BTYPE_INTEGER); 399 400 401 case ACPI_TYPE_LOCAL_RESOURCE: 402 case ACPI_TYPE_LOCAL_RESOURCE_FIELD: 403 404 return (ACPI_BTYPE_REFERENCE_OBJECT); 405 406 default: 407 408 printf ("Unhandled encoded type: %X\n", Etype); 409 return (0); 410 } 411 } 412 413 414 /******************************************************************************* 415 * 416 * FUNCTION: AnFormatBtype 417 * 418 * PARAMETERS: Btype - Bitfield of ACPI types 419 * Buffer - Where to put the ascii string 420 * 421 * RETURN: None. 422 * 423 * DESCRIPTION: Convert a Btype to a string of ACPI types 424 * 425 ******************************************************************************/ 426 427 void 428 AnFormatBtype ( 429 char *Buffer, 430 UINT32 Btype) 431 { 432 UINT32 Type; 433 BOOLEAN First = TRUE; 434 435 436 *Buffer = 0; 437 if (Btype == 0) 438 { 439 strcat (Buffer, "NoReturnValue"); 440 return; 441 } 442 443 for (Type = 1; Type <= ACPI_TYPE_EXTERNAL_MAX; Type++) 444 { 445 if (Btype & 0x00000001) 446 { 447 if (!First) 448 { 449 strcat (Buffer, "|"); 450 } 451 452 First = FALSE; 453 strcat (Buffer, AcpiUtGetTypeName (Type)); 454 } 455 Btype >>= 1; 456 } 457 458 if (Btype & 0x00000001) 459 { 460 if (!First) 461 { 462 strcat (Buffer, "|"); 463 } 464 465 First = FALSE; 466 strcat (Buffer, "Reference"); 467 } 468 469 Btype >>= 1; 470 if (Btype & 0x00000001) 471 { 472 if (!First) 473 { 474 strcat (Buffer, "|"); 475 } 476 477 strcat (Buffer, "Resource"); 478 } 479 } 480 481 482 /******************************************************************************* 483 * 484 * FUNCTION: AnGetBtype 485 * 486 * PARAMETERS: Op - Parse node whose type will be returned. 487 * 488 * RETURN: The Btype associated with the Op. 489 * 490 * DESCRIPTION: Get the (bitfield) ACPI type associated with the parse node. 491 * Handles the case where the node is a name or method call and 492 * the actual type must be obtained from the namespace node. 493 * 494 ******************************************************************************/ 495 496 UINT32 497 AnGetBtype ( 498 ACPI_PARSE_OBJECT *Op) 499 { 500 ACPI_NAMESPACE_NODE *Node; 501 ACPI_PARSE_OBJECT *ReferencedNode; 502 UINT32 ThisNodeBtype = 0; 503 504 505 if (!Op) 506 { 507 AcpiOsPrintf ("Null Op in AnGetBtype\n"); 508 return (ACPI_UINT32_MAX); 509 } 510 511 if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || 512 (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) || 513 (Op->Asl.ParseOpcode == PARSEOP_METHODCALL)) 514 { 515 Node = Op->Asl.Node; 516 if (!Node) 517 { 518 /* These are not expected to have a node at this time */ 519 520 if ((Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CREATEWORDFIELD) || 521 (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CREATEDWORDFIELD) || 522 (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CREATEQWORDFIELD) || 523 (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CREATEBYTEFIELD) || 524 (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CREATEBITFIELD) || 525 (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CREATEFIELD) || 526 (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CONDREFOF)) 527 { 528 return (ACPI_UINT32_MAX - 1); 529 } 530 531 DbgPrint (ASL_DEBUG_OUTPUT, 532 "No attached Nsnode: [%s] at line %u name [%s], " 533 "ignoring typecheck. Parent [%s]\n", 534 Op->Asl.ParseOpName, Op->Asl.LineNumber, 535 Op->Asl.ExternalName, Op->Asl.Parent->Asl.ParseOpName); 536 return (ACPI_UINT32_MAX - 1); 537 } 538 539 ThisNodeBtype = AnMapEtypeToBtype (Node->Type); 540 if (!ThisNodeBtype) 541 { 542 AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op, 543 "could not map type"); 544 } 545 546 if (Op->Asl.ParseOpcode == PARSEOP_METHODCALL) 547 { 548 ReferencedNode = Node->Op; 549 if (!ReferencedNode) 550 { 551 /* Check for an internal method */ 552 553 if (AnIsInternalMethod (Op)) 554 { 555 return (AnGetInternalMethodReturnType (Op)); 556 } 557 558 AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op, 559 "null Op pointer"); 560 return (ACPI_UINT32_MAX); 561 } 562 563 if (ReferencedNode->Asl.CompileFlags & OP_METHOD_TYPED) 564 { 565 ThisNodeBtype = ReferencedNode->Asl.AcpiBtype; 566 } 567 else 568 { 569 return (ACPI_UINT32_MAX -1); 570 } 571 } 572 } 573 else 574 { 575 ThisNodeBtype = Op->Asl.AcpiBtype; 576 } 577 578 return (ThisNodeBtype); 579 } 580 581 582 /******************************************************************************* 583 * 584 * FUNCTION: AnMapObjTypeToBtype 585 * 586 * PARAMETERS: Op - A parse node 587 * 588 * RETURN: A Btype 589 * 590 * DESCRIPTION: Map object to the associated "Btype" 591 * 592 ******************************************************************************/ 593 594 UINT32 595 AnMapObjTypeToBtype ( 596 ACPI_PARSE_OBJECT *Op) 597 { 598 599 switch (Op->Asl.ParseOpcode) 600 { 601 case PARSEOP_OBJECTTYPE_BFF: /* "BuffFieldObj" */ 602 603 return (ACPI_BTYPE_BUFFER_FIELD); 604 605 case PARSEOP_OBJECTTYPE_BUF: /* "BuffObj" */ 606 607 return (ACPI_BTYPE_BUFFER); 608 609 case PARSEOP_OBJECTTYPE_DDB: /* "DDBHandleObj" */ 610 611 return (ACPI_BTYPE_DDB_HANDLE); 612 613 case PARSEOP_OBJECTTYPE_DEV: /* "DeviceObj" */ 614 615 return (ACPI_BTYPE_DEVICE); 616 617 case PARSEOP_OBJECTTYPE_EVT: /* "EventObj" */ 618 619 return (ACPI_BTYPE_EVENT); 620 621 case PARSEOP_OBJECTTYPE_FLD: /* "FieldUnitObj" */ 622 623 return (ACPI_BTYPE_FIELD_UNIT); 624 625 case PARSEOP_OBJECTTYPE_INT: /* "IntObj" */ 626 627 return (ACPI_BTYPE_INTEGER); 628 629 case PARSEOP_OBJECTTYPE_MTH: /* "MethodObj" */ 630 631 return (ACPI_BTYPE_METHOD); 632 633 case PARSEOP_OBJECTTYPE_MTX: /* "MutexObj" */ 634 635 return (ACPI_BTYPE_MUTEX); 636 637 case PARSEOP_OBJECTTYPE_OPR: /* "OpRegionObj" */ 638 639 return (ACPI_BTYPE_REGION); 640 641 case PARSEOP_OBJECTTYPE_PKG: /* "PkgObj" */ 642 643 return (ACPI_BTYPE_PACKAGE); 644 645 case PARSEOP_OBJECTTYPE_POW: /* "PowerResObj" */ 646 647 return (ACPI_BTYPE_POWER); 648 649 case PARSEOP_OBJECTTYPE_STR: /* "StrObj" */ 650 651 return (ACPI_BTYPE_STRING); 652 653 case PARSEOP_OBJECTTYPE_THZ: /* "ThermalZoneObj" */ 654 655 return (ACPI_BTYPE_THERMAL); 656 657 case PARSEOP_OBJECTTYPE_UNK: /* "UnknownObj" */ 658 659 return (ACPI_BTYPE_OBJECTS_AND_REFS); 660 661 default: 662 663 return (0); 664 } 665 } 666 667 668 #ifdef ACPI_OBSOLETE_FUNCTIONS 669 /******************************************************************************* 670 * 671 * FUNCTION: AnMapBtypeToEtype 672 * 673 * PARAMETERS: Btype - Bitfield of ACPI types 674 * 675 * RETURN: The Etype corresponding the Btype 676 * 677 * DESCRIPTION: Convert a bitfield type to an encoded type 678 * 679 ******************************************************************************/ 680 681 UINT32 682 AnMapBtypeToEtype ( 683 UINT32 Btype) 684 { 685 UINT32 i; 686 UINT32 Etype; 687 688 689 if (Btype == 0) 690 { 691 return (0); 692 } 693 694 Etype = 1; 695 for (i = 1; i < Btype; i *= 2) 696 { 697 Etype++; 698 } 699 700 return (Etype); 701 } 702 #endif 703