1 2 /****************************************************************************** 3 * 4 * Module Name: aslcompiler.h - common include file 5 * $Revision: 130 $ 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 /* 585 * asltree - parse tree support 586 */ 587 588 ACPI_STATUS 589 TrWalkParseTree ( 590 ACPI_PARSE_OBJECT *Op, 591 UINT32 Visitation, 592 ASL_WALK_CALLBACK DescendingCallback, 593 ASL_WALK_CALLBACK AscendingCallback, 594 void *Context); 595 596 ACPI_PARSE_OBJECT * 597 TrAllocateNode ( 598 UINT32 ParseOpcode); 599 600 601 /* Values for "Visitation" parameter above */ 602 603 #define ASL_WALK_VISIT_DOWNWARD 0x01 604 #define ASL_WALK_VISIT_UPWARD 0x02 605 #define ASL_WALK_VISIT_TWICE (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD) 606 607 608 char * 609 TrAddNode ( 610 void *Thing); 611 612 ACPI_PARSE_OBJECT * 613 TrUpdateNode ( 614 UINT32 ParseOpcode, 615 ACPI_PARSE_OBJECT *Op); 616 617 ACPI_PARSE_OBJECT * 618 TrCreateNode ( 619 UINT32 ParseOpcode, 620 UINT32 NumChildren, 621 ...); 622 623 ACPI_PARSE_OBJECT * 624 TrCreateLeafNode ( 625 UINT32 ParseOpcode); 626 627 ACPI_PARSE_OBJECT * 628 TrCreateValuedLeafNode ( 629 UINT32 ParseOpcode, 630 ACPI_INTEGER Value); 631 632 ACPI_PARSE_OBJECT * 633 TrLinkChildren ( 634 ACPI_PARSE_OBJECT *Op, 635 UINT32 NumChildren, 636 ...); 637 638 void 639 TrSetEndLineNumber ( 640 ACPI_PARSE_OBJECT *Op); 641 642 void 643 TrWalkTree (void); 644 645 ACPI_PARSE_OBJECT * 646 TrLinkPeerNode ( 647 ACPI_PARSE_OBJECT *Op1, 648 ACPI_PARSE_OBJECT *Op2); 649 650 ACPI_PARSE_OBJECT * 651 TrLinkChildNode ( 652 ACPI_PARSE_OBJECT *Op1, 653 ACPI_PARSE_OBJECT *Op2); 654 655 ACPI_PARSE_OBJECT * 656 TrSetNodeFlags ( 657 ACPI_PARSE_OBJECT *Op, 658 UINT32 Flags); 659 660 ACPI_PARSE_OBJECT * 661 TrLinkPeerNodes ( 662 UINT32 NumPeers, 663 ...); 664 665 void 666 TrReleaseNode ( 667 ACPI_PARSE_OBJECT *Op); 668 669 /* Analyze */ 670 671 ACPI_STATUS 672 AnOtherSemanticAnalysisWalkBegin ( 673 ACPI_PARSE_OBJECT *Op, 674 UINT32 Level, 675 void *Context); 676 677 ACPI_STATUS 678 AnOtherSemanticAnalysisWalkEnd ( 679 ACPI_PARSE_OBJECT *Op, 680 UINT32 Level, 681 void *Context); 682 683 ACPI_STATUS 684 AnOperandTypecheckWalkBegin ( 685 ACPI_PARSE_OBJECT *Op, 686 UINT32 Level, 687 void *Context); 688 689 ACPI_STATUS 690 AnOperandTypecheckWalkEnd ( 691 ACPI_PARSE_OBJECT *Op, 692 UINT32 Level, 693 void *Context); 694 695 ACPI_STATUS 696 AnMethodAnalysisWalkBegin ( 697 ACPI_PARSE_OBJECT *Op, 698 UINT32 Level, 699 void *Context); 700 701 ACPI_STATUS 702 AnMethodAnalysisWalkEnd ( 703 ACPI_PARSE_OBJECT *Op, 704 UINT32 Level, 705 void *Context); 706 707 ACPI_STATUS 708 AnMethodTypingWalkBegin ( 709 ACPI_PARSE_OBJECT *Op, 710 UINT32 Level, 711 void *Context); 712 713 ACPI_STATUS 714 AnMethodTypingWalkEnd ( 715 ACPI_PARSE_OBJECT *Op, 716 UINT32 Level, 717 void *Context); 718 719 720 /* 721 * aslfiles - File I/O support 722 */ 723 724 void 725 AslAbort (void); 726 727 FILE * 728 FlOpenLocalFile ( 729 char *LocalName, 730 char *Mode); 731 732 void 733 FlOpenIncludeFile ( 734 ACPI_PARSE_OBJECT *Op); 735 736 void 737 FlFileError ( 738 UINT32 FileId, 739 UINT8 ErrorId); 740 741 void 742 FlOpenFile ( 743 UINT32 FileId, 744 char *Filename, 745 char *Mode); 746 747 ACPI_STATUS 748 FlReadFile ( 749 UINT32 FileId, 750 void *Buffer, 751 UINT32 Length); 752 753 void 754 FlWriteFile ( 755 UINT32 FileId, 756 void *Buffer, 757 UINT32 Length); 758 759 void 760 FlSeekFile ( 761 UINT32 FileId, 762 long Offset); 763 764 void 765 FlCloseFile ( 766 UINT32 FileId); 767 768 void 769 FlPrintFile ( 770 UINT32 FileId, 771 char *Format, 772 ...); 773 774 void 775 FlSetLineNumber ( 776 ACPI_PARSE_OBJECT *Op); 777 778 ACPI_STATUS 779 FlParseInputPathname ( 780 char *InputFilename); 781 782 ACPI_STATUS 783 FlOpenInputFile ( 784 char *InputFilename); 785 786 ACPI_STATUS 787 FlOpenAmlOutputFile ( 788 char *InputFilename); 789 790 ACPI_STATUS 791 FlOpenMiscOutputFiles ( 792 char *InputFilename); 793 794 void 795 MpDisplayReservedNames ( 796 void); 797 798 799 /* Load */ 800 801 ACPI_STATUS 802 LdLoadNamespace ( 803 ACPI_PARSE_OBJECT *RootOp); 804 805 806 ACPI_STATUS 807 LdNamespace1Begin ( 808 ACPI_PARSE_OBJECT *Op, 809 UINT32 Level, 810 void *Context); 811 812 ACPI_STATUS 813 LdNamespace1End ( 814 ACPI_PARSE_OBJECT *Op, 815 UINT32 Level, 816 void *Context); 817 818 819 /* Lookup */ 820 821 ACPI_STATUS 822 LkCrossReferenceNamespace (void); 823 824 ACPI_STATUS 825 LkNamespaceLocateBegin ( 826 ACPI_PARSE_OBJECT *Op, 827 UINT32 Level, 828 void *Context); 829 830 ACPI_STATUS 831 LkNamespaceLocateEnd ( 832 ACPI_PARSE_OBJECT *Op, 833 UINT32 Level, 834 void *Context); 835 836 ACPI_STATUS 837 LsDisplayNamespace ( 838 void); 839 840 ACPI_STATUS 841 LsCompareOneNamespaceObject ( 842 ACPI_HANDLE ObjHandle, 843 UINT32 Level, 844 void *Context, 845 void **ReturnValue); 846 847 848 /* Utils */ 849 850 void 851 UtDisplayConstantOpcodes ( 852 void); 853 854 void 855 UtBeginEvent ( 856 UINT32 Event, 857 char *Name); 858 859 void 860 UtEndEvent ( 861 UINT32 Event); 862 863 void * 864 UtLocalCalloc ( 865 UINT32 Size); 866 867 void 868 UtPrintFormattedName ( 869 UINT16 ParseOpcode, 870 UINT32 Level); 871 872 void 873 UtDisplaySummary ( 874 UINT32 FileId); 875 876 UINT8 877 UtHexCharToValue ( 878 int hc); 879 880 void 881 UtConvertByteToHex ( 882 UINT8 RawByte, 883 UINT8 *Buffer); 884 885 void 886 UtConvertByteToAsmHex ( 887 UINT8 RawByte, 888 UINT8 *Buffer); 889 890 char * 891 UtGetOpName ( 892 UINT32 ParseOpcode); 893 894 void 895 UtSetParseOpName ( 896 ACPI_PARSE_OBJECT *Op); 897 898 ACPI_PARSE_OBJECT * 899 UtGetArg ( 900 ACPI_PARSE_OBJECT *Op, 901 UINT32 Argn); 902 903 char * 904 UtGetStringBuffer ( 905 UINT32 Length); 906 907 ACPI_STATUS 908 UtInternalizeName ( 909 char *ExternalName, 910 char **ConvertedName); 911 912 void 913 UtAttachNamepathToOwner ( 914 ACPI_PARSE_OBJECT *Op, 915 ACPI_PARSE_OBJECT *NameNode); 916 917 ACPI_PARSE_OBJECT * 918 UtCheckIntegerRange ( 919 ACPI_PARSE_OBJECT *Op, 920 UINT32 LowValue, 921 UINT32 HighValue); 922 923 ACPI_STATUS 924 UtStrtoul64 ( 925 char *String, 926 UINT32 Base, 927 ACPI_INTEGER *RetInteger); 928 929 ACPI_INTEGER 930 UtDoConstant ( 931 char *String); 932 933 934 /* Find */ 935 936 void 937 LnAdjustLengthToRoot ( 938 ACPI_PARSE_OBJECT *Op, 939 UINT32 LengthDelta); 940 941 942 #define NEXT_RESOURCE_DESC(a,b) (ASL_RESOURCE_DESC *) (((char *) (a)) + sizeof(b)) 943 944 #define DEFAULT_RESOURCE_DESC_SIZE (sizeof (ASL_RESOURCE_DESC) + sizeof (ASL_END_TAG_DESC)) 945 946 947 /* 948 * Resource utilities 949 */ 950 951 ASL_RESOURCE_NODE * 952 RsAllocateResourceNode ( 953 UINT32 Size); 954 955 void 956 RsCreateBitField ( 957 ACPI_PARSE_OBJECT *Op, 958 char *Name, 959 UINT32 ByteOffset, 960 UINT32 BitOffset); 961 962 void 963 RsCreateByteField ( 964 ACPI_PARSE_OBJECT *Op, 965 char *Name, 966 UINT32 ByteOffset); 967 968 void 969 RsSetFlagBits ( 970 UINT8 *Flags, 971 ACPI_PARSE_OBJECT *Op, 972 UINT8 Position, 973 UINT8 DefaultBit); 974 975 ACPI_PARSE_OBJECT * 976 RsCompleteNodeAndGetNext ( 977 ACPI_PARSE_OBJECT *Op); 978 979 ASL_RESOURCE_NODE * 980 RsDoOneResourceDescriptor ( 981 ACPI_PARSE_OBJECT *DescriptorTypeOp, 982 UINT32 CurrentByteOffset, 983 UINT8 *State); 984 985 #define ACPI_RSTATE_NORMAL 0 986 #define ACPI_RSTATE_START_DEPENDENT 1 987 #define ACPI_RSTATE_DEPENDENT_LIST 2 988 989 UINT32 990 RsLinkDescriptorChain ( 991 ASL_RESOURCE_NODE **PreviousRnode, 992 ASL_RESOURCE_NODE *Rnode); 993 994 995 /* 996 * Small descriptors 997 */ 998 999 ASL_RESOURCE_NODE * 1000 RsDoDmaDescriptor ( 1001 ACPI_PARSE_OBJECT *Op, 1002 UINT32 CurrentByteOffset); 1003 1004 ASL_RESOURCE_NODE * 1005 RsDoEndDependentDescriptor ( 1006 ACPI_PARSE_OBJECT *Op, 1007 UINT32 CurrentByteOffset); 1008 1009 ASL_RESOURCE_NODE * 1010 RsDoFixedIoDescriptor ( 1011 ACPI_PARSE_OBJECT *Op, 1012 UINT32 CurrentByteOffset); 1013 1014 ASL_RESOURCE_NODE * 1015 RsDoInterruptDescriptor ( 1016 ACPI_PARSE_OBJECT *Op, 1017 UINT32 CurrentByteOffset); 1018 1019 ASL_RESOURCE_NODE * 1020 RsDoIoDescriptor ( 1021 ACPI_PARSE_OBJECT *Op, 1022 UINT32 CurrentByteOffset); 1023 1024 ASL_RESOURCE_NODE * 1025 RsDoIrqDescriptor ( 1026 ACPI_PARSE_OBJECT *Op, 1027 UINT32 CurrentByteOffset); 1028 1029 ASL_RESOURCE_NODE * 1030 RsDoIrqNoFlagsDescriptor ( 1031 ACPI_PARSE_OBJECT *Op, 1032 UINT32 CurrentByteOffset); 1033 1034 ASL_RESOURCE_NODE * 1035 RsDoMemory24Descriptor ( 1036 ACPI_PARSE_OBJECT *Op, 1037 UINT32 CurrentByteOffset); 1038 1039 ASL_RESOURCE_NODE * 1040 RsDoMemory32Descriptor ( 1041 ACPI_PARSE_OBJECT *Op, 1042 UINT32 CurrentByteOffset); 1043 1044 ASL_RESOURCE_NODE * 1045 RsDoMemory32FixedDescriptor ( 1046 ACPI_PARSE_OBJECT *Op, 1047 UINT32 CurrentByteOffset); 1048 1049 ASL_RESOURCE_NODE * 1050 RsDoStartDependentDescriptor ( 1051 ACPI_PARSE_OBJECT *Op, 1052 UINT32 CurrentByteOffset); 1053 1054 ASL_RESOURCE_NODE * 1055 RsDoStartDependentNoPriDescriptor ( 1056 ACPI_PARSE_OBJECT *Op, 1057 UINT32 CurrentByteOffset); 1058 1059 ASL_RESOURCE_NODE * 1060 RsDoVendorSmallDescriptor ( 1061 ACPI_PARSE_OBJECT *Op, 1062 UINT32 CurrentByteOffset); 1063 1064 1065 /* 1066 * Large descriptors 1067 */ 1068 1069 UINT32 1070 RsGetStringDataLength ( 1071 ACPI_PARSE_OBJECT *InitializerOp); 1072 1073 ASL_RESOURCE_NODE * 1074 RsDoDwordIoDescriptor ( 1075 ACPI_PARSE_OBJECT *Op, 1076 UINT32 CurrentByteOffset); 1077 1078 ASL_RESOURCE_NODE * 1079 RsDoDwordMemoryDescriptor ( 1080 ACPI_PARSE_OBJECT *Op, 1081 UINT32 CurrentByteOffset); 1082 1083 ASL_RESOURCE_NODE * 1084 RsDoQwordIoDescriptor ( 1085 ACPI_PARSE_OBJECT *Op, 1086 UINT32 CurrentByteOffset); 1087 1088 ASL_RESOURCE_NODE * 1089 RsDoQwordMemoryDescriptor ( 1090 ACPI_PARSE_OBJECT *Op, 1091 UINT32 CurrentByteOffset); 1092 1093 ASL_RESOURCE_NODE * 1094 RsDoWordIoDescriptor ( 1095 ACPI_PARSE_OBJECT *Op, 1096 UINT32 CurrentByteOffset); 1097 1098 ASL_RESOURCE_NODE * 1099 RsDoWordBusNumberDescriptor ( 1100 ACPI_PARSE_OBJECT *Op, 1101 UINT32 CurrentByteOffset); 1102 1103 ASL_RESOURCE_NODE * 1104 RsDoVendorLargeDescriptor ( 1105 ACPI_PARSE_OBJECT *Op, 1106 UINT32 CurrentByteOffset); 1107 1108 ASL_RESOURCE_NODE * 1109 RsDoGeneralRegisterDescriptor ( 1110 ACPI_PARSE_OBJECT *Op, 1111 UINT32 CurrentByteOffset); 1112 1113 1114 #endif /* __ASLCOMPILER_H */ 1115 1116