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