1 2 /****************************************************************************** 3 * 4 * Module Name: aslcompiler.h - common include file 5 * $Revision: 129 $ 6 * 7 *****************************************************************************/ 8 9 /****************************************************************************** 10 * 11 * 1. Copyright Notice 12 * 13 * Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp. 14 * All rights reserved. 15 * 16 * 2. License 17 * 18 * 2.1. This is your license from Intel Corp. under its intellectual property 19 * rights. You may have additional license terms from the party that provided 20 * you this software, covering your right to use that party's intellectual 21 * property rights. 22 * 23 * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a 24 * copy of the source code appearing in this file ("Covered Code") an 25 * irrevocable, perpetual, worldwide license under Intel's copyrights in the 26 * base code distributed originally by Intel ("Original Intel Code") to copy, 27 * make derivatives, distribute, use and display any portion of the Covered 28 * Code in any form, with the right to sublicense such rights; and 29 * 30 * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent 31 * license (with the right to sublicense), under only those claims of Intel 32 * patents that are infringed by the Original Intel Code, to make, use, sell, 33 * offer to sell, and import the Covered Code and derivative works thereof 34 * solely to the minimum extent necessary to exercise the above copyright 35 * license, and in no event shall the patent license extend to any additions 36 * to or modifications of the Original Intel Code. No other license or right 37 * is granted directly or by implication, estoppel or otherwise; 38 * 39 * The above copyright and patent license is granted only if the following 40 * conditions are met: 41 * 42 * 3. Conditions 43 * 44 * 3.1. Redistribution of Source with Rights to Further Distribute Source. 45 * Redistribution of source code of any substantial portion of the Covered 46 * Code or modification with rights to further distribute source must include 47 * the above Copyright Notice, the above License, this list of Conditions, 48 * and the following Disclaimer and Export Compliance provision. In addition, 49 * Licensee must cause all Covered Code to which Licensee contributes to 50 * contain a file documenting the changes Licensee made to create that Covered 51 * Code and the date of any change. Licensee must include in that file the 52 * documentation of any changes made by any predecessor Licensee. Licensee 53 * must include a prominent statement that the modification is derived, 54 * directly or indirectly, from Original Intel Code. 55 * 56 * 3.2. Redistribution of Source with no Rights to Further Distribute Source. 57 * Redistribution of source code of any substantial portion of the Covered 58 * Code or modification without rights to further distribute source must 59 * include the following Disclaimer and Export Compliance provision in the 60 * documentation and/or other materials provided with distribution. In 61 * addition, Licensee may not authorize further sublicense of source of any 62 * portion of the Covered Code, and must include terms to the effect that the 63 * license from Licensee to its licensee is limited to the intellectual 64 * property embodied in the software Licensee provides to its licensee, and 65 * not to intellectual property embodied in modifications its licensee may 66 * make. 67 * 68 * 3.3. Redistribution of Executable. Redistribution in executable form of any 69 * substantial portion of the Covered Code or modification must reproduce the 70 * above Copyright Notice, and the following Disclaimer and Export Compliance 71 * provision in the documentation and/or other materials provided with the 72 * distribution. 73 * 74 * 3.4. Intel retains all right, title, and interest in and to the Original 75 * Intel Code. 76 * 77 * 3.5. Neither the name Intel nor any other trademark owned or controlled by 78 * Intel shall be used in advertising or otherwise to promote the sale, use or 79 * other dealings in products derived from or relating to the Covered Code 80 * without prior written authorization from Intel. 81 * 82 * 4. Disclaimer and Export Compliance 83 * 84 * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED 85 * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE 86 * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, 87 * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY 88 * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY 89 * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A 90 * PARTICULAR PURPOSE. 91 * 92 * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES 93 * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR 94 * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, 95 * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY 96 * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL 97 * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS 98 * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY 99 * LIMITED REMEDY. 100 * 101 * 4.3. Licensee shall not export, either directly or indirectly, any of this 102 * software or system incorporating such software without first obtaining any 103 * required license or other approval from the U. S. Department of Commerce or 104 * any other agency or department of the United States Government. In the 105 * event Licensee exports any such software from the United States or 106 * re-exports any such software from a foreign destination, Licensee shall 107 * ensure that the distribution and export/re-export of the software is in 108 * compliance with all laws, regulations, orders, or other restrictions of the 109 * U.S. Export Administration Regulations. Licensee agrees that neither it nor 110 * any of its subsidiaries will export/re-export any technical data, process, 111 * software, or service, directly or indirectly, to any country for which the 112 * United States government or any agency thereof requires an export license, 113 * other governmental approval, or letter of assurance, without first obtaining 114 * such license, approval or letter. 115 * 116 *****************************************************************************/ 117 118 119 #ifndef __ASLCOMPILER_H 120 #define __ASLCOMPILER_H 121 122 123 /* Microsoft-specific */ 124 125 #if (defined WIN32 || defined WIN64) 126 127 /* warn : used #pragma pack */ 128 #pragma warning(disable:4103) 129 130 /* warn : named type definition in parentheses */ 131 #pragma warning(disable:4115) 132 #endif 133 134 #include <stdio.h> 135 #include <stdlib.h> 136 #include <stdarg.h> 137 #include <string.h> 138 #include <errno.h> 139 #include <ctype.h> 140 141 142 #include "acpi.h" 143 #include "amlresrc.h" 144 #include "acdebug.h" 145 #include "asltypes.h" 146 #include "aslglobal.h" 147 148 149 /* 150 * Compiler versions and names 151 */ 152 153 #define CompilerCreatorRevision ACPI_CA_VERSION 154 155 #define IntelAcpiCA "Intel ACPI Component Architecture" 156 #define CompilerId "ASL Optimizing Compiler / AML Disassembler" 157 #define CompilerCopyright "Copyright (C) 2000 - 2004 Intel Corporation" 158 #define CompilerCompliance "ACPI 2.0c" 159 #define CompilerName "iasl" 160 #define CompilerCreatorId "INTL" 161 162 163 /* Configuration constants */ 164 165 #define ASL_MAX_ERROR_COUNT 200 166 #define ASL_NODE_CACHE_SIZE 1024 167 #define ASL_STRING_CACHE_SIZE 32768 168 169 #define ASL_FIRST_PARSE_OPCODE PARSEOP_ACCESSAS 170 #define ASL_YYTNAME_START 3 171 172 /* 173 * Macros 174 */ 175 176 #define ASL_RESDESC_OFFSET(m) ACPI_OFFSET (ASL_RESOURCE_DESC, m) 177 #define ASL_PTR_DIFF(a,b) ((UINT8 *)(b) - (UINT8 *)(a)) 178 #define ASL_PTR_ADD(a,b) ((UINT8 *)(a) = ((UINT8 *)(a) + (b))) 179 #define ASL_GET_CHILD_NODE(a) (a)->Asl.Child 180 #define ASL_GET_PEER_NODE(a) (a)->Asl.Next 181 #define OP_TABLE_ENTRY(a,b,c,d) {b,d,a,c} 182 183 184 #define ASL_PARSE_OPCODE_BASE PARSEOP_ACCESSAS /* First Lex type */ 185 186 187 /* Internal AML opcodes */ 188 189 #define AML_RAW_DATA_BYTE (UINT16) 0xAA01 /* write one raw byte */ 190 #define AML_RAW_DATA_WORD (UINT16) 0xAA02 /* write 2 raw bytes */ 191 #define AML_RAW_DATA_DWORD (UINT16) 0xAA04 /* write 4 raw bytes */ 192 #define AML_RAW_DATA_QWORD (UINT16) 0xAA08 /* write 8 raw bytes */ 193 #define AML_RAW_DATA_BUFFER (UINT16) 0xAA0B /* raw buffer with length */ 194 #define AML_RAW_DATA_CHAIN (UINT16) 0xAA0C /* chain of raw buffers */ 195 #define AML_PACKAGE_LENGTH (UINT16) 0xAA10 196 #define AML_UNASSIGNED_OPCODE (UINT16) 0xEEEE 197 #define AML_DEFAULT_ARG_OP (UINT16) 0xDDDD 198 199 200 /* filename suffixes for output files */ 201 202 #define FILE_SUFFIX_AML_CODE "aml" 203 #define FILE_SUFFIX_LISTING "lst" 204 #define FILE_SUFFIX_HEX_DUMP "hex" 205 #define FILE_SUFFIX_DEBUG "txt" 206 #define FILE_SUFFIX_SOURCE "src" 207 #define FILE_SUFFIX_NAMESPACE "nsp" 208 #define FILE_SUFFIX_ASM_SOURCE "asm" 209 #define FILE_SUFFIX_C_SOURCE "c" 210 #define FILE_SUFFIX_DISASSEMBLY "dsl" 211 #define FILE_SUFFIX_ASM_INCLUDE "inc" 212 #define FILE_SUFFIX_C_INCLUDE "h" 213 214 215 /* Misc */ 216 217 #define ASL_EXTERNAL_METHOD 255 218 #define ASL_ABORT TRUE 219 #define ASL_NO_ABORT FALSE 220 221 222 /******************************************************************************* 223 * 224 * Compiler prototypes 225 * 226 ******************************************************************************/ 227 228 229 void 230 end_stmt (void); 231 232 233 /* parser */ 234 235 int 236 AslCompilerparse( 237 void); 238 239 ACPI_PARSE_OBJECT * 240 AslDoError ( 241 void); 242 243 int 244 AslCompilererror( 245 char *s); 246 247 int 248 AslCompilerlex( 249 void); 250 251 void 252 ResetCurrentLineBuffer ( 253 void); 254 255 void 256 InsertLineBuffer ( 257 int SourceChar); 258 259 int 260 AslPopInputFileStack ( 261 void); 262 263 void 264 AslPushInputFileStack ( 265 FILE *InputFile, 266 char *Filename); 267 268 /* aslmain */ 269 270 void 271 AslCompilerSignon ( 272 UINT32 FileId); 273 274 void 275 AslCompilerFileHeader ( 276 UINT32 FileId); 277 278 void 279 AslDoSourceOutputFile ( 280 char *Buffer); 281 282 #define ASL_DEBUG_OUTPUT 0 283 #define ASL_PARSE_OUTPUT 1 284 #define ASL_TREE_OUTPUT 2 285 286 287 void 288 DbgPrint ( 289 UINT32 Type, 290 char *Format, 291 ...); 292 293 void 294 ErrorContext (void); 295 296 /* aslcompile */ 297 298 int 299 CmDoCompile (void); 300 301 void 302 CmDoOutputFiles (void); 303 304 void 305 CmCleanupAndExit (void); 306 307 308 /* aslerror */ 309 310 void 311 AslError ( 312 UINT8 Level, 313 UINT8 MessageId, 314 ACPI_PARSE_OBJECT *Op, 315 char *ExtraMessage); 316 317 void 318 AslCoreSubsystemError ( 319 ACPI_PARSE_OBJECT *Op, 320 ACPI_STATUS Status, 321 char *ExtraMessage, 322 BOOLEAN Abort); 323 324 void 325 AslCommonError ( 326 UINT8 Level, 327 UINT8 MessageId, 328 UINT32 CurrentLineNumber, 329 UINT32 LogicalLineNumber, 330 UINT32 LogicalByteOffset, 331 UINT32 Column, 332 char *Filename, 333 char *ExtraMessage); 334 335 void 336 AePrintException ( 337 UINT32 FileId, 338 ASL_ERROR_MSG *Enode, 339 char *Header); 340 341 void 342 AePrintErrorLog ( 343 UINT32 FileId); 344 345 ACPI_STATUS 346 AeLocalGetRootPointer ( 347 UINT32 Flags, 348 ACPI_PHYSICAL_ADDRESS *RsdpPhysicalAddress); 349 350 351 /* asllisting */ 352 353 void 354 LsWriteListingHexBytes ( 355 UINT8 *Buffer, 356 UINT32 Length, 357 UINT32 FileId); 358 359 void 360 LsWriteNodeToListing ( 361 ACPI_PARSE_OBJECT *Op, 362 UINT32 FileId); 363 364 void 365 LsWriteNodeToAsmListing ( 366 ACPI_PARSE_OBJECT *Op); 367 368 void 369 LsWriteNode ( 370 ACPI_PARSE_OBJECT *Op, 371 UINT32 FileId); 372 373 void 374 LsFinishSourceListing ( 375 UINT32 FileId); 376 377 void 378 LsFlushListingBuffer ( 379 UINT32 FileId); 380 381 void 382 LsDoHexOutput ( 383 void); 384 385 void 386 LsDoHexOutputC ( 387 void); 388 389 void 390 LsDoHexOutputAsm ( 391 void); 392 393 void 394 LsPushNode ( 395 char *Filename); 396 397 ASL_LISTING_NODE * 398 LsPopNode ( 399 void); 400 401 402 /* 403 * aslopcodes - generate AML opcodes 404 */ 405 406 ACPI_STATUS 407 OpcAmlOpcodeWalk ( 408 ACPI_PARSE_OBJECT *Op, 409 UINT32 Level, 410 void *Context); 411 412 ACPI_STATUS 413 OpcAmlConstantWalk ( 414 ACPI_PARSE_OBJECT *Op, 415 UINT32 Level, 416 void *Context); 417 418 void 419 OpcGenerateAmlOpcode ( 420 ACPI_PARSE_OBJECT *Op); 421 422 UINT32 423 OpcSetOptimalIntegerSize ( 424 ACPI_PARSE_OBJECT *Op); 425 426 void 427 OpcGetIntegerWidth ( 428 ACPI_PARSE_OBJECT *Op); 429 430 /* 431 * asloperands - generate AML operands for the AML opcodes 432 */ 433 434 void 435 OpnGenerateAmlOperands ( 436 ACPI_PARSE_OBJECT *Op); 437 438 void 439 OpnDoField ( 440 ACPI_PARSE_OBJECT *Op); 441 442 void 443 OpnDoBankField ( 444 ACPI_PARSE_OBJECT *Op); 445 446 void 447 OpnDoBuffer ( 448 ACPI_PARSE_OBJECT *Op); 449 450 void 451 OpnDoDefinitionBlock ( 452 ACPI_PARSE_OBJECT *Op); 453 454 void 455 OpnDoFieldCommon ( 456 ACPI_PARSE_OBJECT *FieldOp, 457 ACPI_PARSE_OBJECT *Op); 458 459 void 460 OpnDoIndexField ( 461 ACPI_PARSE_OBJECT *Op); 462 463 void 464 OpnDoLoadTable ( 465 ACPI_PARSE_OBJECT *Op); 466 467 void 468 OpnDoMethod ( 469 ACPI_PARSE_OBJECT *Op); 470 471 void 472 OpnDoPackage ( 473 ACPI_PARSE_OBJECT *Op); 474 475 void 476 OpnDoRegion ( 477 ACPI_PARSE_OBJECT *Op); 478 479 /* 480 * aslopt - optmization 481 */ 482 483 void 484 OptOptimizeNamePath ( 485 ACPI_PARSE_OBJECT *Op, 486 UINT32 Flags, 487 ACPI_WALK_STATE *WalkState, 488 char *AmlNameString, 489 ACPI_NAMESPACE_NODE *TargetNode); 490 491 492 /* 493 * aslresource - resource template generation 494 */ 495 496 void 497 RsDoResourceTemplate ( 498 ACPI_PARSE_OBJECT *Op); 499 500 501 void 502 CgGenerateAmlOutput (void); 503 504 void 505 CgGenerateListing ( 506 UINT32 FileId); 507 508 void 509 LsDoListings (void); 510 511 void 512 CgGenerateAmlLengths ( 513 ACPI_PARSE_OBJECT *Op); 514 515 ACPI_STATUS 516 CgOpenOutputFile ( 517 char *InputFilename); 518 519 520 /* asllength */ 521 522 ACPI_STATUS 523 LnPackageLengthWalk ( 524 ACPI_PARSE_OBJECT *Op, 525 UINT32 Level, 526 void *Context); 527 528 ACPI_STATUS 529 LnInitLengthsWalk ( 530 ACPI_PARSE_OBJECT *Op, 531 UINT32 Level, 532 void *Context); 533 534 535 ACPI_STATUS 536 CgAmlWriteWalk ( 537 ACPI_PARSE_OBJECT *Op, 538 UINT32 Level, 539 void *Context); 540 541 void 542 CgGenerateOutput( 543 void); 544 545 void 546 CgCloseTable (void); 547 548 549 void 550 CgWriteNode ( 551 ACPI_PARSE_OBJECT *Op); 552 553 /* 554 * aslmap 555 */ 556 557 ACPI_OBJECT_TYPE 558 AslMapNamedOpcodeToDataType ( 559 UINT16 Opcode); 560 561 /* 562 * asltransform - parse tree transformations 563 */ 564 565 ACPI_STATUS 566 TrAmlTransformWalk ( 567 ACPI_PARSE_OBJECT *Op, 568 UINT32 Level, 569 void *Context); 570 571 572 void 573 TrTransformSubtree ( 574 ACPI_PARSE_OBJECT *Op); 575 576 void 577 TrDoSwitch ( 578 ACPI_PARSE_OBJECT *Op); 579 580 void 581 TrDoDefinitionBlock ( 582 ACPI_PARSE_OBJECT *Op); 583 584 void 585 TrDoElseif ( 586 ACPI_PARSE_OBJECT *Op); 587 588 589 /* 590 * asltree - parse tree support 591 */ 592 593 ACPI_STATUS 594 TrWalkParseTree ( 595 ACPI_PARSE_OBJECT *Op, 596 UINT32 Visitation, 597 ASL_WALK_CALLBACK DescendingCallback, 598 ASL_WALK_CALLBACK AscendingCallback, 599 void *Context); 600 601 ACPI_PARSE_OBJECT * 602 TrAllocateNode ( 603 UINT32 ParseOpcode); 604 605 606 /* Values for "Visitation" parameter above */ 607 608 #define ASL_WALK_VISIT_DOWNWARD 0x01 609 #define ASL_WALK_VISIT_UPWARD 0x02 610 #define ASL_WALK_VISIT_TWICE (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD) 611 612 613 char * 614 TrAddNode ( 615 void *Thing); 616 617 ACPI_PARSE_OBJECT * 618 TrUpdateNode ( 619 UINT32 ParseOpcode, 620 ACPI_PARSE_OBJECT *Op); 621 622 ACPI_PARSE_OBJECT * 623 TrCreateNode ( 624 UINT32 ParseOpcode, 625 UINT32 NumChildren, 626 ...); 627 628 ACPI_PARSE_OBJECT * 629 TrCreateLeafNode ( 630 UINT32 ParseOpcode); 631 632 ACPI_PARSE_OBJECT * 633 TrCreateValuedLeafNode ( 634 UINT32 ParseOpcode, 635 ACPI_INTEGER Value); 636 637 ACPI_PARSE_OBJECT * 638 TrLinkChildren ( 639 ACPI_PARSE_OBJECT *Op, 640 UINT32 NumChildren, 641 ...); 642 643 void 644 TrSetEndLineNumber ( 645 ACPI_PARSE_OBJECT *Op); 646 647 void 648 TrWalkTree (void); 649 650 ACPI_PARSE_OBJECT * 651 TrLinkPeerNode ( 652 ACPI_PARSE_OBJECT *Op1, 653 ACPI_PARSE_OBJECT *Op2); 654 655 ACPI_PARSE_OBJECT * 656 TrLinkChildNode ( 657 ACPI_PARSE_OBJECT *Op1, 658 ACPI_PARSE_OBJECT *Op2); 659 660 ACPI_PARSE_OBJECT * 661 TrSetNodeFlags ( 662 ACPI_PARSE_OBJECT *Op, 663 UINT32 Flags); 664 665 ACPI_PARSE_OBJECT * 666 TrLinkPeerNodes ( 667 UINT32 NumPeers, 668 ...); 669 670 void 671 TrReleaseNode ( 672 ACPI_PARSE_OBJECT *Op); 673 674 /* Analyze */ 675 676 ACPI_STATUS 677 AnOtherSemanticAnalysisWalkBegin ( 678 ACPI_PARSE_OBJECT *Op, 679 UINT32 Level, 680 void *Context); 681 682 ACPI_STATUS 683 AnOtherSemanticAnalysisWalkEnd ( 684 ACPI_PARSE_OBJECT *Op, 685 UINT32 Level, 686 void *Context); 687 688 ACPI_STATUS 689 AnOperandTypecheckWalkBegin ( 690 ACPI_PARSE_OBJECT *Op, 691 UINT32 Level, 692 void *Context); 693 694 ACPI_STATUS 695 AnOperandTypecheckWalkEnd ( 696 ACPI_PARSE_OBJECT *Op, 697 UINT32 Level, 698 void *Context); 699 700 ACPI_STATUS 701 AnMethodAnalysisWalkBegin ( 702 ACPI_PARSE_OBJECT *Op, 703 UINT32 Level, 704 void *Context); 705 706 ACPI_STATUS 707 AnMethodAnalysisWalkEnd ( 708 ACPI_PARSE_OBJECT *Op, 709 UINT32 Level, 710 void *Context); 711 712 ACPI_STATUS 713 AnMethodTypingWalkBegin ( 714 ACPI_PARSE_OBJECT *Op, 715 UINT32 Level, 716 void *Context); 717 718 ACPI_STATUS 719 AnMethodTypingWalkEnd ( 720 ACPI_PARSE_OBJECT *Op, 721 UINT32 Level, 722 void *Context); 723 724 725 /* 726 * aslfiles - File I/O support 727 */ 728 729 void 730 AslAbort (void); 731 732 FILE * 733 FlOpenLocalFile ( 734 char *LocalName, 735 char *Mode); 736 737 void 738 FlOpenIncludeFile ( 739 ACPI_PARSE_OBJECT *Op); 740 741 void 742 FlFileError ( 743 UINT32 FileId, 744 UINT8 ErrorId); 745 746 void 747 FlOpenFile ( 748 UINT32 FileId, 749 char *Filename, 750 char *Mode); 751 752 ACPI_STATUS 753 FlReadFile ( 754 UINT32 FileId, 755 void *Buffer, 756 UINT32 Length); 757 758 void 759 FlWriteFile ( 760 UINT32 FileId, 761 void *Buffer, 762 UINT32 Length); 763 764 void 765 FlSeekFile ( 766 UINT32 FileId, 767 long Offset); 768 769 void 770 FlCloseFile ( 771 UINT32 FileId); 772 773 void 774 FlPrintFile ( 775 UINT32 FileId, 776 char *Format, 777 ...); 778 779 void 780 FlSetLineNumber ( 781 ACPI_PARSE_OBJECT *Op); 782 783 ACPI_STATUS 784 FlParseInputPathname ( 785 char *InputFilename); 786 787 ACPI_STATUS 788 FlOpenInputFile ( 789 char *InputFilename); 790 791 ACPI_STATUS 792 FlOpenAmlOutputFile ( 793 char *InputFilename); 794 795 ACPI_STATUS 796 FlOpenMiscOutputFiles ( 797 char *InputFilename); 798 799 void 800 MpDisplayReservedNames ( 801 void); 802 803 804 /* Load */ 805 806 ACPI_STATUS 807 LdLoadNamespace ( 808 ACPI_PARSE_OBJECT *RootOp); 809 810 811 ACPI_STATUS 812 LdNamespace1Begin ( 813 ACPI_PARSE_OBJECT *Op, 814 UINT32 Level, 815 void *Context); 816 817 ACPI_STATUS 818 LdNamespace1End ( 819 ACPI_PARSE_OBJECT *Op, 820 UINT32 Level, 821 void *Context); 822 823 824 /* Lookup */ 825 826 ACPI_STATUS 827 LkCrossReferenceNamespace (void); 828 829 ACPI_STATUS 830 LkNamespaceLocateBegin ( 831 ACPI_PARSE_OBJECT *Op, 832 UINT32 Level, 833 void *Context); 834 835 ACPI_STATUS 836 LkNamespaceLocateEnd ( 837 ACPI_PARSE_OBJECT *Op, 838 UINT32 Level, 839 void *Context); 840 841 ACPI_STATUS 842 LsDisplayNamespace ( 843 void); 844 845 ACPI_STATUS 846 LsCompareOneNamespaceObject ( 847 ACPI_HANDLE ObjHandle, 848 UINT32 Level, 849 void *Context, 850 void **ReturnValue); 851 852 853 /* Utils */ 854 855 void 856 UtDisplayConstantOpcodes ( 857 void); 858 859 void 860 UtBeginEvent ( 861 UINT32 Event, 862 char *Name); 863 864 void 865 UtEndEvent ( 866 UINT32 Event); 867 868 void * 869 UtLocalCalloc ( 870 UINT32 Size); 871 872 void 873 UtPrintFormattedName ( 874 UINT16 ParseOpcode, 875 UINT32 Level); 876 877 void 878 UtDisplaySummary ( 879 UINT32 FileId); 880 881 UINT8 882 UtHexCharToValue ( 883 int hc); 884 885 void 886 UtConvertByteToHex ( 887 UINT8 RawByte, 888 UINT8 *Buffer); 889 890 void 891 UtConvertByteToAsmHex ( 892 UINT8 RawByte, 893 UINT8 *Buffer); 894 895 char * 896 UtGetOpName ( 897 UINT32 ParseOpcode); 898 899 void 900 UtSetParseOpName ( 901 ACPI_PARSE_OBJECT *Op); 902 903 ACPI_PARSE_OBJECT * 904 UtGetArg ( 905 ACPI_PARSE_OBJECT *Op, 906 UINT32 Argn); 907 908 char * 909 UtGetStringBuffer ( 910 UINT32 Length); 911 912 ACPI_STATUS 913 UtInternalizeName ( 914 char *ExternalName, 915 char **ConvertedName); 916 917 void 918 UtAttachNamepathToOwner ( 919 ACPI_PARSE_OBJECT *Op, 920 ACPI_PARSE_OBJECT *NameNode); 921 922 ACPI_PARSE_OBJECT * 923 UtCheckIntegerRange ( 924 ACPI_PARSE_OBJECT *Op, 925 UINT32 LowValue, 926 UINT32 HighValue); 927 928 ACPI_STATUS 929 UtStrtoul64 ( 930 char *String, 931 UINT32 Base, 932 ACPI_INTEGER *RetInteger); 933 934 ACPI_INTEGER 935 UtDoConstant ( 936 char *String); 937 938 939 /* Find */ 940 941 void 942 LnAdjustLengthToRoot ( 943 ACPI_PARSE_OBJECT *Op, 944 UINT32 LengthDelta); 945 946 947 #define NEXT_RESOURCE_DESC(a,b) (ASL_RESOURCE_DESC *) (((char *) (a)) + sizeof(b)) 948 949 #define DEFAULT_RESOURCE_DESC_SIZE (sizeof (ASL_RESOURCE_DESC) + sizeof (ASL_END_TAG_DESC)) 950 951 952 /* 953 * Resource utilities 954 */ 955 956 ASL_RESOURCE_NODE * 957 RsAllocateResourceNode ( 958 UINT32 Size); 959 960 void 961 RsCreateBitField ( 962 ACPI_PARSE_OBJECT *Op, 963 char *Name, 964 UINT32 ByteOffset, 965 UINT32 BitOffset); 966 967 void 968 RsCreateByteField ( 969 ACPI_PARSE_OBJECT *Op, 970 char *Name, 971 UINT32 ByteOffset); 972 973 void 974 RsSetFlagBits ( 975 UINT8 *Flags, 976 ACPI_PARSE_OBJECT *Op, 977 UINT8 Position, 978 UINT8 DefaultBit); 979 980 ACPI_PARSE_OBJECT * 981 RsCompleteNodeAndGetNext ( 982 ACPI_PARSE_OBJECT *Op); 983 984 ASL_RESOURCE_NODE * 985 RsDoOneResourceDescriptor ( 986 ACPI_PARSE_OBJECT *DescriptorTypeOp, 987 UINT32 CurrentByteOffset, 988 UINT8 *State); 989 990 #define ACPI_RSTATE_NORMAL 0 991 #define ACPI_RSTATE_START_DEPENDENT 1 992 #define ACPI_RSTATE_DEPENDENT_LIST 2 993 994 UINT32 995 RsLinkDescriptorChain ( 996 ASL_RESOURCE_NODE **PreviousRnode, 997 ASL_RESOURCE_NODE *Rnode); 998 999 1000 /* 1001 * Small descriptors 1002 */ 1003 1004 ASL_RESOURCE_NODE * 1005 RsDoDmaDescriptor ( 1006 ACPI_PARSE_OBJECT *Op, 1007 UINT32 CurrentByteOffset); 1008 1009 ASL_RESOURCE_NODE * 1010 RsDoEndDependentDescriptor ( 1011 ACPI_PARSE_OBJECT *Op, 1012 UINT32 CurrentByteOffset); 1013 1014 ASL_RESOURCE_NODE * 1015 RsDoFixedIoDescriptor ( 1016 ACPI_PARSE_OBJECT *Op, 1017 UINT32 CurrentByteOffset); 1018 1019 ASL_RESOURCE_NODE * 1020 RsDoInterruptDescriptor ( 1021 ACPI_PARSE_OBJECT *Op, 1022 UINT32 CurrentByteOffset); 1023 1024 ASL_RESOURCE_NODE * 1025 RsDoIoDescriptor ( 1026 ACPI_PARSE_OBJECT *Op, 1027 UINT32 CurrentByteOffset); 1028 1029 ASL_RESOURCE_NODE * 1030 RsDoIrqDescriptor ( 1031 ACPI_PARSE_OBJECT *Op, 1032 UINT32 CurrentByteOffset); 1033 1034 ASL_RESOURCE_NODE * 1035 RsDoIrqNoFlagsDescriptor ( 1036 ACPI_PARSE_OBJECT *Op, 1037 UINT32 CurrentByteOffset); 1038 1039 ASL_RESOURCE_NODE * 1040 RsDoMemory24Descriptor ( 1041 ACPI_PARSE_OBJECT *Op, 1042 UINT32 CurrentByteOffset); 1043 1044 ASL_RESOURCE_NODE * 1045 RsDoMemory32Descriptor ( 1046 ACPI_PARSE_OBJECT *Op, 1047 UINT32 CurrentByteOffset); 1048 1049 ASL_RESOURCE_NODE * 1050 RsDoMemory32FixedDescriptor ( 1051 ACPI_PARSE_OBJECT *Op, 1052 UINT32 CurrentByteOffset); 1053 1054 ASL_RESOURCE_NODE * 1055 RsDoStartDependentDescriptor ( 1056 ACPI_PARSE_OBJECT *Op, 1057 UINT32 CurrentByteOffset); 1058 1059 ASL_RESOURCE_NODE * 1060 RsDoStartDependentNoPriDescriptor ( 1061 ACPI_PARSE_OBJECT *Op, 1062 UINT32 CurrentByteOffset); 1063 1064 ASL_RESOURCE_NODE * 1065 RsDoVendorSmallDescriptor ( 1066 ACPI_PARSE_OBJECT *Op, 1067 UINT32 CurrentByteOffset); 1068 1069 1070 /* 1071 * Large descriptors 1072 */ 1073 1074 UINT32 1075 RsGetStringDataLength ( 1076 ACPI_PARSE_OBJECT *InitializerOp); 1077 1078 ASL_RESOURCE_NODE * 1079 RsDoDwordIoDescriptor ( 1080 ACPI_PARSE_OBJECT *Op, 1081 UINT32 CurrentByteOffset); 1082 1083 ASL_RESOURCE_NODE * 1084 RsDoDwordMemoryDescriptor ( 1085 ACPI_PARSE_OBJECT *Op, 1086 UINT32 CurrentByteOffset); 1087 1088 ASL_RESOURCE_NODE * 1089 RsDoQwordIoDescriptor ( 1090 ACPI_PARSE_OBJECT *Op, 1091 UINT32 CurrentByteOffset); 1092 1093 ASL_RESOURCE_NODE * 1094 RsDoQwordMemoryDescriptor ( 1095 ACPI_PARSE_OBJECT *Op, 1096 UINT32 CurrentByteOffset); 1097 1098 ASL_RESOURCE_NODE * 1099 RsDoWordIoDescriptor ( 1100 ACPI_PARSE_OBJECT *Op, 1101 UINT32 CurrentByteOffset); 1102 1103 ASL_RESOURCE_NODE * 1104 RsDoWordBusNumberDescriptor ( 1105 ACPI_PARSE_OBJECT *Op, 1106 UINT32 CurrentByteOffset); 1107 1108 ASL_RESOURCE_NODE * 1109 RsDoVendorLargeDescriptor ( 1110 ACPI_PARSE_OBJECT *Op, 1111 UINT32 CurrentByteOffset); 1112 1113 ASL_RESOURCE_NODE * 1114 RsDoGeneralRegisterDescriptor ( 1115 ACPI_PARSE_OBJECT *Op, 1116 UINT32 CurrentByteOffset); 1117 1118 1119 #endif /* __ASLCOMPILER_H */ 1120 1121