1 /****************************************************************************** 2 * 3 * Module Name: aslcompiler.h - common include file for iASL 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2013, Intel Corp. 9 * All rights reserved. 10 * 11 * Redistribution and use in source and binary forms, with or without 12 * modification, are permitted provided that the following conditions 13 * are met: 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions, and the following disclaimer, 16 * without modification. 17 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18 * substantially similar to the "NO WARRANTY" disclaimer below 19 * ("Disclaimer") and any redistribution must be conditioned upon 20 * including a substantially similar Disclaimer requirement for further 21 * binary redistribution. 22 * 3. Neither the names of the above-listed copyright holders nor the names 23 * of any contributors may be used to endorse or promote products derived 24 * from this software without specific prior written permission. 25 * 26 * Alternatively, this software may be distributed under the terms of the 27 * GNU General Public License ("GPL") version 2 as published by the Free 28 * Software Foundation. 29 * 30 * NO WARRANTY 31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41 * POSSIBILITY OF SUCH DAMAGES. 42 */ 43 44 45 #ifndef __ASLCOMPILER_H 46 #define __ASLCOMPILER_H 47 48 #include <contrib/dev/acpica/include/acpi.h> 49 #include <contrib/dev/acpica/include/accommon.h> 50 #include <contrib/dev/acpica/include/amlresrc.h> 51 #include <contrib/dev/acpica/include/acdebug.h> 52 53 /* Microsoft-specific */ 54 55 #if (defined WIN32 || defined WIN64) 56 57 /* warn : used #pragma pack */ 58 #pragma warning(disable:4103) 59 60 /* warn : named type definition in parentheses */ 61 #pragma warning(disable:4115) 62 #endif 63 64 #include <stdio.h> 65 #include <stdlib.h> 66 #include <stdarg.h> 67 #include <string.h> 68 #include <errno.h> 69 #include <ctype.h> 70 71 /* Compiler headers */ 72 73 #include <contrib/dev/acpica/compiler/asldefine.h> 74 #include <contrib/dev/acpica/compiler/asltypes.h> 75 #include <contrib/dev/acpica/compiler/aslmessages.h> 76 #include <contrib/dev/acpica/compiler/aslglobal.h> 77 #include <contrib/dev/acpica/compiler/preprocess.h> 78 79 80 /******************************************************************************* 81 * 82 * Compiler prototypes 83 * 84 ******************************************************************************/ 85 86 /* 87 * Main ASL parser - generated from flex/bison, lex/yacc, etc. 88 */ 89 ACPI_PARSE_OBJECT * 90 AslDoError ( 91 void); 92 93 int 94 AslCompilerlex( 95 void); 96 97 void 98 AslResetCurrentLineBuffer ( 99 void); 100 101 void 102 AslInsertLineBuffer ( 103 int SourceChar); 104 105 int 106 AslPopInputFileStack ( 107 void); 108 109 void 110 AslPushInputFileStack ( 111 FILE *InputFile, 112 char *Filename); 113 114 /* 115 * aslstartup - entered from main() 116 */ 117 void 118 AslInitializeGlobals ( 119 void); 120 121 typedef 122 ACPI_STATUS (*ASL_PATHNAME_CALLBACK) ( 123 char *); 124 125 ACPI_STATUS 126 AslDoOnePathname ( 127 char *Pathname, 128 ASL_PATHNAME_CALLBACK Callback); 129 130 ACPI_STATUS 131 AslDoOneFile ( 132 char *Filename); 133 134 ACPI_STATUS 135 AslCheckForErrorExit ( 136 void); 137 138 139 /* 140 * aslcompile - compile mainline 141 */ 142 void 143 AslCompilerSignon ( 144 UINT32 FileId); 145 146 void 147 AslCompilerFileHeader ( 148 UINT32 FileId); 149 150 int 151 CmDoCompile ( 152 void); 153 154 void 155 CmDoOutputFiles ( 156 void); 157 158 void 159 CmCleanupAndExit ( 160 void); 161 162 ACPI_STATUS 163 FlCheckForAcpiTable ( 164 FILE *Handle); 165 166 ACPI_STATUS 167 FlCheckForAscii ( 168 FILE *Handle, 169 char *Filename, 170 BOOLEAN DisplayErrors); 171 172 173 /* 174 * aslwalks - semantic analysis and parse tree walks 175 */ 176 ACPI_STATUS 177 AnOtherSemanticAnalysisWalkBegin ( 178 ACPI_PARSE_OBJECT *Op, 179 UINT32 Level, 180 void *Context); 181 182 ACPI_STATUS 183 AnOtherSemanticAnalysisWalkEnd ( 184 ACPI_PARSE_OBJECT *Op, 185 UINT32 Level, 186 void *Context); 187 188 ACPI_STATUS 189 AnOperandTypecheckWalkEnd ( 190 ACPI_PARSE_OBJECT *Op, 191 UINT32 Level, 192 void *Context); 193 194 ACPI_STATUS 195 AnMethodTypingWalkEnd ( 196 ACPI_PARSE_OBJECT *Op, 197 UINT32 Level, 198 void *Context); 199 200 201 /* 202 * aslmethod - Control method analysis walk 203 */ 204 ACPI_STATUS 205 MtMethodAnalysisWalkBegin ( 206 ACPI_PARSE_OBJECT *Op, 207 UINT32 Level, 208 void *Context); 209 210 ACPI_STATUS 211 MtMethodAnalysisWalkEnd ( 212 ACPI_PARSE_OBJECT *Op, 213 UINT32 Level, 214 void *Context); 215 216 217 /* 218 * aslbtypes - bitfield data types 219 */ 220 UINT32 221 AnMapObjTypeToBtype ( 222 ACPI_PARSE_OBJECT *Op); 223 224 UINT32 225 AnMapArgTypeToBtype ( 226 UINT32 ArgType); 227 228 UINT32 229 AnGetBtype ( 230 ACPI_PARSE_OBJECT *Op); 231 232 void 233 AnFormatBtype ( 234 char *Buffer, 235 UINT32 Btype); 236 237 238 /* 239 * aslanalyze - Support functions for parse tree walks 240 */ 241 void 242 AnCheckId ( 243 ACPI_PARSE_OBJECT *Op, 244 ACPI_NAME Type); 245 246 /* Values for Type argument above */ 247 248 #define ASL_TYPE_HID 0 249 #define ASL_TYPE_CID 1 250 251 BOOLEAN 252 AnIsInternalMethod ( 253 ACPI_PARSE_OBJECT *Op); 254 255 UINT32 256 AnGetInternalMethodReturnType ( 257 ACPI_PARSE_OBJECT *Op); 258 259 BOOLEAN 260 AnLastStatementIsReturn ( 261 ACPI_PARSE_OBJECT *Op); 262 263 void 264 AnCheckMethodReturnValue ( 265 ACPI_PARSE_OBJECT *Op, 266 const ACPI_OPCODE_INFO *OpInfo, 267 ACPI_PARSE_OBJECT *ArgOp, 268 UINT32 RequiredBtypes, 269 UINT32 ThisNodeBtype); 270 271 BOOLEAN 272 AnIsResultUsed ( 273 ACPI_PARSE_OBJECT *Op); 274 275 void 276 ApCheckForGpeNameConflict ( 277 ACPI_PARSE_OBJECT *Op); 278 279 void 280 ApCheckRegMethod ( 281 ACPI_PARSE_OBJECT *Op); 282 283 284 /* 285 * aslerror - error handling/reporting 286 */ 287 void 288 AslError ( 289 UINT8 Level, 290 UINT8 MessageId, 291 ACPI_PARSE_OBJECT *Op, 292 char *ExtraMessage); 293 294 void 295 AslCoreSubsystemError ( 296 ACPI_PARSE_OBJECT *Op, 297 ACPI_STATUS Status, 298 char *ExtraMessage, 299 BOOLEAN Abort); 300 301 int 302 AslCompilererror( 303 const char *s); 304 305 void 306 AslCommonError ( 307 UINT8 Level, 308 UINT8 MessageId, 309 UINT32 CurrentLineNumber, 310 UINT32 LogicalLineNumber, 311 UINT32 LogicalByteOffset, 312 UINT32 Column, 313 char *Filename, 314 char *ExtraMessage); 315 316 void 317 AslCommonError2 ( 318 UINT8 Level, 319 UINT8 MessageId, 320 UINT32 LineNumber, 321 UINT32 Column, 322 char *SourceLine, 323 char *Filename, 324 char *ExtraMessage); 325 326 void 327 AePrintException ( 328 UINT32 FileId, 329 ASL_ERROR_MSG *Enode, 330 char *Header); 331 332 void 333 AePrintErrorLog ( 334 UINT32 FileId); 335 336 void 337 AeClearErrorLog ( 338 void); 339 340 ACPI_PHYSICAL_ADDRESS 341 AeLocalGetRootPointer ( 342 void); 343 344 345 /* 346 * asllisting - generate all "listing" type files 347 */ 348 void 349 LsDoListings ( 350 void); 351 352 void 353 LsDumpAsciiInComment ( 354 UINT32 FileId, 355 UINT32 Count, 356 UINT8 *Buffer); 357 358 void 359 LsWriteNodeToAsmListing ( 360 ACPI_PARSE_OBJECT *Op); 361 362 void 363 LsWriteNode ( 364 ACPI_PARSE_OBJECT *Op, 365 UINT32 FileId); 366 367 void 368 LsDumpParseTree ( 369 void); 370 371 372 /* 373 * aslhex - generate all "hex" output files (C, ASM, ASL) 374 */ 375 void 376 HxDoHexOutput ( 377 void); 378 379 380 /* 381 * aslfold - constant folding 382 */ 383 ACPI_STATUS 384 OpcAmlConstantWalk ( 385 ACPI_PARSE_OBJECT *Op, 386 UINT32 Level, 387 void *Context); 388 389 390 /* 391 * aslopcodes - generate AML opcodes 392 */ 393 ACPI_STATUS 394 OpcAmlOpcodeWalk ( 395 ACPI_PARSE_OBJECT *Op, 396 UINT32 Level, 397 void *Context); 398 399 ACPI_STATUS 400 OpcAmlOpcodeUpdateWalk ( 401 ACPI_PARSE_OBJECT *Op, 402 UINT32 Level, 403 void *Context); 404 405 void 406 OpcGenerateAmlOpcode ( 407 ACPI_PARSE_OBJECT *Op); 408 409 UINT32 410 OpcSetOptimalIntegerSize ( 411 ACPI_PARSE_OBJECT *Op); 412 413 void 414 OpcGetIntegerWidth ( 415 ACPI_PARSE_OBJECT *Op); 416 417 418 /* 419 * asloperands - generate AML operands for the AML opcodes 420 */ 421 ACPI_PARSE_OBJECT * 422 UtGetArg ( 423 ACPI_PARSE_OBJECT *Op, 424 UINT32 Argn); 425 426 void 427 OpnGenerateAmlOperands ( 428 ACPI_PARSE_OBJECT *Op); 429 430 void 431 OpnDoPackage ( 432 ACPI_PARSE_OBJECT *Op); 433 434 435 /* 436 * aslopt - optmization 437 */ 438 void 439 OptOptimizeNamePath ( 440 ACPI_PARSE_OBJECT *Op, 441 UINT32 Flags, 442 ACPI_WALK_STATE *WalkState, 443 char *AmlNameString, 444 ACPI_NAMESPACE_NODE *TargetNode); 445 446 447 /* 448 * aslcodegen - code generation 449 */ 450 void 451 CgGenerateAmlOutput ( 452 void); 453 454 455 /* 456 * aslfile 457 */ 458 void 459 FlOpenFile ( 460 UINT32 FileId, 461 char *Filename, 462 char *Mode); 463 464 465 /* 466 * asllength - calculate/adjust AML package lengths 467 */ 468 ACPI_STATUS 469 LnPackageLengthWalk ( 470 ACPI_PARSE_OBJECT *Op, 471 UINT32 Level, 472 void *Context); 473 474 ACPI_STATUS 475 LnInitLengthsWalk ( 476 ACPI_PARSE_OBJECT *Op, 477 UINT32 Level, 478 void *Context); 479 480 void 481 CgGenerateAmlLengths ( 482 ACPI_PARSE_OBJECT *Op); 483 484 485 /* 486 * aslmap - opcode mappings and reserved method names 487 */ 488 ACPI_OBJECT_TYPE 489 AslMapNamedOpcodeToDataType ( 490 UINT16 Opcode); 491 492 493 /* 494 * aslpredef - ACPI predefined names support 495 */ 496 BOOLEAN 497 ApCheckForPredefinedMethod ( 498 ACPI_PARSE_OBJECT *Op, 499 ASL_METHOD_INFO *MethodInfo); 500 501 void 502 ApCheckPredefinedReturnValue ( 503 ACPI_PARSE_OBJECT *Op, 504 ASL_METHOD_INFO *MethodInfo); 505 506 UINT32 507 ApCheckForPredefinedName ( 508 ACPI_PARSE_OBJECT *Op, 509 char *Name); 510 511 void 512 ApCheckForPredefinedObject ( 513 ACPI_PARSE_OBJECT *Op, 514 char *Name); 515 516 ACPI_STATUS 517 ApCheckObjectType ( 518 const char *PredefinedName, 519 ACPI_PARSE_OBJECT *Op, 520 UINT32 ExpectedBtypes, 521 UINT32 PackageIndex); 522 523 void 524 ApDisplayReservedNames ( 525 void); 526 527 528 /* 529 * aslprepkg - ACPI predefined names support for packages 530 */ 531 void 532 ApCheckPackage ( 533 ACPI_PARSE_OBJECT *ParentOp, 534 const ACPI_PREDEFINED_INFO *Predefined); 535 536 537 /* 538 * asltransform - parse tree transformations 539 */ 540 ACPI_STATUS 541 TrAmlTransformWalk ( 542 ACPI_PARSE_OBJECT *Op, 543 UINT32 Level, 544 void *Context); 545 546 547 /* 548 * asltree - parse tree support 549 */ 550 ACPI_STATUS 551 TrWalkParseTree ( 552 ACPI_PARSE_OBJECT *Op, 553 UINT32 Visitation, 554 ASL_WALK_CALLBACK DescendingCallback, 555 ASL_WALK_CALLBACK AscendingCallback, 556 void *Context); 557 558 /* Values for "Visitation" parameter above */ 559 560 #define ASL_WALK_VISIT_DOWNWARD 0x01 561 #define ASL_WALK_VISIT_UPWARD 0x02 562 #define ASL_WALK_VISIT_TWICE (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD) 563 564 565 ACPI_PARSE_OBJECT * 566 TrAllocateNode ( 567 UINT32 ParseOpcode); 568 569 void 570 TrReleaseNode ( 571 ACPI_PARSE_OBJECT *Op); 572 573 ACPI_PARSE_OBJECT * 574 TrUpdateNode ( 575 UINT32 ParseOpcode, 576 ACPI_PARSE_OBJECT *Op); 577 578 ACPI_PARSE_OBJECT * 579 TrCreateNode ( 580 UINT32 ParseOpcode, 581 UINT32 NumChildren, 582 ...); 583 584 ACPI_PARSE_OBJECT * 585 TrCreateLeafNode ( 586 UINT32 ParseOpcode); 587 588 ACPI_PARSE_OBJECT * 589 TrCreateValuedLeafNode ( 590 UINT32 ParseOpcode, 591 UINT64 Value); 592 593 ACPI_PARSE_OBJECT * 594 TrCreateConstantLeafNode ( 595 UINT32 ParseOpcode); 596 597 ACPI_PARSE_OBJECT * 598 TrLinkChildren ( 599 ACPI_PARSE_OBJECT *Op, 600 UINT32 NumChildren, 601 ...); 602 603 void 604 TrSetEndLineNumber ( 605 ACPI_PARSE_OBJECT *Op); 606 607 void 608 TrWalkTree ( 609 void); 610 611 ACPI_PARSE_OBJECT * 612 TrLinkPeerNode ( 613 ACPI_PARSE_OBJECT *Op1, 614 ACPI_PARSE_OBJECT *Op2); 615 616 ACPI_PARSE_OBJECT * 617 TrLinkChildNode ( 618 ACPI_PARSE_OBJECT *Op1, 619 ACPI_PARSE_OBJECT *Op2); 620 621 ACPI_PARSE_OBJECT * 622 TrSetNodeFlags ( 623 ACPI_PARSE_OBJECT *Op, 624 UINT32 Flags); 625 626 ACPI_PARSE_OBJECT * 627 TrSetNodeAmlLength ( 628 ACPI_PARSE_OBJECT *Op, 629 UINT32 Length); 630 631 ACPI_PARSE_OBJECT * 632 TrLinkPeerNodes ( 633 UINT32 NumPeers, 634 ...); 635 636 637 /* 638 * aslfiles - File I/O support 639 */ 640 void 641 AslAbort ( 642 void); 643 644 void 645 FlAddIncludeDirectory ( 646 char *Dir); 647 648 char * 649 FlMergePathnames ( 650 char *PrefixDir, 651 char *FilePathname); 652 653 void 654 FlOpenIncludeFile ( 655 ACPI_PARSE_OBJECT *Op); 656 657 void 658 FlFileError ( 659 UINT32 FileId, 660 UINT8 ErrorId); 661 662 UINT32 663 FlGetFileSize ( 664 UINT32 FileId); 665 666 ACPI_STATUS 667 FlReadFile ( 668 UINT32 FileId, 669 void *Buffer, 670 UINT32 Length); 671 672 void 673 FlWriteFile ( 674 UINT32 FileId, 675 void *Buffer, 676 UINT32 Length); 677 678 void 679 FlSeekFile ( 680 UINT32 FileId, 681 long Offset); 682 683 void 684 FlCloseFile ( 685 UINT32 FileId); 686 687 void 688 FlPrintFile ( 689 UINT32 FileId, 690 char *Format, 691 ...); 692 693 void 694 FlDeleteFile ( 695 UINT32 FileId); 696 697 void 698 FlSetLineNumber ( 699 UINT32 LineNumber); 700 701 void 702 FlSetFilename ( 703 char *Filename); 704 705 ACPI_STATUS 706 FlOpenInputFile ( 707 char *InputFilename); 708 709 ACPI_STATUS 710 FlOpenAmlOutputFile ( 711 char *InputFilename); 712 713 ACPI_STATUS 714 FlOpenMiscOutputFiles ( 715 char *InputFilename); 716 717 718 /* 719 * asload - load namespace in prep for cross reference 720 */ 721 ACPI_STATUS 722 LdLoadNamespace ( 723 ACPI_PARSE_OBJECT *RootOp); 724 725 726 /* 727 * asllookup - namespace lookup functions 728 */ 729 void 730 LkFindUnreferencedObjects ( 731 void); 732 733 734 /* 735 * aslnamesp - namespace output file generation 736 */ 737 ACPI_STATUS 738 NsDisplayNamespace ( 739 void); 740 741 void 742 NsSetupNamespaceListing ( 743 void *Handle); 744 745 746 /* 747 * aslxref - namespace cross reference 748 */ 749 ACPI_STATUS 750 XfCrossReferenceNamespace ( 751 void); 752 753 754 /* 755 * aslutils - common compiler utilites 756 */ 757 void 758 DbgPrint ( 759 UINT32 Type, 760 char *Format, 761 ...); 762 763 /* Type values for above */ 764 765 #define ASL_DEBUG_OUTPUT 0 766 #define ASL_PARSE_OUTPUT 1 767 #define ASL_TREE_OUTPUT 2 768 769 void 770 UtDisplaySupportedTables ( 771 void); 772 773 void 774 UtDisplayConstantOpcodes ( 775 void); 776 777 UINT8 778 UtBeginEvent ( 779 char *Name); 780 781 void 782 UtEndEvent ( 783 UINT8 Event); 784 785 void * 786 UtLocalCalloc ( 787 UINT32 Size); 788 789 void 790 UtPrintFormattedName ( 791 UINT16 ParseOpcode, 792 UINT32 Level); 793 794 void 795 UtDisplaySummary ( 796 UINT32 FileId); 797 798 UINT8 799 UtHexCharToValue ( 800 int HexChar); 801 802 void 803 UtConvertByteToHex ( 804 UINT8 RawByte, 805 UINT8 *Buffer); 806 807 void 808 UtConvertByteToAsmHex ( 809 UINT8 RawByte, 810 UINT8 *Buffer); 811 812 char * 813 UtGetOpName ( 814 UINT32 ParseOpcode); 815 816 void 817 UtSetParseOpName ( 818 ACPI_PARSE_OBJECT *Op); 819 820 char * 821 UtGetStringBuffer ( 822 UINT32 Length); 823 824 void 825 UtExpandLineBuffers ( 826 void); 827 828 ACPI_STATUS 829 UtInternalizeName ( 830 char *ExternalName, 831 char **ConvertedName); 832 833 void 834 UtAttachNamepathToOwner ( 835 ACPI_PARSE_OBJECT *Op, 836 ACPI_PARSE_OBJECT *NameNode); 837 838 ACPI_PARSE_OBJECT * 839 UtCheckIntegerRange ( 840 ACPI_PARSE_OBJECT *Op, 841 UINT32 LowValue, 842 UINT32 HighValue); 843 844 UINT64 845 UtDoConstant ( 846 char *String); 847 848 ACPI_STATUS 849 UtStrtoul64 ( 850 char *String, 851 UINT32 Base, 852 UINT64 *RetInteger); 853 854 855 /* 856 * asluuid - UUID support 857 */ 858 ACPI_STATUS 859 AuValidateUuid ( 860 char *InString); 861 862 ACPI_STATUS 863 AuConvertStringToUuid ( 864 char *InString, 865 char *UuIdBuffer); 866 867 ACPI_STATUS 868 AuConvertUuidToString ( 869 char *UuIdBuffer, 870 char *OutString); 871 872 /* 873 * aslresource - Resource template generation utilities 874 */ 875 void 876 RsSmallAddressCheck ( 877 UINT8 Type, 878 UINT32 Minimum, 879 UINT32 Maximum, 880 UINT32 Length, 881 UINT32 Alignment, 882 ACPI_PARSE_OBJECT *MinOp, 883 ACPI_PARSE_OBJECT *MaxOp, 884 ACPI_PARSE_OBJECT *LengthOp, 885 ACPI_PARSE_OBJECT *AlignOp, 886 ACPI_PARSE_OBJECT *Op); 887 888 void 889 RsLargeAddressCheck ( 890 UINT64 Minimum, 891 UINT64 Maximum, 892 UINT64 Length, 893 UINT64 Granularity, 894 UINT8 Flags, 895 ACPI_PARSE_OBJECT *MinOp, 896 ACPI_PARSE_OBJECT *MaxOp, 897 ACPI_PARSE_OBJECT *LengthOp, 898 ACPI_PARSE_OBJECT *GranOp, 899 ACPI_PARSE_OBJECT *Op); 900 901 UINT16 902 RsGetStringDataLength ( 903 ACPI_PARSE_OBJECT *InitializerOp); 904 905 ASL_RESOURCE_NODE * 906 RsAllocateResourceNode ( 907 UINT32 Size); 908 909 void 910 RsCreateResourceField ( 911 ACPI_PARSE_OBJECT *Op, 912 char *Name, 913 UINT32 ByteOffset, 914 UINT32 BitOffset, 915 UINT32 BitLength); 916 917 void 918 RsSetFlagBits ( 919 UINT8 *Flags, 920 ACPI_PARSE_OBJECT *Op, 921 UINT8 Position, 922 UINT8 DefaultBit); 923 924 void 925 RsSetFlagBits16 ( 926 UINT16 *Flags, 927 ACPI_PARSE_OBJECT *Op, 928 UINT8 Position, 929 UINT8 DefaultBit); 930 931 ACPI_PARSE_OBJECT * 932 RsCompleteNodeAndGetNext ( 933 ACPI_PARSE_OBJECT *Op); 934 935 void 936 RsCheckListForDuplicates ( 937 ACPI_PARSE_OBJECT *Op); 938 939 ASL_RESOURCE_NODE * 940 RsDoOneResourceDescriptor ( 941 ACPI_PARSE_OBJECT *DescriptorTypeOp, 942 UINT32 CurrentByteOffset, 943 UINT8 *State); 944 945 /* Values for State above */ 946 947 #define ACPI_RSTATE_NORMAL 0 948 #define ACPI_RSTATE_START_DEPENDENT 1 949 #define ACPI_RSTATE_DEPENDENT_LIST 2 950 951 UINT32 952 RsLinkDescriptorChain ( 953 ASL_RESOURCE_NODE **PreviousRnode, 954 ASL_RESOURCE_NODE *Rnode); 955 956 void 957 RsDoResourceTemplate ( 958 ACPI_PARSE_OBJECT *Op); 959 960 961 /* 962 * aslrestype1 - Miscellaneous Small descriptors 963 */ 964 ASL_RESOURCE_NODE * 965 RsDoEndTagDescriptor ( 966 ACPI_PARSE_OBJECT *Op, 967 UINT32 CurrentByteOffset); 968 969 ASL_RESOURCE_NODE * 970 RsDoEndDependentDescriptor ( 971 ACPI_PARSE_OBJECT *Op, 972 UINT32 CurrentByteOffset); 973 974 ASL_RESOURCE_NODE * 975 RsDoMemory24Descriptor ( 976 ACPI_PARSE_OBJECT *Op, 977 UINT32 CurrentByteOffset); 978 979 ASL_RESOURCE_NODE * 980 RsDoMemory32Descriptor ( 981 ACPI_PARSE_OBJECT *Op, 982 UINT32 CurrentByteOffset); 983 984 ASL_RESOURCE_NODE * 985 RsDoMemory32FixedDescriptor ( 986 ACPI_PARSE_OBJECT *Op, 987 UINT32 CurrentByteOffset); 988 989 ASL_RESOURCE_NODE * 990 RsDoStartDependentDescriptor ( 991 ACPI_PARSE_OBJECT *Op, 992 UINT32 CurrentByteOffset); 993 994 ASL_RESOURCE_NODE * 995 RsDoStartDependentNoPriDescriptor ( 996 ACPI_PARSE_OBJECT *Op, 997 UINT32 CurrentByteOffset); 998 999 ASL_RESOURCE_NODE * 1000 RsDoVendorSmallDescriptor ( 1001 ACPI_PARSE_OBJECT *Op, 1002 UINT32 CurrentByteOffset); 1003 1004 1005 /* 1006 * aslrestype1i - I/O-related Small descriptors 1007 */ 1008 ASL_RESOURCE_NODE * 1009 RsDoDmaDescriptor ( 1010 ACPI_PARSE_OBJECT *Op, 1011 UINT32 CurrentByteOffset); 1012 1013 ASL_RESOURCE_NODE * 1014 RsDoFixedDmaDescriptor ( 1015 ACPI_PARSE_OBJECT *Op, 1016 UINT32 CurrentByteOffset); 1017 1018 ASL_RESOURCE_NODE * 1019 RsDoFixedIoDescriptor ( 1020 ACPI_PARSE_OBJECT *Op, 1021 UINT32 CurrentByteOffset); 1022 1023 ASL_RESOURCE_NODE * 1024 RsDoIoDescriptor ( 1025 ACPI_PARSE_OBJECT *Op, 1026 UINT32 CurrentByteOffset); 1027 1028 ASL_RESOURCE_NODE * 1029 RsDoIrqDescriptor ( 1030 ACPI_PARSE_OBJECT *Op, 1031 UINT32 CurrentByteOffset); 1032 1033 ASL_RESOURCE_NODE * 1034 RsDoIrqNoFlagsDescriptor ( 1035 ACPI_PARSE_OBJECT *Op, 1036 UINT32 CurrentByteOffset); 1037 1038 1039 /* 1040 * aslrestype2 - Large resource descriptors 1041 */ 1042 ASL_RESOURCE_NODE * 1043 RsDoInterruptDescriptor ( 1044 ACPI_PARSE_OBJECT *Op, 1045 UINT32 CurrentByteOffset); 1046 1047 ASL_RESOURCE_NODE * 1048 RsDoVendorLargeDescriptor ( 1049 ACPI_PARSE_OBJECT *Op, 1050 UINT32 CurrentByteOffset); 1051 1052 ASL_RESOURCE_NODE * 1053 RsDoGeneralRegisterDescriptor ( 1054 ACPI_PARSE_OBJECT *Op, 1055 UINT32 CurrentByteOffset); 1056 1057 ASL_RESOURCE_NODE * 1058 RsDoGpioIntDescriptor ( 1059 ACPI_PARSE_OBJECT *Op, 1060 UINT32 CurrentByteOffset); 1061 1062 ASL_RESOURCE_NODE * 1063 RsDoGpioIoDescriptor ( 1064 ACPI_PARSE_OBJECT *Op, 1065 UINT32 CurrentByteOffset); 1066 1067 ASL_RESOURCE_NODE * 1068 RsDoI2cSerialBusDescriptor ( 1069 ACPI_PARSE_OBJECT *Op, 1070 UINT32 CurrentByteOffset); 1071 1072 ASL_RESOURCE_NODE * 1073 RsDoSpiSerialBusDescriptor ( 1074 ACPI_PARSE_OBJECT *Op, 1075 UINT32 CurrentByteOffset); 1076 1077 ASL_RESOURCE_NODE * 1078 RsDoUartSerialBusDescriptor ( 1079 ACPI_PARSE_OBJECT *Op, 1080 UINT32 CurrentByteOffset); 1081 1082 /* 1083 * aslrestype2d - DWord address descriptors 1084 */ 1085 ASL_RESOURCE_NODE * 1086 RsDoDwordIoDescriptor ( 1087 ACPI_PARSE_OBJECT *Op, 1088 UINT32 CurrentByteOffset); 1089 1090 ASL_RESOURCE_NODE * 1091 RsDoDwordMemoryDescriptor ( 1092 ACPI_PARSE_OBJECT *Op, 1093 UINT32 CurrentByteOffset); 1094 1095 ASL_RESOURCE_NODE * 1096 RsDoDwordSpaceDescriptor ( 1097 ACPI_PARSE_OBJECT *Op, 1098 UINT32 CurrentByteOffset); 1099 1100 1101 /* 1102 * aslrestype2e - Extended address descriptors 1103 */ 1104 ASL_RESOURCE_NODE * 1105 RsDoExtendedIoDescriptor ( 1106 ACPI_PARSE_OBJECT *Op, 1107 UINT32 CurrentByteOffset); 1108 1109 ASL_RESOURCE_NODE * 1110 RsDoExtendedMemoryDescriptor ( 1111 ACPI_PARSE_OBJECT *Op, 1112 UINT32 CurrentByteOffset); 1113 1114 ASL_RESOURCE_NODE * 1115 RsDoExtendedSpaceDescriptor ( 1116 ACPI_PARSE_OBJECT *Op, 1117 UINT32 CurrentByteOffset); 1118 1119 1120 /* 1121 * aslrestype2q - QWord address descriptors 1122 */ 1123 ASL_RESOURCE_NODE * 1124 RsDoQwordIoDescriptor ( 1125 ACPI_PARSE_OBJECT *Op, 1126 UINT32 CurrentByteOffset); 1127 1128 ASL_RESOURCE_NODE * 1129 RsDoQwordMemoryDescriptor ( 1130 ACPI_PARSE_OBJECT *Op, 1131 UINT32 CurrentByteOffset); 1132 1133 ASL_RESOURCE_NODE * 1134 RsDoQwordSpaceDescriptor ( 1135 ACPI_PARSE_OBJECT *Op, 1136 UINT32 CurrentByteOffset); 1137 1138 1139 /* 1140 * aslrestype2w - Word address descriptors 1141 */ 1142 ASL_RESOURCE_NODE * 1143 RsDoWordIoDescriptor ( 1144 ACPI_PARSE_OBJECT *Op, 1145 UINT32 CurrentByteOffset); 1146 1147 ASL_RESOURCE_NODE * 1148 RsDoWordSpaceDescriptor ( 1149 ACPI_PARSE_OBJECT *Op, 1150 UINT32 CurrentByteOffset); 1151 1152 ASL_RESOURCE_NODE * 1153 RsDoWordBusNumberDescriptor ( 1154 ACPI_PARSE_OBJECT *Op, 1155 UINT32 CurrentByteOffset); 1156 1157 /* 1158 * Entry to data table compiler subsystem 1159 */ 1160 ACPI_STATUS 1161 DtDoCompile( 1162 void); 1163 1164 ACPI_STATUS 1165 DtCreateTemplates ( 1166 char *Signature); 1167 1168 #endif /* __ASLCOMPILER_H */ 1169