1 /******************************************************************************
   2  *
   3  * Name: acinterp.h - Interpreter subcomponent prototypes and defines
   4  *
   5  *****************************************************************************/
   6 
   7 /*
   8  * Copyright (C) 2000 - 2014, 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 __ACINTERP_H__
  45 #define __ACINTERP_H__
  46 
  47 
  48 #define ACPI_WALK_OPERANDS          (&(WalkState->Operands [WalkState->NumOperands -1]))
  49 
  50 /* Macros for tables used for debug output */
  51 
  52 #define ACPI_EXD_OFFSET(f)          (UINT8) ACPI_OFFSET (ACPI_OPERAND_OBJECT,f)
  53 #define ACPI_EXD_NSOFFSET(f)        (UINT8) ACPI_OFFSET (ACPI_NAMESPACE_NODE,f)
  54 #define ACPI_EXD_TABLE_SIZE(name)   (sizeof(name) / sizeof (ACPI_EXDUMP_INFO))
  55 
  56 /*
  57  * If possible, pack the following structures to byte alignment, since we
  58  * don't care about performance for debug output. Two cases where we cannot
  59  * pack the structures:
  60  *
  61  * 1) Hardware does not support misaligned memory transfers
  62  * 2) Compiler does not support pointers within packed structures
  63  */
  64 #if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED))
  65 #pragma pack(1)
  66 #endif
  67 
  68 typedef const struct acpi_exdump_info
  69 {
  70     UINT8                   Opcode;
  71     UINT8                   Offset;
  72     char                    *Name;
  73 
  74 } ACPI_EXDUMP_INFO;
  75 
  76 /* Values for the Opcode field above */
  77 
  78 #define ACPI_EXD_INIT                   0
  79 #define ACPI_EXD_TYPE                   1
  80 #define ACPI_EXD_UINT8                  2
  81 #define ACPI_EXD_UINT16                 3
  82 #define ACPI_EXD_UINT32                 4
  83 #define ACPI_EXD_UINT64                 5
  84 #define ACPI_EXD_LITERAL                6
  85 #define ACPI_EXD_POINTER                7
  86 #define ACPI_EXD_ADDRESS                8
  87 #define ACPI_EXD_STRING                 9
  88 #define ACPI_EXD_BUFFER                 10
  89 #define ACPI_EXD_PACKAGE                11
  90 #define ACPI_EXD_FIELD                  12
  91 #define ACPI_EXD_REFERENCE              13
  92 
  93 /* restore default alignment */
  94 
  95 #pragma pack()
  96 
  97 
  98 /*
  99  * exconvrt - object conversion
 100  */
 101 ACPI_STATUS
 102 AcpiExConvertToInteger (
 103     ACPI_OPERAND_OBJECT     *ObjDesc,
 104     ACPI_OPERAND_OBJECT     **ResultDesc,
 105     UINT32                  Flags);
 106 
 107 ACPI_STATUS
 108 AcpiExConvertToBuffer (
 109     ACPI_OPERAND_OBJECT     *ObjDesc,
 110     ACPI_OPERAND_OBJECT     **ResultDesc);
 111 
 112 ACPI_STATUS
 113 AcpiExConvertToString (
 114     ACPI_OPERAND_OBJECT     *ObjDesc,
 115     ACPI_OPERAND_OBJECT     **ResultDesc,
 116     UINT32                  Type);
 117 
 118 /* Types for ->String conversion */
 119 
 120 #define ACPI_EXPLICIT_BYTE_COPY         0x00000000
 121 #define ACPI_EXPLICIT_CONVERT_HEX       0x00000001
 122 #define ACPI_IMPLICIT_CONVERT_HEX       0x00000002
 123 #define ACPI_EXPLICIT_CONVERT_DECIMAL   0x00000003
 124 
 125 ACPI_STATUS
 126 AcpiExConvertToTargetType (
 127     ACPI_OBJECT_TYPE        DestinationType,
 128     ACPI_OPERAND_OBJECT     *SourceDesc,
 129     ACPI_OPERAND_OBJECT     **ResultDesc,
 130     ACPI_WALK_STATE         *WalkState);
 131 
 132 
 133 /*
 134  * exdebug - AML debug object
 135  */
 136 void
 137 AcpiExDoDebugObject (
 138     ACPI_OPERAND_OBJECT     *SourceDesc,
 139     UINT32                  Level,
 140     UINT32                  Index);
 141 
 142 
 143 /*
 144  * exfield - ACPI AML (p-code) execution - field manipulation
 145  */
 146 ACPI_STATUS
 147 AcpiExCommonBufferSetup (
 148     ACPI_OPERAND_OBJECT     *ObjDesc,
 149     UINT32                  BufferLength,
 150     UINT32                  *DatumCount);
 151 
 152 ACPI_STATUS
 153 AcpiExWriteWithUpdateRule (
 154     ACPI_OPERAND_OBJECT     *ObjDesc,
 155     UINT64                  Mask,
 156     UINT64                  FieldValue,
 157     UINT32                  FieldDatumByteOffset);
 158 
 159 void
 160 AcpiExGetBufferDatum(
 161     UINT64                  *Datum,
 162     void                    *Buffer,
 163     UINT32                  BufferLength,
 164     UINT32                  ByteGranularity,
 165     UINT32                  BufferOffset);
 166 
 167 void
 168 AcpiExSetBufferDatum (
 169     UINT64                  MergedDatum,
 170     void                    *Buffer,
 171     UINT32                  BufferLength,
 172     UINT32                  ByteGranularity,
 173     UINT32                  BufferOffset);
 174 
 175 ACPI_STATUS
 176 AcpiExReadDataFromField (
 177     ACPI_WALK_STATE         *WalkState,
 178     ACPI_OPERAND_OBJECT     *ObjDesc,
 179     ACPI_OPERAND_OBJECT     **RetBufferDesc);
 180 
 181 ACPI_STATUS
 182 AcpiExWriteDataToField (
 183     ACPI_OPERAND_OBJECT     *SourceDesc,
 184     ACPI_OPERAND_OBJECT     *ObjDesc,
 185     ACPI_OPERAND_OBJECT     **ResultDesc);
 186 
 187 
 188 /*
 189  * exfldio - low level field I/O
 190  */
 191 ACPI_STATUS
 192 AcpiExExtractFromField (
 193     ACPI_OPERAND_OBJECT     *ObjDesc,
 194     void                    *Buffer,
 195     UINT32                  BufferLength);
 196 
 197 ACPI_STATUS
 198 AcpiExInsertIntoField (
 199     ACPI_OPERAND_OBJECT     *ObjDesc,
 200     void                    *Buffer,
 201     UINT32                  BufferLength);
 202 
 203 ACPI_STATUS
 204 AcpiExAccessRegion (
 205     ACPI_OPERAND_OBJECT     *ObjDesc,
 206     UINT32                  FieldDatumByteOffset,
 207     UINT64                  *Value,
 208     UINT32                  ReadWrite);
 209 
 210 
 211 /*
 212  * exmisc - misc support routines
 213  */
 214 ACPI_STATUS
 215 AcpiExGetObjectReference (
 216     ACPI_OPERAND_OBJECT     *ObjDesc,
 217     ACPI_OPERAND_OBJECT     **ReturnDesc,
 218     ACPI_WALK_STATE         *WalkState);
 219 
 220 ACPI_STATUS
 221 AcpiExConcatTemplate (
 222     ACPI_OPERAND_OBJECT     *ObjDesc,
 223     ACPI_OPERAND_OBJECT     *ObjDesc2,
 224     ACPI_OPERAND_OBJECT     **ActualReturnDesc,
 225     ACPI_WALK_STATE         *WalkState);
 226 
 227 ACPI_STATUS
 228 AcpiExDoConcatenate (
 229     ACPI_OPERAND_OBJECT     *ObjDesc,
 230     ACPI_OPERAND_OBJECT     *ObjDesc2,
 231     ACPI_OPERAND_OBJECT     **ActualReturnDesc,
 232     ACPI_WALK_STATE         *WalkState);
 233 
 234 ACPI_STATUS
 235 AcpiExDoLogicalNumericOp (
 236     UINT16                  Opcode,
 237     UINT64                  Integer0,
 238     UINT64                  Integer1,
 239     BOOLEAN                 *LogicalResult);
 240 
 241 ACPI_STATUS
 242 AcpiExDoLogicalOp (
 243     UINT16                  Opcode,
 244     ACPI_OPERAND_OBJECT     *Operand0,
 245     ACPI_OPERAND_OBJECT     *Operand1,
 246     BOOLEAN                 *LogicalResult);
 247 
 248 UINT64
 249 AcpiExDoMathOp (
 250     UINT16                  Opcode,
 251     UINT64                  Operand0,
 252     UINT64                  Operand1);
 253 
 254 ACPI_STATUS
 255 AcpiExCreateMutex (
 256     ACPI_WALK_STATE         *WalkState);
 257 
 258 ACPI_STATUS
 259 AcpiExCreateProcessor (
 260     ACPI_WALK_STATE         *WalkState);
 261 
 262 ACPI_STATUS
 263 AcpiExCreatePowerResource (
 264     ACPI_WALK_STATE         *WalkState);
 265 
 266 ACPI_STATUS
 267 AcpiExCreateRegion (
 268     UINT8                   *AmlStart,
 269     UINT32                  AmlLength,
 270     UINT8                   RegionSpace,
 271     ACPI_WALK_STATE         *WalkState);
 272 
 273 ACPI_STATUS
 274 AcpiExCreateEvent (
 275     ACPI_WALK_STATE         *WalkState);
 276 
 277 ACPI_STATUS
 278 AcpiExCreateAlias (
 279     ACPI_WALK_STATE         *WalkState);
 280 
 281 ACPI_STATUS
 282 AcpiExCreateMethod (
 283     UINT8                   *AmlStart,
 284     UINT32                  AmlLength,
 285     ACPI_WALK_STATE         *WalkState);
 286 
 287 
 288 /*
 289  * exconfig - dynamic table load/unload
 290  */
 291 ACPI_STATUS
 292 AcpiExLoadOp (
 293     ACPI_OPERAND_OBJECT     *ObjDesc,
 294     ACPI_OPERAND_OBJECT     *Target,
 295     ACPI_WALK_STATE         *WalkState);
 296 
 297 ACPI_STATUS
 298 AcpiExLoadTableOp (
 299     ACPI_WALK_STATE         *WalkState,
 300     ACPI_OPERAND_OBJECT     **ReturnDesc);
 301 
 302 ACPI_STATUS
 303 AcpiExUnloadTable (
 304     ACPI_OPERAND_OBJECT     *DdbHandle);
 305 
 306 
 307 /*
 308  * exmutex - mutex support
 309  */
 310 ACPI_STATUS
 311 AcpiExAcquireMutex (
 312     ACPI_OPERAND_OBJECT     *TimeDesc,
 313     ACPI_OPERAND_OBJECT     *ObjDesc,
 314     ACPI_WALK_STATE         *WalkState);
 315 
 316 ACPI_STATUS
 317 AcpiExAcquireMutexObject (
 318     UINT16                  Timeout,
 319     ACPI_OPERAND_OBJECT     *ObjDesc,
 320     ACPI_THREAD_ID          ThreadId);
 321 
 322 ACPI_STATUS
 323 AcpiExReleaseMutex (
 324     ACPI_OPERAND_OBJECT     *ObjDesc,
 325     ACPI_WALK_STATE         *WalkState);
 326 
 327 ACPI_STATUS
 328 AcpiExReleaseMutexObject (
 329     ACPI_OPERAND_OBJECT     *ObjDesc);
 330 
 331 void
 332 AcpiExReleaseAllMutexes (
 333     ACPI_THREAD_STATE       *Thread);
 334 
 335 void
 336 AcpiExUnlinkMutex (
 337     ACPI_OPERAND_OBJECT     *ObjDesc);
 338 
 339 
 340 /*
 341  * exprep - ACPI AML execution - prep utilities
 342  */
 343 ACPI_STATUS
 344 AcpiExPrepCommonFieldObject (
 345     ACPI_OPERAND_OBJECT     *ObjDesc,
 346     UINT8                   FieldFlags,
 347     UINT8                   FieldAttribute,
 348     UINT32                  FieldBitPosition,
 349     UINT32                  FieldBitLength);
 350 
 351 ACPI_STATUS
 352 AcpiExPrepFieldValue (
 353     ACPI_CREATE_FIELD_INFO  *Info);
 354 
 355 
 356 /*
 357  * exsystem - Interface to OS services
 358  */
 359 ACPI_STATUS
 360 AcpiExSystemDoNotifyOp (
 361     ACPI_OPERAND_OBJECT     *Value,
 362     ACPI_OPERAND_OBJECT     *ObjDesc);
 363 
 364 ACPI_STATUS
 365 AcpiExSystemDoSleep(
 366     UINT64                  Time);
 367 
 368 ACPI_STATUS
 369 AcpiExSystemDoStall (
 370     UINT32                  Time);
 371 
 372 ACPI_STATUS
 373 AcpiExSystemSignalEvent(
 374     ACPI_OPERAND_OBJECT     *ObjDesc);
 375 
 376 ACPI_STATUS
 377 AcpiExSystemWaitEvent(
 378     ACPI_OPERAND_OBJECT     *Time,
 379     ACPI_OPERAND_OBJECT     *ObjDesc);
 380 
 381 ACPI_STATUS
 382 AcpiExSystemResetEvent(
 383     ACPI_OPERAND_OBJECT     *ObjDesc);
 384 
 385 ACPI_STATUS
 386 AcpiExSystemWaitSemaphore (
 387     ACPI_SEMAPHORE          Semaphore,
 388     UINT16                  Timeout);
 389 
 390 ACPI_STATUS
 391 AcpiExSystemWaitMutex (
 392     ACPI_MUTEX              Mutex,
 393     UINT16                  Timeout);
 394 
 395 /*
 396  * exoparg1 - ACPI AML execution, 1 operand
 397  */
 398 ACPI_STATUS
 399 AcpiExOpcode_0A_0T_1R (
 400     ACPI_WALK_STATE         *WalkState);
 401 
 402 ACPI_STATUS
 403 AcpiExOpcode_1A_0T_0R (
 404     ACPI_WALK_STATE         *WalkState);
 405 
 406 ACPI_STATUS
 407 AcpiExOpcode_1A_0T_1R (
 408     ACPI_WALK_STATE         *WalkState);
 409 
 410 ACPI_STATUS
 411 AcpiExOpcode_1A_1T_1R (
 412     ACPI_WALK_STATE         *WalkState);
 413 
 414 ACPI_STATUS
 415 AcpiExOpcode_1A_1T_0R (
 416     ACPI_WALK_STATE         *WalkState);
 417 
 418 /*
 419  * exoparg2 - ACPI AML execution, 2 operands
 420  */
 421 ACPI_STATUS
 422 AcpiExOpcode_2A_0T_0R (
 423     ACPI_WALK_STATE         *WalkState);
 424 
 425 ACPI_STATUS
 426 AcpiExOpcode_2A_0T_1R (
 427     ACPI_WALK_STATE         *WalkState);
 428 
 429 ACPI_STATUS
 430 AcpiExOpcode_2A_1T_1R (
 431     ACPI_WALK_STATE         *WalkState);
 432 
 433 ACPI_STATUS
 434 AcpiExOpcode_2A_2T_1R (
 435     ACPI_WALK_STATE         *WalkState);
 436 
 437 
 438 /*
 439  * exoparg3 - ACPI AML execution, 3 operands
 440  */
 441 ACPI_STATUS
 442 AcpiExOpcode_3A_0T_0R (
 443     ACPI_WALK_STATE         *WalkState);
 444 
 445 ACPI_STATUS
 446 AcpiExOpcode_3A_1T_1R (
 447     ACPI_WALK_STATE         *WalkState);
 448 
 449 
 450 /*
 451  * exoparg6 - ACPI AML execution, 6 operands
 452  */
 453 ACPI_STATUS
 454 AcpiExOpcode_6A_0T_1R (
 455     ACPI_WALK_STATE         *WalkState);
 456 
 457 
 458 /*
 459  * exresolv - Object resolution and get value functions
 460  */
 461 ACPI_STATUS
 462 AcpiExResolveToValue (
 463     ACPI_OPERAND_OBJECT     **StackPtr,
 464     ACPI_WALK_STATE         *WalkState);
 465 
 466 ACPI_STATUS
 467 AcpiExResolveMultiple (
 468     ACPI_WALK_STATE         *WalkState,
 469     ACPI_OPERAND_OBJECT     *Operand,
 470     ACPI_OBJECT_TYPE        *ReturnType,
 471     ACPI_OPERAND_OBJECT     **ReturnDesc);
 472 
 473 
 474 /*
 475  * exresnte - resolve namespace node
 476  */
 477 ACPI_STATUS
 478 AcpiExResolveNodeToValue (
 479     ACPI_NAMESPACE_NODE     **StackPtr,
 480     ACPI_WALK_STATE         *WalkState);
 481 
 482 
 483 /*
 484  * exresop - resolve operand to value
 485  */
 486 ACPI_STATUS
 487 AcpiExResolveOperands (
 488     UINT16                  Opcode,
 489     ACPI_OPERAND_OBJECT     **StackPtr,
 490     ACPI_WALK_STATE         *WalkState);
 491 
 492 
 493 /*
 494  * exdump - Interpreter debug output routines
 495  */
 496 void
 497 AcpiExDumpOperand (
 498     ACPI_OPERAND_OBJECT     *ObjDesc,
 499     UINT32                  Depth);
 500 
 501 void
 502 AcpiExDumpOperands (
 503     ACPI_OPERAND_OBJECT     **Operands,
 504     const char              *OpcodeName,
 505     UINT32                  NumOpcodes);
 506 
 507 void
 508 AcpiExDumpObjectDescriptor (
 509     ACPI_OPERAND_OBJECT     *Object,
 510     UINT32                  Flags);
 511 
 512 void
 513 AcpiExDumpNamespaceNode (
 514     ACPI_NAMESPACE_NODE     *Node,
 515     UINT32                  Flags);
 516 
 517 
 518 /*
 519  * exnames - AML namestring support
 520  */
 521 ACPI_STATUS
 522 AcpiExGetNameString (
 523     ACPI_OBJECT_TYPE        DataType,
 524     UINT8                   *InAmlAddress,
 525     char                    **OutNameString,
 526     UINT32                  *OutNameLength);
 527 
 528 
 529 /*
 530  * exstore - Object store support
 531  */
 532 ACPI_STATUS
 533 AcpiExStore (
 534     ACPI_OPERAND_OBJECT     *ValDesc,
 535     ACPI_OPERAND_OBJECT     *DestDesc,
 536     ACPI_WALK_STATE         *WalkState);
 537 
 538 ACPI_STATUS
 539 AcpiExStoreObjectToNode (
 540     ACPI_OPERAND_OBJECT     *SourceDesc,
 541     ACPI_NAMESPACE_NODE     *Node,
 542     ACPI_WALK_STATE         *WalkState,
 543     UINT8                   ImplicitConversion);
 544 
 545 #define ACPI_IMPLICIT_CONVERSION        TRUE
 546 #define ACPI_NO_IMPLICIT_CONVERSION     FALSE
 547 
 548 
 549 /*
 550  * exstoren - resolve/store object
 551  */
 552 ACPI_STATUS
 553 AcpiExResolveObject (
 554     ACPI_OPERAND_OBJECT     **SourceDescPtr,
 555     ACPI_OBJECT_TYPE        TargetType,
 556     ACPI_WALK_STATE         *WalkState);
 557 
 558 ACPI_STATUS
 559 AcpiExStoreObjectToObject (
 560     ACPI_OPERAND_OBJECT     *SourceDesc,
 561     ACPI_OPERAND_OBJECT     *DestDesc,
 562     ACPI_OPERAND_OBJECT     **NewDesc,
 563     ACPI_WALK_STATE         *WalkState);
 564 
 565 
 566 /*
 567  * exstorob - store object - buffer/string
 568  */
 569 ACPI_STATUS
 570 AcpiExStoreBufferToBuffer (
 571     ACPI_OPERAND_OBJECT     *SourceDesc,
 572     ACPI_OPERAND_OBJECT     *TargetDesc);
 573 
 574 ACPI_STATUS
 575 AcpiExStoreStringToString (
 576     ACPI_OPERAND_OBJECT     *SourceDesc,
 577     ACPI_OPERAND_OBJECT     *TargetDesc);
 578 
 579 
 580 /*
 581  * excopy - object copy
 582  */
 583 ACPI_STATUS
 584 AcpiExCopyIntegerToIndexField (
 585     ACPI_OPERAND_OBJECT     *SourceDesc,
 586     ACPI_OPERAND_OBJECT     *TargetDesc);
 587 
 588 ACPI_STATUS
 589 AcpiExCopyIntegerToBankField (
 590     ACPI_OPERAND_OBJECT     *SourceDesc,
 591     ACPI_OPERAND_OBJECT     *TargetDesc);
 592 
 593 ACPI_STATUS
 594 AcpiExCopyDataToNamedField (
 595     ACPI_OPERAND_OBJECT     *SourceDesc,
 596     ACPI_NAMESPACE_NODE     *Node);
 597 
 598 ACPI_STATUS
 599 AcpiExCopyIntegerToBufferField (
 600     ACPI_OPERAND_OBJECT     *SourceDesc,
 601     ACPI_OPERAND_OBJECT     *TargetDesc);
 602 
 603 
 604 /*
 605  * exutils - interpreter/scanner utilities
 606  */
 607 void
 608 AcpiExEnterInterpreter (
 609     void);
 610 
 611 void
 612 AcpiExExitInterpreter (
 613     void);
 614 
 615 void
 616 AcpiExReacquireInterpreter (
 617     void);
 618 
 619 void
 620 AcpiExRelinquishInterpreter (
 621     void);
 622 
 623 BOOLEAN
 624 AcpiExTruncateFor32bitTable (
 625     ACPI_OPERAND_OBJECT     *ObjDesc);
 626 
 627 void
 628 AcpiExAcquireGlobalLock (
 629     UINT32                  Rule);
 630 
 631 void
 632 AcpiExReleaseGlobalLock (
 633     UINT32                  Rule);
 634 
 635 void
 636 AcpiExEisaIdToString (
 637     char                    *Dest,
 638     UINT64                  CompressedId);
 639 
 640 void
 641 AcpiExIntegerToString (
 642     char                    *Dest,
 643     UINT64                  Value);
 644 
 645 BOOLEAN
 646 AcpiIsValidSpaceId (
 647     UINT8                   SpaceId);
 648 
 649 
 650 /*
 651  * exregion - default OpRegion handlers
 652  */
 653 ACPI_STATUS
 654 AcpiExSystemMemorySpaceHandler (
 655     UINT32                  Function,
 656     ACPI_PHYSICAL_ADDRESS   Address,
 657     UINT32                  BitWidth,
 658     UINT64                  *Value,
 659     void                    *HandlerContext,
 660     void                    *RegionContext);
 661 
 662 ACPI_STATUS
 663 AcpiExSystemIoSpaceHandler (
 664     UINT32                  Function,
 665     ACPI_PHYSICAL_ADDRESS   Address,
 666     UINT32                  BitWidth,
 667     UINT64                  *Value,
 668     void                    *HandlerContext,
 669     void                    *RegionContext);
 670 
 671 ACPI_STATUS
 672 AcpiExPciConfigSpaceHandler (
 673     UINT32                  Function,
 674     ACPI_PHYSICAL_ADDRESS   Address,
 675     UINT32                  BitWidth,
 676     UINT64                  *Value,
 677     void                    *HandlerContext,
 678     void                    *RegionContext);
 679 
 680 ACPI_STATUS
 681 AcpiExCmosSpaceHandler (
 682     UINT32                  Function,
 683     ACPI_PHYSICAL_ADDRESS   Address,
 684     UINT32                  BitWidth,
 685     UINT64                  *Value,
 686     void                    *HandlerContext,
 687     void                    *RegionContext);
 688 
 689 ACPI_STATUS
 690 AcpiExPciBarSpaceHandler (
 691     UINT32                  Function,
 692     ACPI_PHYSICAL_ADDRESS   Address,
 693     UINT32                  BitWidth,
 694     UINT64                  *Value,
 695     void                    *HandlerContext,
 696     void                    *RegionContext);
 697 
 698 ACPI_STATUS
 699 AcpiExEmbeddedControllerSpaceHandler (
 700     UINT32                  Function,
 701     ACPI_PHYSICAL_ADDRESS   Address,
 702     UINT32                  BitWidth,
 703     UINT64                  *Value,
 704     void                    *HandlerContext,
 705     void                    *RegionContext);
 706 
 707 ACPI_STATUS
 708 AcpiExSmBusSpaceHandler (
 709     UINT32                  Function,
 710     ACPI_PHYSICAL_ADDRESS   Address,
 711     UINT32                  BitWidth,
 712     UINT64                  *Value,
 713     void                    *HandlerContext,
 714     void                    *RegionContext);
 715 
 716 
 717 ACPI_STATUS
 718 AcpiExDataTableSpaceHandler (
 719     UINT32                  Function,
 720     ACPI_PHYSICAL_ADDRESS   Address,
 721     UINT32                  BitWidth,
 722     UINT64                  *Value,
 723     void                    *HandlerContext,
 724     void                    *RegionContext);
 725 
 726 #endif /* __INTERP_H__ */