aslcompiler.h revision 246849
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 */ 89ACPI_PARSE_OBJECT * 90AslDoError ( 91 void); 92 93int 94AslCompilerlex( 95 void); 96 97void 98AslResetCurrentLineBuffer ( 99 void); 100 101void 102AslInsertLineBuffer ( 103 int SourceChar); 104 105int 106AslPopInputFileStack ( 107 void); 108 109void 110AslPushInputFileStack ( 111 FILE *InputFile, 112 char *Filename); 113 114/* 115 * aslstartup - entered from main() 116 */ 117void 118AslInitializeGlobals ( 119 void); 120 121typedef 122ACPI_STATUS (*ASL_PATHNAME_CALLBACK) ( 123 char *); 124 125ACPI_STATUS 126AslDoOnePathname ( 127 char *Pathname, 128 ASL_PATHNAME_CALLBACK Callback); 129 130ACPI_STATUS 131AslDoOneFile ( 132 char *Filename); 133 134ACPI_STATUS 135AslCheckForErrorExit ( 136 void); 137 138 139/* 140 * aslcompile - compile mainline 141 */ 142void 143AslCompilerSignon ( 144 UINT32 FileId); 145 146void 147AslCompilerFileHeader ( 148 UINT32 FileId); 149 150int 151CmDoCompile ( 152 void); 153 154void 155CmDoOutputFiles ( 156 void); 157 158void 159CmCleanupAndExit ( 160 void); 161 162ACPI_STATUS 163FlCheckForAcpiTable ( 164 FILE *Handle); 165 166ACPI_STATUS 167FlCheckForAscii ( 168 FILE *Handle, 169 char *Filename, 170 BOOLEAN DisplayErrors); 171 172 173/* 174 * aslwalks - semantic analysis and parse tree walks 175 */ 176ACPI_STATUS 177AnOtherSemanticAnalysisWalkBegin ( 178 ACPI_PARSE_OBJECT *Op, 179 UINT32 Level, 180 void *Context); 181 182ACPI_STATUS 183AnOtherSemanticAnalysisWalkEnd ( 184 ACPI_PARSE_OBJECT *Op, 185 UINT32 Level, 186 void *Context); 187 188ACPI_STATUS 189AnOperandTypecheckWalkEnd ( 190 ACPI_PARSE_OBJECT *Op, 191 UINT32 Level, 192 void *Context); 193 194ACPI_STATUS 195AnMethodTypingWalkEnd ( 196 ACPI_PARSE_OBJECT *Op, 197 UINT32 Level, 198 void *Context); 199 200 201/* 202 * aslmethod - Control method analysis walk 203 */ 204ACPI_STATUS 205MtMethodAnalysisWalkBegin ( 206 ACPI_PARSE_OBJECT *Op, 207 UINT32 Level, 208 void *Context); 209 210ACPI_STATUS 211MtMethodAnalysisWalkEnd ( 212 ACPI_PARSE_OBJECT *Op, 213 UINT32 Level, 214 void *Context); 215 216 217/* 218 * aslbtypes - bitfield data types 219 */ 220UINT32 221AnMapObjTypeToBtype ( 222 ACPI_PARSE_OBJECT *Op); 223 224UINT32 225AnMapArgTypeToBtype ( 226 UINT32 ArgType); 227 228UINT32 229AnGetBtype ( 230 ACPI_PARSE_OBJECT *Op); 231 232void 233AnFormatBtype ( 234 char *Buffer, 235 UINT32 Btype); 236 237 238/* 239 * aslanalyze - Support functions for parse tree walks 240 */ 241void 242AnCheckId ( 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 251BOOLEAN 252AnIsInternalMethod ( 253 ACPI_PARSE_OBJECT *Op); 254 255UINT32 256AnGetInternalMethodReturnType ( 257 ACPI_PARSE_OBJECT *Op); 258 259BOOLEAN 260AnLastStatementIsReturn ( 261 ACPI_PARSE_OBJECT *Op); 262 263void 264AnCheckMethodReturnValue ( 265 ACPI_PARSE_OBJECT *Op, 266 const ACPI_OPCODE_INFO *OpInfo, 267 ACPI_PARSE_OBJECT *ArgOp, 268 UINT32 RequiredBtypes, 269 UINT32 ThisNodeBtype); 270 271BOOLEAN 272AnIsResultUsed ( 273 ACPI_PARSE_OBJECT *Op); 274 275void 276ApCheckForGpeNameConflict ( 277 ACPI_PARSE_OBJECT *Op); 278 279void 280ApCheckRegMethod ( 281 ACPI_PARSE_OBJECT *Op); 282 283 284/* 285 * aslerror - error handling/reporting 286 */ 287void 288AslError ( 289 UINT8 Level, 290 UINT8 MessageId, 291 ACPI_PARSE_OBJECT *Op, 292 char *ExtraMessage); 293 294void 295AslCoreSubsystemError ( 296 ACPI_PARSE_OBJECT *Op, 297 ACPI_STATUS Status, 298 char *ExtraMessage, 299 BOOLEAN Abort); 300 301int 302AslCompilererror( 303 const char *s); 304 305void 306AslCommonError ( 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 316void 317AslCommonError2 ( 318 UINT8 Level, 319 UINT8 MessageId, 320 UINT32 LineNumber, 321 UINT32 Column, 322 char *SourceLine, 323 char *Filename, 324 char *ExtraMessage); 325 326void 327AePrintException ( 328 UINT32 FileId, 329 ASL_ERROR_MSG *Enode, 330 char *Header); 331 332void 333AePrintErrorLog ( 334 UINT32 FileId); 335 336void 337AeClearErrorLog ( 338 void); 339 340ACPI_PHYSICAL_ADDRESS 341AeLocalGetRootPointer ( 342 void); 343 344 345/* 346 * asllisting - generate all "listing" type files 347 */ 348void 349LsDoListings ( 350 void); 351 352void 353LsDumpAsciiInComment ( 354 UINT32 FileId, 355 UINT32 Count, 356 UINT8 *Buffer); 357 358void 359LsWriteNodeToAsmListing ( 360 ACPI_PARSE_OBJECT *Op); 361 362void 363LsWriteNode ( 364 ACPI_PARSE_OBJECT *Op, 365 UINT32 FileId); 366 367void 368LsDumpParseTree ( 369 void); 370 371 372/* 373 * aslhex - generate all "hex" output files (C, ASM, ASL) 374 */ 375void 376HxDoHexOutput ( 377 void); 378 379 380/* 381 * aslfold - constant folding 382 */ 383ACPI_STATUS 384OpcAmlConstantWalk ( 385 ACPI_PARSE_OBJECT *Op, 386 UINT32 Level, 387 void *Context); 388 389 390/* 391 * aslopcodes - generate AML opcodes 392 */ 393ACPI_STATUS 394OpcAmlOpcodeWalk ( 395 ACPI_PARSE_OBJECT *Op, 396 UINT32 Level, 397 void *Context); 398 399ACPI_STATUS 400OpcAmlOpcodeUpdateWalk ( 401 ACPI_PARSE_OBJECT *Op, 402 UINT32 Level, 403 void *Context); 404 405void 406OpcGenerateAmlOpcode ( 407 ACPI_PARSE_OBJECT *Op); 408 409UINT32 410OpcSetOptimalIntegerSize ( 411 ACPI_PARSE_OBJECT *Op); 412 413void 414OpcGetIntegerWidth ( 415 ACPI_PARSE_OBJECT *Op); 416 417 418/* 419 * asloperands - generate AML operands for the AML opcodes 420 */ 421ACPI_PARSE_OBJECT * 422UtGetArg ( 423 ACPI_PARSE_OBJECT *Op, 424 UINT32 Argn); 425 426void 427OpnGenerateAmlOperands ( 428 ACPI_PARSE_OBJECT *Op); 429 430void 431OpnDoPackage ( 432 ACPI_PARSE_OBJECT *Op); 433 434 435/* 436 * aslopt - optmization 437 */ 438void 439OptOptimizeNamePath ( 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 */ 450void 451CgGenerateAmlOutput ( 452 void); 453 454 455/* 456 * aslfile 457 */ 458void 459FlOpenFile ( 460 UINT32 FileId, 461 char *Filename, 462 char *Mode); 463 464 465/* 466 * asllength - calculate/adjust AML package lengths 467 */ 468ACPI_STATUS 469LnPackageLengthWalk ( 470 ACPI_PARSE_OBJECT *Op, 471 UINT32 Level, 472 void *Context); 473 474ACPI_STATUS 475LnInitLengthsWalk ( 476 ACPI_PARSE_OBJECT *Op, 477 UINT32 Level, 478 void *Context); 479 480void 481CgGenerateAmlLengths ( 482 ACPI_PARSE_OBJECT *Op); 483 484 485/* 486 * aslmap - opcode mappings and reserved method names 487 */ 488ACPI_OBJECT_TYPE 489AslMapNamedOpcodeToDataType ( 490 UINT16 Opcode); 491 492 493/* 494 * aslpredef - ACPI predefined names support 495 */ 496BOOLEAN 497ApCheckForPredefinedMethod ( 498 ACPI_PARSE_OBJECT *Op, 499 ASL_METHOD_INFO *MethodInfo); 500 501void 502ApCheckPredefinedReturnValue ( 503 ACPI_PARSE_OBJECT *Op, 504 ASL_METHOD_INFO *MethodInfo); 505 506UINT32 507ApCheckForPredefinedName ( 508 ACPI_PARSE_OBJECT *Op, 509 char *Name); 510 511void 512ApCheckForPredefinedObject ( 513 ACPI_PARSE_OBJECT *Op, 514 char *Name); 515 516ACPI_STATUS 517ApCheckObjectType ( 518 const char *PredefinedName, 519 ACPI_PARSE_OBJECT *Op, 520 UINT32 ExpectedBtypes, 521 UINT32 PackageIndex); 522 523void 524ApDisplayReservedNames ( 525 void); 526 527 528/* 529 * aslprepkg - ACPI predefined names support for packages 530 */ 531void 532ApCheckPackage ( 533 ACPI_PARSE_OBJECT *ParentOp, 534 const ACPI_PREDEFINED_INFO *Predefined); 535 536 537/* 538 * asltransform - parse tree transformations 539 */ 540ACPI_STATUS 541TrAmlTransformWalk ( 542 ACPI_PARSE_OBJECT *Op, 543 UINT32 Level, 544 void *Context); 545 546 547/* 548 * asltree - parse tree support 549 */ 550ACPI_STATUS 551TrWalkParseTree ( 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 565ACPI_PARSE_OBJECT * 566TrAllocateNode ( 567 UINT32 ParseOpcode); 568 569void 570TrReleaseNode ( 571 ACPI_PARSE_OBJECT *Op); 572 573ACPI_PARSE_OBJECT * 574TrUpdateNode ( 575 UINT32 ParseOpcode, 576 ACPI_PARSE_OBJECT *Op); 577 578ACPI_PARSE_OBJECT * 579TrCreateNode ( 580 UINT32 ParseOpcode, 581 UINT32 NumChildren, 582 ...); 583 584ACPI_PARSE_OBJECT * 585TrCreateLeafNode ( 586 UINT32 ParseOpcode); 587 588ACPI_PARSE_OBJECT * 589TrCreateValuedLeafNode ( 590 UINT32 ParseOpcode, 591 UINT64 Value); 592 593ACPI_PARSE_OBJECT * 594TrCreateConstantLeafNode ( 595 UINT32 ParseOpcode); 596 597ACPI_PARSE_OBJECT * 598TrLinkChildren ( 599 ACPI_PARSE_OBJECT *Op, 600 UINT32 NumChildren, 601 ...); 602 603void 604TrSetEndLineNumber ( 605 ACPI_PARSE_OBJECT *Op); 606 607void 608TrWalkTree ( 609 void); 610 611ACPI_PARSE_OBJECT * 612TrLinkPeerNode ( 613 ACPI_PARSE_OBJECT *Op1, 614 ACPI_PARSE_OBJECT *Op2); 615 616ACPI_PARSE_OBJECT * 617TrLinkChildNode ( 618 ACPI_PARSE_OBJECT *Op1, 619 ACPI_PARSE_OBJECT *Op2); 620 621ACPI_PARSE_OBJECT * 622TrSetNodeFlags ( 623 ACPI_PARSE_OBJECT *Op, 624 UINT32 Flags); 625 626ACPI_PARSE_OBJECT * 627TrSetNodeAmlLength ( 628 ACPI_PARSE_OBJECT *Op, 629 UINT32 Length); 630 631ACPI_PARSE_OBJECT * 632TrLinkPeerNodes ( 633 UINT32 NumPeers, 634 ...); 635 636 637/* 638 * aslfiles - File I/O support 639 */ 640void 641AslAbort ( 642 void); 643 644void 645FlAddIncludeDirectory ( 646 char *Dir); 647 648char * 649FlMergePathnames ( 650 char *PrefixDir, 651 char *FilePathname); 652 653void 654FlOpenIncludeFile ( 655 ACPI_PARSE_OBJECT *Op); 656 657void 658FlFileError ( 659 UINT32 FileId, 660 UINT8 ErrorId); 661 662UINT32 663FlGetFileSize ( 664 UINT32 FileId); 665 666ACPI_STATUS 667FlReadFile ( 668 UINT32 FileId, 669 void *Buffer, 670 UINT32 Length); 671 672void 673FlWriteFile ( 674 UINT32 FileId, 675 void *Buffer, 676 UINT32 Length); 677 678void 679FlSeekFile ( 680 UINT32 FileId, 681 long Offset); 682 683void 684FlCloseFile ( 685 UINT32 FileId); 686 687void 688FlPrintFile ( 689 UINT32 FileId, 690 char *Format, 691 ...); 692 693void 694FlDeleteFile ( 695 UINT32 FileId); 696 697void 698FlSetLineNumber ( 699 UINT32 LineNumber); 700 701void 702FlSetFilename ( 703 char *Filename); 704 705ACPI_STATUS 706FlOpenInputFile ( 707 char *InputFilename); 708 709ACPI_STATUS 710FlOpenAmlOutputFile ( 711 char *InputFilename); 712 713ACPI_STATUS 714FlOpenMiscOutputFiles ( 715 char *InputFilename); 716 717 718/* 719 * asload - load namespace in prep for cross reference 720 */ 721ACPI_STATUS 722LdLoadNamespace ( 723 ACPI_PARSE_OBJECT *RootOp); 724 725 726/* 727 * asllookup - namespace lookup functions 728 */ 729void 730LkFindUnreferencedObjects ( 731 void); 732 733 734/* 735 * aslnamesp - namespace output file generation 736 */ 737ACPI_STATUS 738NsDisplayNamespace ( 739 void); 740 741void 742NsSetupNamespaceListing ( 743 void *Handle); 744 745 746/* 747 * aslxref - namespace cross reference 748 */ 749ACPI_STATUS 750XfCrossReferenceNamespace ( 751 void); 752 753 754/* 755 * aslutils - common compiler utilites 756 */ 757void 758DbgPrint ( 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 769void 770UtDisplaySupportedTables ( 771 void); 772 773void 774UtDisplayConstantOpcodes ( 775 void); 776 777UINT8 778UtBeginEvent ( 779 char *Name); 780 781void 782UtEndEvent ( 783 UINT8 Event); 784 785void * 786UtLocalCalloc ( 787 UINT32 Size); 788 789void 790UtPrintFormattedName ( 791 UINT16 ParseOpcode, 792 UINT32 Level); 793 794void 795UtDisplaySummary ( 796 UINT32 FileId); 797 798UINT8 799UtHexCharToValue ( 800 int HexChar); 801 802void 803UtConvertByteToHex ( 804 UINT8 RawByte, 805 UINT8 *Buffer); 806 807void 808UtConvertByteToAsmHex ( 809 UINT8 RawByte, 810 UINT8 *Buffer); 811 812char * 813UtGetOpName ( 814 UINT32 ParseOpcode); 815 816void 817UtSetParseOpName ( 818 ACPI_PARSE_OBJECT *Op); 819 820char * 821UtGetStringBuffer ( 822 UINT32 Length); 823 824void 825UtExpandLineBuffers ( 826 void); 827 828ACPI_STATUS 829UtInternalizeName ( 830 char *ExternalName, 831 char **ConvertedName); 832 833void 834UtAttachNamepathToOwner ( 835 ACPI_PARSE_OBJECT *Op, 836 ACPI_PARSE_OBJECT *NameNode); 837 838ACPI_PARSE_OBJECT * 839UtCheckIntegerRange ( 840 ACPI_PARSE_OBJECT *Op, 841 UINT32 LowValue, 842 UINT32 HighValue); 843 844UINT64 845UtDoConstant ( 846 char *String); 847 848ACPI_STATUS 849UtStrtoul64 ( 850 char *String, 851 UINT32 Base, 852 UINT64 *RetInteger); 853 854 855/* 856 * asluuid - UUID support 857 */ 858ACPI_STATUS 859AuValidateUuid ( 860 char *InString); 861 862ACPI_STATUS 863AuConvertStringToUuid ( 864 char *InString, 865 char *UuIdBuffer); 866 867ACPI_STATUS 868AuConvertUuidToString ( 869 char *UuIdBuffer, 870 char *OutString); 871 872/* 873 * aslresource - Resource template generation utilities 874 */ 875void 876RsSmallAddressCheck ( 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 888void 889RsLargeAddressCheck ( 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 901UINT16 902RsGetStringDataLength ( 903 ACPI_PARSE_OBJECT *InitializerOp); 904 905ASL_RESOURCE_NODE * 906RsAllocateResourceNode ( 907 UINT32 Size); 908 909void 910RsCreateResourceField ( 911 ACPI_PARSE_OBJECT *Op, 912 char *Name, 913 UINT32 ByteOffset, 914 UINT32 BitOffset, 915 UINT32 BitLength); 916 917void 918RsSetFlagBits ( 919 UINT8 *Flags, 920 ACPI_PARSE_OBJECT *Op, 921 UINT8 Position, 922 UINT8 DefaultBit); 923 924void 925RsSetFlagBits16 ( 926 UINT16 *Flags, 927 ACPI_PARSE_OBJECT *Op, 928 UINT8 Position, 929 UINT8 DefaultBit); 930 931ACPI_PARSE_OBJECT * 932RsCompleteNodeAndGetNext ( 933 ACPI_PARSE_OBJECT *Op); 934 935void 936RsCheckListForDuplicates ( 937 ACPI_PARSE_OBJECT *Op); 938 939ASL_RESOURCE_NODE * 940RsDoOneResourceDescriptor ( 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 951UINT32 952RsLinkDescriptorChain ( 953 ASL_RESOURCE_NODE **PreviousRnode, 954 ASL_RESOURCE_NODE *Rnode); 955 956void 957RsDoResourceTemplate ( 958 ACPI_PARSE_OBJECT *Op); 959 960 961/* 962 * aslrestype1 - Miscellaneous Small descriptors 963 */ 964ASL_RESOURCE_NODE * 965RsDoEndTagDescriptor ( 966 ACPI_PARSE_OBJECT *Op, 967 UINT32 CurrentByteOffset); 968 969ASL_RESOURCE_NODE * 970RsDoEndDependentDescriptor ( 971 ACPI_PARSE_OBJECT *Op, 972 UINT32 CurrentByteOffset); 973 974ASL_RESOURCE_NODE * 975RsDoMemory24Descriptor ( 976 ACPI_PARSE_OBJECT *Op, 977 UINT32 CurrentByteOffset); 978 979ASL_RESOURCE_NODE * 980RsDoMemory32Descriptor ( 981 ACPI_PARSE_OBJECT *Op, 982 UINT32 CurrentByteOffset); 983 984ASL_RESOURCE_NODE * 985RsDoMemory32FixedDescriptor ( 986 ACPI_PARSE_OBJECT *Op, 987 UINT32 CurrentByteOffset); 988 989ASL_RESOURCE_NODE * 990RsDoStartDependentDescriptor ( 991 ACPI_PARSE_OBJECT *Op, 992 UINT32 CurrentByteOffset); 993 994ASL_RESOURCE_NODE * 995RsDoStartDependentNoPriDescriptor ( 996 ACPI_PARSE_OBJECT *Op, 997 UINT32 CurrentByteOffset); 998 999ASL_RESOURCE_NODE * 1000RsDoVendorSmallDescriptor ( 1001 ACPI_PARSE_OBJECT *Op, 1002 UINT32 CurrentByteOffset); 1003 1004 1005/* 1006 * aslrestype1i - I/O-related Small descriptors 1007 */ 1008ASL_RESOURCE_NODE * 1009RsDoDmaDescriptor ( 1010 ACPI_PARSE_OBJECT *Op, 1011 UINT32 CurrentByteOffset); 1012 1013ASL_RESOURCE_NODE * 1014RsDoFixedDmaDescriptor ( 1015 ACPI_PARSE_OBJECT *Op, 1016 UINT32 CurrentByteOffset); 1017 1018ASL_RESOURCE_NODE * 1019RsDoFixedIoDescriptor ( 1020 ACPI_PARSE_OBJECT *Op, 1021 UINT32 CurrentByteOffset); 1022 1023ASL_RESOURCE_NODE * 1024RsDoIoDescriptor ( 1025 ACPI_PARSE_OBJECT *Op, 1026 UINT32 CurrentByteOffset); 1027 1028ASL_RESOURCE_NODE * 1029RsDoIrqDescriptor ( 1030 ACPI_PARSE_OBJECT *Op, 1031 UINT32 CurrentByteOffset); 1032 1033ASL_RESOURCE_NODE * 1034RsDoIrqNoFlagsDescriptor ( 1035 ACPI_PARSE_OBJECT *Op, 1036 UINT32 CurrentByteOffset); 1037 1038 1039/* 1040 * aslrestype2 - Large resource descriptors 1041 */ 1042ASL_RESOURCE_NODE * 1043RsDoInterruptDescriptor ( 1044 ACPI_PARSE_OBJECT *Op, 1045 UINT32 CurrentByteOffset); 1046 1047ASL_RESOURCE_NODE * 1048RsDoVendorLargeDescriptor ( 1049 ACPI_PARSE_OBJECT *Op, 1050 UINT32 CurrentByteOffset); 1051 1052ASL_RESOURCE_NODE * 1053RsDoGeneralRegisterDescriptor ( 1054 ACPI_PARSE_OBJECT *Op, 1055 UINT32 CurrentByteOffset); 1056 1057ASL_RESOURCE_NODE * 1058RsDoGpioIntDescriptor ( 1059 ACPI_PARSE_OBJECT *Op, 1060 UINT32 CurrentByteOffset); 1061 1062ASL_RESOURCE_NODE * 1063RsDoGpioIoDescriptor ( 1064 ACPI_PARSE_OBJECT *Op, 1065 UINT32 CurrentByteOffset); 1066 1067ASL_RESOURCE_NODE * 1068RsDoI2cSerialBusDescriptor ( 1069 ACPI_PARSE_OBJECT *Op, 1070 UINT32 CurrentByteOffset); 1071 1072ASL_RESOURCE_NODE * 1073RsDoSpiSerialBusDescriptor ( 1074 ACPI_PARSE_OBJECT *Op, 1075 UINT32 CurrentByteOffset); 1076 1077ASL_RESOURCE_NODE * 1078RsDoUartSerialBusDescriptor ( 1079 ACPI_PARSE_OBJECT *Op, 1080 UINT32 CurrentByteOffset); 1081 1082/* 1083 * aslrestype2d - DWord address descriptors 1084 */ 1085ASL_RESOURCE_NODE * 1086RsDoDwordIoDescriptor ( 1087 ACPI_PARSE_OBJECT *Op, 1088 UINT32 CurrentByteOffset); 1089 1090ASL_RESOURCE_NODE * 1091RsDoDwordMemoryDescriptor ( 1092 ACPI_PARSE_OBJECT *Op, 1093 UINT32 CurrentByteOffset); 1094 1095ASL_RESOURCE_NODE * 1096RsDoDwordSpaceDescriptor ( 1097 ACPI_PARSE_OBJECT *Op, 1098 UINT32 CurrentByteOffset); 1099 1100 1101/* 1102 * aslrestype2e - Extended address descriptors 1103 */ 1104ASL_RESOURCE_NODE * 1105RsDoExtendedIoDescriptor ( 1106 ACPI_PARSE_OBJECT *Op, 1107 UINT32 CurrentByteOffset); 1108 1109ASL_RESOURCE_NODE * 1110RsDoExtendedMemoryDescriptor ( 1111 ACPI_PARSE_OBJECT *Op, 1112 UINT32 CurrentByteOffset); 1113 1114ASL_RESOURCE_NODE * 1115RsDoExtendedSpaceDescriptor ( 1116 ACPI_PARSE_OBJECT *Op, 1117 UINT32 CurrentByteOffset); 1118 1119 1120/* 1121 * aslrestype2q - QWord address descriptors 1122 */ 1123ASL_RESOURCE_NODE * 1124RsDoQwordIoDescriptor ( 1125 ACPI_PARSE_OBJECT *Op, 1126 UINT32 CurrentByteOffset); 1127 1128ASL_RESOURCE_NODE * 1129RsDoQwordMemoryDescriptor ( 1130 ACPI_PARSE_OBJECT *Op, 1131 UINT32 CurrentByteOffset); 1132 1133ASL_RESOURCE_NODE * 1134RsDoQwordSpaceDescriptor ( 1135 ACPI_PARSE_OBJECT *Op, 1136 UINT32 CurrentByteOffset); 1137 1138 1139/* 1140 * aslrestype2w - Word address descriptors 1141 */ 1142ASL_RESOURCE_NODE * 1143RsDoWordIoDescriptor ( 1144 ACPI_PARSE_OBJECT *Op, 1145 UINT32 CurrentByteOffset); 1146 1147ASL_RESOURCE_NODE * 1148RsDoWordSpaceDescriptor ( 1149 ACPI_PARSE_OBJECT *Op, 1150 UINT32 CurrentByteOffset); 1151 1152ASL_RESOURCE_NODE * 1153RsDoWordBusNumberDescriptor ( 1154 ACPI_PARSE_OBJECT *Op, 1155 UINT32 CurrentByteOffset); 1156 1157/* 1158 * Entry to data table compiler subsystem 1159 */ 1160ACPI_STATUS 1161DtDoCompile( 1162 void); 1163 1164ACPI_STATUS 1165DtCreateTemplates ( 1166 char *Signature); 1167 1168#endif /* __ASLCOMPILER_H */ 1169