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 - 2018, 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 First = FALSE; 478 strcat (Buffer, "Resource"); 479 } 480 } 481 482 483 /******************************************************************************* 484 * 485 * FUNCTION: AnGetBtype 486 * 487 * PARAMETERS: Op - Parse node whose type will be returned. 488 * 489 * RETURN: The Btype associated with the Op. 490 * 491 * DESCRIPTION: Get the (bitfield) ACPI type associated with the parse node. 492 * Handles the case where the node is a name or method call and 493 * the actual type must be obtained from the namespace node. 494 * 495 ******************************************************************************/ 496 497 UINT32 498 AnGetBtype ( 499 ACPI_PARSE_OBJECT *Op) 500 { 501 ACPI_NAMESPACE_NODE *Node; 502 ACPI_PARSE_OBJECT *ReferencedNode; 503 UINT32 ThisNodeBtype = 0; 504 505 506 if (!Op) 507 { 508 AcpiOsPrintf ("Null Op in AnGetBtype\n"); 509 return (ACPI_UINT32_MAX); 510 } 511 512 if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || 513 (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) || 514 (Op->Asl.ParseOpcode == PARSEOP_METHODCALL)) 515 { 516 Node = Op->Asl.Node; 517 if (!Node) 518 { 519 /* These are not expected to have a node at this time */ 520 521 if ((Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CREATEWORDFIELD) || 522 (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CREATEDWORDFIELD) || 523 (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CREATEQWORDFIELD) || 524 (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CREATEBYTEFIELD) || 525 (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CREATEBITFIELD) || 526 (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CREATEFIELD) || 527 (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CONDREFOF)) 528 { 529 return (ACPI_UINT32_MAX - 1); 530 } 531 532 DbgPrint (ASL_DEBUG_OUTPUT, 533 "No attached Nsnode: [%s] at line %u name [%s], " 534 "ignoring typecheck. Parent [%s]\n", 535 Op->Asl.ParseOpName, Op->Asl.LineNumber, 536 Op->Asl.ExternalName, Op->Asl.Parent->Asl.ParseOpName); 537 return (ACPI_UINT32_MAX - 1); 538 } 539 540 ThisNodeBtype = AnMapEtypeToBtype (Node->Type); 541 if (!ThisNodeBtype) 542 { 543 AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op, 544 "could not map type"); 545 } 546 547 if (Op->Asl.ParseOpcode == PARSEOP_METHODCALL) 548 { 549 ReferencedNode = Node->Op; 550 if (!ReferencedNode) 551 { 552 /* Check for an internal method */ 553 554 if (AnIsInternalMethod (Op)) 555 { 556 return (AnGetInternalMethodReturnType (Op)); 557 } 558 559 AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op, 560 "null Op pointer"); 561 return (ACPI_UINT32_MAX); 562 } 563 564 if (ReferencedNode->Asl.CompileFlags & OP_METHOD_TYPED) 565 { 566 ThisNodeBtype = ReferencedNode->Asl.AcpiBtype; 567 } 568 else 569 { 570 return (ACPI_UINT32_MAX -1); 571 } 572 } 573 } 574 else 575 { 576 ThisNodeBtype = Op->Asl.AcpiBtype; 577 } 578 579 return (ThisNodeBtype); 580 } 581 582 583 /******************************************************************************* 584 * 585 * FUNCTION: AnMapObjTypeToBtype 586 * 587 * PARAMETERS: Op - A parse node 588 * 589 * RETURN: A Btype 590 * 591 * DESCRIPTION: Map object to the associated "Btype" 592 * 593 ******************************************************************************/ 594 595 UINT32 596 AnMapObjTypeToBtype ( 597 ACPI_PARSE_OBJECT *Op) 598 { 599 600 switch (Op->Asl.ParseOpcode) 601 { 602 case PARSEOP_OBJECTTYPE_BFF: /* "BuffFieldObj" */ 603 604 return (ACPI_BTYPE_BUFFER_FIELD); 605 606 case PARSEOP_OBJECTTYPE_BUF: /* "BuffObj" */ 607 608 return (ACPI_BTYPE_BUFFER); 609 610 case PARSEOP_OBJECTTYPE_DDB: /* "DDBHandleObj" */ 611 612 return (ACPI_BTYPE_DDB_HANDLE); 613 614 case PARSEOP_OBJECTTYPE_DEV: /* "DeviceObj" */ 615 616 return (ACPI_BTYPE_DEVICE); 617 618 case PARSEOP_OBJECTTYPE_EVT: /* "EventObj" */ 619 620 return (ACPI_BTYPE_EVENT); 621 622 case PARSEOP_OBJECTTYPE_FLD: /* "FieldUnitObj" */ 623 624 return (ACPI_BTYPE_FIELD_UNIT); 625 626 case PARSEOP_OBJECTTYPE_INT: /* "IntObj" */ 627 628 return (ACPI_BTYPE_INTEGER); 629 630 case PARSEOP_OBJECTTYPE_MTH: /* "MethodObj" */ 631 632 return (ACPI_BTYPE_METHOD); 633 634 case PARSEOP_OBJECTTYPE_MTX: /* "MutexObj" */ 635 636 return (ACPI_BTYPE_MUTEX); 637 638 case PARSEOP_OBJECTTYPE_OPR: /* "OpRegionObj" */ 639 640 return (ACPI_BTYPE_REGION); 641 642 case PARSEOP_OBJECTTYPE_PKG: /* "PkgObj" */ 643 644 return (ACPI_BTYPE_PACKAGE); 645 646 case PARSEOP_OBJECTTYPE_POW: /* "PowerResObj" */ 647 648 return (ACPI_BTYPE_POWER); 649 650 case PARSEOP_OBJECTTYPE_STR: /* "StrObj" */ 651 652 return (ACPI_BTYPE_STRING); 653 654 case PARSEOP_OBJECTTYPE_THZ: /* "ThermalZoneObj" */ 655 656 return (ACPI_BTYPE_THERMAL); 657 658 case PARSEOP_OBJECTTYPE_UNK: /* "UnknownObj" */ 659 660 return (ACPI_BTYPE_OBJECTS_AND_REFS); 661 662 default: 663 664 return (0); 665 } 666 } 667 668 669 #ifdef ACPI_OBSOLETE_FUNCTIONS 670 /******************************************************************************* 671 * 672 * FUNCTION: AnMapBtypeToEtype 673 * 674 * PARAMETERS: Btype - Bitfield of ACPI types 675 * 676 * RETURN: The Etype corresponding the the Btype 677 * 678 * DESCRIPTION: Convert a bitfield type to an encoded type 679 * 680 ******************************************************************************/ 681 682 UINT32 683 AnMapBtypeToEtype ( 684 UINT32 Btype) 685 { 686 UINT32 i; 687 UINT32 Etype; 688 689 690 if (Btype == 0) 691 { 692 return (0); 693 } 694 695 Etype = 1; 696 for (i = 1; i < Btype; i *= 2) 697 { 698 Etype++; 699 } 700 701 return (Etype); 702 } 703 #endif 704