Home | History | Annotate | Line # | Download | only in include
      1 /******************************************************************************
      2  *
      3  * Name: acinterp.h - Interpreter subcomponent prototypes and defines
      4  *
      5  *****************************************************************************/
      6 
      7 /*
      8  * Copyright (C) 2000 - 2025, 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 MERCHANTABILITY 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     const 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 #define ACPI_EXD_LIST                   14 /* Operand object list */
     93 #define ACPI_EXD_HDLR_LIST              15 /* Address Handler list */
     94 #define ACPI_EXD_RGN_LIST               16 /* Region list */
     95 #define ACPI_EXD_NODE                   17 /* Namespace Node */
     96 
     97 /* restore default alignment */
     98 
     99 #pragma pack()
    100 
    101 
    102 /*
    103  * exconvrt - object conversion
    104  */
    105 ACPI_STATUS
    106 AcpiExConvertToInteger (
    107     ACPI_OPERAND_OBJECT     *ObjDesc,
    108     ACPI_OPERAND_OBJECT     **ResultDesc,
    109     UINT32                  ImplicitConversion);
    110 
    111 ACPI_STATUS
    112 AcpiExConvertToBuffer (
    113     ACPI_OPERAND_OBJECT     *ObjDesc,
    114     ACPI_OPERAND_OBJECT     **ResultDesc);
    115 
    116 ACPI_STATUS
    117 AcpiExConvertToString (
    118     ACPI_OPERAND_OBJECT     *ObjDesc,
    119     ACPI_OPERAND_OBJECT     **ResultDesc,
    120     UINT32                  Type);
    121 
    122 /* Types for ->String conversion */
    123 
    124 #define ACPI_EXPLICIT_BYTE_COPY         0x00000000
    125 #define ACPI_EXPLICIT_CONVERT_HEX       0x00000001
    126 #define ACPI_IMPLICIT_CONVERT_HEX       0x00000002
    127 #define ACPI_EXPLICIT_CONVERT_DECIMAL   0x00000003
    128 
    129 ACPI_STATUS
    130 AcpiExConvertToTargetType (
    131     ACPI_OBJECT_TYPE        DestinationType,
    132     ACPI_OPERAND_OBJECT     *SourceDesc,
    133     ACPI_OPERAND_OBJECT     **ResultDesc,
    134     ACPI_WALK_STATE         *WalkState);
    135 
    136 
    137 /*
    138  * exdebug - AML debug object
    139  */
    140 void
    141 AcpiExDoDebugObject (
    142     ACPI_OPERAND_OBJECT     *SourceDesc,
    143     UINT32                  Level,
    144     UINT32                  Index);
    145 
    146 void
    147 AcpiExStartTraceMethod (
    148     ACPI_NAMESPACE_NODE     *MethodNode,
    149     ACPI_OPERAND_OBJECT     *ObjDesc,
    150     ACPI_WALK_STATE         *WalkState);
    151 
    152 void
    153 AcpiExStopTraceMethod (
    154     ACPI_NAMESPACE_NODE     *MethodNode,
    155     ACPI_OPERAND_OBJECT     *ObjDesc,
    156     ACPI_WALK_STATE         *WalkState);
    157 
    158 void
    159 AcpiExStartTraceOpcode (
    160     ACPI_PARSE_OBJECT       *Op,
    161     ACPI_WALK_STATE         *WalkState);
    162 
    163 void
    164 AcpiExStopTraceOpcode (
    165     ACPI_PARSE_OBJECT       *Op,
    166     ACPI_WALK_STATE         *WalkState);
    167 
    168 void
    169 AcpiExTracePoint (
    170     ACPI_TRACE_EVENT_TYPE   Type,
    171     BOOLEAN                 Begin,
    172     UINT8                   *Aml,
    173     char                    *Pathname);
    174 
    175 void
    176 AcpiExTraceArgs(
    177     ACPI_OPERAND_OBJECT     **Params,
    178     UINT32                  Count);
    179 
    180 /*
    181  * exfield - ACPI AML (p-code) execution - field manipulation
    182  */
    183 ACPI_STATUS
    184 AcpiExGetProtocolBufferLength (
    185     UINT32                  ProtocolId,
    186     UINT32                  *ReturnLength);
    187 
    188 ACPI_STATUS
    189 AcpiExCommonBufferSetup (
    190     ACPI_OPERAND_OBJECT     *ObjDesc,
    191     UINT32                  BufferLength,
    192     UINT32                  *DatumCount);
    193 
    194 ACPI_STATUS
    195 AcpiExWriteWithUpdateRule (
    196     ACPI_OPERAND_OBJECT     *ObjDesc,
    197     UINT64                  Mask,
    198     UINT64                  FieldValue,
    199     UINT32                  FieldDatumByteOffset);
    200 
    201 void
    202 AcpiExGetBufferDatum(
    203     UINT64                  *Datum,
    204     void                    *Buffer,
    205     UINT32                  BufferLength,
    206     UINT32                  ByteGranularity,
    207     UINT32                  BufferOffset);
    208 
    209 void
    210 AcpiExSetBufferDatum (
    211     UINT64                  MergedDatum,
    212     void                    *Buffer,
    213     UINT32                  BufferLength,
    214     UINT32                  ByteGranularity,
    215     UINT32                  BufferOffset);
    216 
    217 ACPI_STATUS
    218 AcpiExReadDataFromField (
    219     ACPI_WALK_STATE         *WalkState,
    220     ACPI_OPERAND_OBJECT     *ObjDesc,
    221     ACPI_OPERAND_OBJECT     **RetBufferDesc);
    222 
    223 ACPI_STATUS
    224 AcpiExWriteDataToField (
    225     ACPI_OPERAND_OBJECT     *SourceDesc,
    226     ACPI_OPERAND_OBJECT     *ObjDesc,
    227     ACPI_OPERAND_OBJECT     **ResultDesc);
    228 
    229 
    230 /*
    231  * exfldio - low level field I/O
    232  */
    233 ACPI_STATUS
    234 AcpiExExtractFromField (
    235     ACPI_OPERAND_OBJECT     *ObjDesc,
    236     void                    *Buffer,
    237     UINT32                  BufferLength);
    238 
    239 ACPI_STATUS
    240 AcpiExInsertIntoField (
    241     ACPI_OPERAND_OBJECT     *ObjDesc,
    242     void                    *Buffer,
    243     UINT32                  BufferLength);
    244 
    245 ACPI_STATUS
    246 AcpiExAccessRegion (
    247     ACPI_OPERAND_OBJECT     *ObjDesc,
    248     UINT32                  FieldDatumByteOffset,
    249     UINT64                  *Value,
    250     UINT32                  ReadWrite);
    251 
    252 
    253 /*
    254  * exmisc - misc support routines
    255  */
    256 ACPI_STATUS
    257 AcpiExGetObjectReference (
    258     ACPI_OPERAND_OBJECT     *ObjDesc,
    259     ACPI_OPERAND_OBJECT     **ReturnDesc,
    260     ACPI_WALK_STATE         *WalkState);
    261 
    262 ACPI_STATUS
    263 AcpiExConcatTemplate (
    264     ACPI_OPERAND_OBJECT     *ObjDesc,
    265     ACPI_OPERAND_OBJECT     *ObjDesc2,
    266     ACPI_OPERAND_OBJECT     **ActualReturnDesc,
    267     ACPI_WALK_STATE         *WalkState);
    268 
    269 ACPI_STATUS
    270 AcpiExDoConcatenate (
    271     ACPI_OPERAND_OBJECT     *ObjDesc,
    272     ACPI_OPERAND_OBJECT     *ObjDesc2,
    273     ACPI_OPERAND_OBJECT     **ActualReturnDesc,
    274     ACPI_WALK_STATE         *WalkState);
    275 
    276 ACPI_STATUS
    277 AcpiExDoLogicalNumericOp (
    278     UINT16                  Opcode,
    279     UINT64                  Integer0,
    280     UINT64                  Integer1,
    281     BOOLEAN                 *LogicalResult);
    282 
    283 ACPI_STATUS
    284 AcpiExDoLogicalOp (
    285     UINT16                  Opcode,
    286     ACPI_OPERAND_OBJECT     *Operand0,
    287     ACPI_OPERAND_OBJECT     *Operand1,
    288     BOOLEAN                 *LogicalResult);
    289 
    290 UINT64
    291 AcpiExDoMathOp (
    292     UINT16                  Opcode,
    293     UINT64                  Operand0,
    294     UINT64                  Operand1);
    295 
    296 ACPI_STATUS
    297 AcpiExCreateMutex (
    298     ACPI_WALK_STATE         *WalkState);
    299 
    300 ACPI_STATUS
    301 AcpiExCreateProcessor (
    302     ACPI_WALK_STATE         *WalkState);
    303 
    304 ACPI_STATUS
    305 AcpiExCreatePowerResource (
    306     ACPI_WALK_STATE         *WalkState);
    307 
    308 ACPI_STATUS
    309 AcpiExCreateRegion (
    310     UINT8                   *AmlStart,
    311     UINT32                  AmlLength,
    312     UINT8                   RegionSpace,
    313     ACPI_WALK_STATE         *WalkState);
    314 
    315 ACPI_STATUS
    316 AcpiExCreateEvent (
    317     ACPI_WALK_STATE         *WalkState);
    318 
    319 ACPI_STATUS
    320 AcpiExCreateAlias (
    321     ACPI_WALK_STATE         *WalkState);
    322 
    323 ACPI_STATUS
    324 AcpiExCreateMethod (
    325     UINT8                   *AmlStart,
    326     UINT32                  AmlLength,
    327     ACPI_WALK_STATE         *WalkState);
    328 
    329 
    330 /*
    331  * exconfig - dynamic table load/unload
    332  */
    333 ACPI_STATUS
    334 AcpiExLoadOp (
    335     ACPI_OPERAND_OBJECT     *ObjDesc,
    336     ACPI_OPERAND_OBJECT     *Target,
    337     ACPI_WALK_STATE         *WalkState);
    338 
    339 ACPI_STATUS
    340 AcpiExLoadTableOp (
    341     ACPI_WALK_STATE         *WalkState,
    342     ACPI_OPERAND_OBJECT     **ReturnDesc);
    343 
    344 ACPI_STATUS
    345 AcpiExUnloadTable (
    346     ACPI_OPERAND_OBJECT     *DdbHandle);
    347 
    348 
    349 /*
    350  * exmutex - mutex support
    351  */
    352 ACPI_STATUS
    353 AcpiExAcquireMutex (
    354     ACPI_OPERAND_OBJECT     *TimeDesc,
    355     ACPI_OPERAND_OBJECT     *ObjDesc,
    356     ACPI_WALK_STATE         *WalkState);
    357 
    358 ACPI_STATUS
    359 AcpiExAcquireMutexObject (
    360     UINT16                  Timeout,
    361     ACPI_OPERAND_OBJECT     *ObjDesc,
    362     ACPI_THREAD_ID          ThreadId);
    363 
    364 ACPI_STATUS
    365 AcpiExReleaseMutex (
    366     ACPI_OPERAND_OBJECT     *ObjDesc,
    367     ACPI_WALK_STATE         *WalkState);
    368 
    369 ACPI_STATUS
    370 AcpiExReleaseMutexObject (
    371     ACPI_OPERAND_OBJECT     *ObjDesc);
    372 
    373 void
    374 AcpiExReleaseAllMutexes (
    375     ACPI_THREAD_STATE       *Thread);
    376 
    377 void
    378 AcpiExUnlinkMutex (
    379     ACPI_OPERAND_OBJECT     *ObjDesc);
    380 
    381 
    382 /*
    383  * exprep - ACPI AML execution - prep utilities
    384  */
    385 ACPI_STATUS
    386 AcpiExPrepCommonFieldObject (
    387     ACPI_OPERAND_OBJECT     *ObjDesc,
    388     UINT8                   FieldFlags,
    389     UINT8                   FieldAttribute,
    390     UINT32                  FieldBitPosition,
    391     UINT32                  FieldBitLength);
    392 
    393 ACPI_STATUS
    394 AcpiExPrepFieldValue (
    395     ACPI_CREATE_FIELD_INFO  *Info);
    396 
    397 
    398 /*
    399  * exserial - FieldUnit support for serial address spaces
    400  */
    401 ACPI_STATUS
    402 AcpiExReadSerialBus (
    403     ACPI_OPERAND_OBJECT     *ObjDesc,
    404     ACPI_OPERAND_OBJECT     **ReturnBuffer);
    405 
    406 ACPI_STATUS
    407 AcpiExWriteSerialBus (
    408     ACPI_OPERAND_OBJECT     *SourceDesc,
    409     ACPI_OPERAND_OBJECT     *ObjDesc,
    410     ACPI_OPERAND_OBJECT     **ReturnBuffer);
    411 
    412 ACPI_STATUS
    413 AcpiExReadGpio (
    414     ACPI_OPERAND_OBJECT     *ObjDesc,
    415     void                    *Buffer);
    416 
    417 ACPI_STATUS
    418 AcpiExWriteGpio (
    419     ACPI_OPERAND_OBJECT     *SourceDesc,
    420     ACPI_OPERAND_OBJECT     *ObjDesc,
    421     ACPI_OPERAND_OBJECT     **ReturnBuffer);
    422 
    423 
    424 /*
    425  * exsystem - Interface to OS services
    426  */
    427 ACPI_STATUS
    428 AcpiExSystemDoNotifyOp (
    429     ACPI_OPERAND_OBJECT     *Value,
    430     ACPI_OPERAND_OBJECT     *ObjDesc);
    431 
    432 ACPI_STATUS
    433 AcpiExSystemDoSleep(
    434     UINT64                  Time);
    435 
    436 ACPI_STATUS
    437 AcpiExSystemDoStall (
    438     UINT32                  Time);
    439 
    440 ACPI_STATUS
    441 AcpiExSystemSignalEvent(
    442     ACPI_OPERAND_OBJECT     *ObjDesc);
    443 
    444 ACPI_STATUS
    445 AcpiExSystemWaitEvent(
    446     ACPI_OPERAND_OBJECT     *Time,
    447     ACPI_OPERAND_OBJECT     *ObjDesc);
    448 
    449 ACPI_STATUS
    450 AcpiExSystemResetEvent(
    451     ACPI_OPERAND_OBJECT     *ObjDesc);
    452 
    453 ACPI_STATUS
    454 AcpiExSystemWaitSemaphore (
    455     ACPI_SEMAPHORE          Semaphore,
    456     UINT16                  Timeout);
    457 
    458 ACPI_STATUS
    459 AcpiExSystemWaitMutex (
    460     ACPI_MUTEX              Mutex,
    461     UINT16                  Timeout);
    462 
    463 /*
    464  * exoparg1 - ACPI AML execution, 1 operand
    465  */
    466 ACPI_STATUS
    467 AcpiExOpcode_0A_0T_1R (
    468     ACPI_WALK_STATE         *WalkState);
    469 
    470 ACPI_STATUS
    471 AcpiExOpcode_1A_0T_0R (
    472     ACPI_WALK_STATE         *WalkState);
    473 
    474 ACPI_STATUS
    475 AcpiExOpcode_1A_0T_1R (
    476     ACPI_WALK_STATE         *WalkState);
    477 
    478 ACPI_STATUS
    479 AcpiExOpcode_1A_1T_1R (
    480     ACPI_WALK_STATE         *WalkState);
    481 
    482 ACPI_STATUS
    483 AcpiExOpcode_1A_1T_0R (
    484     ACPI_WALK_STATE         *WalkState);
    485 
    486 /*
    487  * exoparg2 - ACPI AML execution, 2 operands
    488  */
    489 ACPI_STATUS
    490 AcpiExOpcode_2A_0T_0R (
    491     ACPI_WALK_STATE         *WalkState);
    492 
    493 ACPI_STATUS
    494 AcpiExOpcode_2A_0T_1R (
    495     ACPI_WALK_STATE         *WalkState);
    496 
    497 ACPI_STATUS
    498 AcpiExOpcode_2A_1T_1R (
    499     ACPI_WALK_STATE         *WalkState);
    500 
    501 ACPI_STATUS
    502 AcpiExOpcode_2A_2T_1R (
    503     ACPI_WALK_STATE         *WalkState);
    504 
    505 
    506 /*
    507  * exoparg3 - ACPI AML execution, 3 operands
    508  */
    509 ACPI_STATUS
    510 AcpiExOpcode_3A_0T_0R (
    511     ACPI_WALK_STATE         *WalkState);
    512 
    513 ACPI_STATUS
    514 AcpiExOpcode_3A_1T_1R (
    515     ACPI_WALK_STATE         *WalkState);
    516 
    517 
    518 /*
    519  * exoparg6 - ACPI AML execution, 6 operands
    520  */
    521 ACPI_STATUS
    522 AcpiExOpcode_6A_0T_1R (
    523     ACPI_WALK_STATE         *WalkState);
    524 
    525 
    526 /*
    527  * exresolv - Object resolution and get value functions
    528  */
    529 ACPI_STATUS
    530 AcpiExResolveToValue (
    531     ACPI_OPERAND_OBJECT     **StackPtr,
    532     ACPI_WALK_STATE         *WalkState);
    533 
    534 ACPI_STATUS
    535 AcpiExResolveMultiple (
    536     ACPI_WALK_STATE         *WalkState,
    537     ACPI_OPERAND_OBJECT     *Operand,
    538     ACPI_OBJECT_TYPE        *ReturnType,
    539     ACPI_OPERAND_OBJECT     **ReturnDesc);
    540 
    541 
    542 /*
    543  * exresnte - resolve namespace node
    544  */
    545 ACPI_STATUS
    546 AcpiExResolveNodeToValue (
    547     ACPI_NAMESPACE_NODE     **StackPtr,
    548     ACPI_WALK_STATE         *WalkState);
    549 
    550 
    551 /*
    552  * exresop - resolve operand to value
    553  */
    554 ACPI_STATUS
    555 AcpiExResolveOperands (
    556     UINT16                  Opcode,
    557     ACPI_OPERAND_OBJECT     **StackPtr,
    558     ACPI_WALK_STATE         *WalkState);
    559 
    560 
    561 /*
    562  * exdump - Interpreter debug output routines
    563  */
    564 void
    565 AcpiExDumpOperand (
    566     ACPI_OPERAND_OBJECT     *ObjDesc,
    567     UINT32                  Depth);
    568 
    569 void
    570 AcpiExDumpOperands (
    571     ACPI_OPERAND_OBJECT     **Operands,
    572     const char              *OpcodeName,
    573     UINT32                  NumOpcodes);
    574 
    575 void
    576 AcpiExDumpObjectDescriptor (
    577     ACPI_OPERAND_OBJECT     *Object,
    578     UINT32                  Flags);
    579 
    580 void
    581 AcpiExDumpNamespaceNode (
    582     ACPI_NAMESPACE_NODE     *Node,
    583     UINT32                  Flags);
    584 
    585 
    586 /*
    587  * exnames - AML namestring support
    588  */
    589 ACPI_STATUS
    590 AcpiExGetNameString (
    591     ACPI_OBJECT_TYPE        DataType,
    592     UINT8                   *InAmlAddress,
    593     char                    **OutNameString,
    594     UINT32                  *OutNameLength);
    595 
    596 
    597 /*
    598  * exstore - Object store support
    599  */
    600 ACPI_STATUS
    601 AcpiExStore (
    602     ACPI_OPERAND_OBJECT     *ValDesc,
    603     ACPI_OPERAND_OBJECT     *DestDesc,
    604     ACPI_WALK_STATE         *WalkState);
    605 
    606 ACPI_STATUS
    607 AcpiExStoreObjectToNode (
    608     ACPI_OPERAND_OBJECT     *SourceDesc,
    609     ACPI_NAMESPACE_NODE     *Node,
    610     ACPI_WALK_STATE         *WalkState,
    611     UINT8                   ImplicitConversion);
    612 
    613 
    614 /*
    615  * exstoren - resolve/store object
    616  */
    617 ACPI_STATUS
    618 AcpiExResolveObject (
    619     ACPI_OPERAND_OBJECT     **SourceDescPtr,
    620     ACPI_OBJECT_TYPE        TargetType,
    621     ACPI_WALK_STATE         *WalkState);
    622 
    623 ACPI_STATUS
    624 AcpiExStoreObjectToObject (
    625     ACPI_OPERAND_OBJECT     *SourceDesc,
    626     ACPI_OPERAND_OBJECT     *DestDesc,
    627     ACPI_OPERAND_OBJECT     **NewDesc,
    628     ACPI_WALK_STATE         *WalkState);
    629 
    630 
    631 /*
    632  * exstorob - store object - buffer/string
    633  */
    634 ACPI_STATUS
    635 AcpiExStoreBufferToBuffer (
    636     ACPI_OPERAND_OBJECT     *SourceDesc,
    637     ACPI_OPERAND_OBJECT     *TargetDesc);
    638 
    639 ACPI_STATUS
    640 AcpiExStoreStringToString (
    641     ACPI_OPERAND_OBJECT     *SourceDesc,
    642     ACPI_OPERAND_OBJECT     *TargetDesc);
    643 
    644 
    645 /*
    646  * excopy - object copy
    647  */
    648 ACPI_STATUS
    649 AcpiExCopyIntegerToIndexField (
    650     ACPI_OPERAND_OBJECT     *SourceDesc,
    651     ACPI_OPERAND_OBJECT     *TargetDesc);
    652 
    653 ACPI_STATUS
    654 AcpiExCopyIntegerToBankField (
    655     ACPI_OPERAND_OBJECT     *SourceDesc,
    656     ACPI_OPERAND_OBJECT     *TargetDesc);
    657 
    658 ACPI_STATUS
    659 AcpiExCopyDataToNamedField (
    660     ACPI_OPERAND_OBJECT     *SourceDesc,
    661     ACPI_NAMESPACE_NODE     *Node);
    662 
    663 ACPI_STATUS
    664 AcpiExCopyIntegerToBufferField (
    665     ACPI_OPERAND_OBJECT     *SourceDesc,
    666     ACPI_OPERAND_OBJECT     *TargetDesc);
    667 
    668 
    669 /*
    670  * exutils - interpreter/scanner utilities
    671  */
    672 void
    673 AcpiExEnterInterpreter (
    674     void);
    675 
    676 void
    677 AcpiExExitInterpreter (
    678     void);
    679 
    680 BOOLEAN
    681 AcpiExTruncateFor32bitTable (
    682     ACPI_OPERAND_OBJECT     *ObjDesc);
    683 
    684 void
    685 AcpiExAcquireGlobalLock (
    686     UINT32                  Rule);
    687 
    688 void
    689 AcpiExReleaseGlobalLock (
    690     UINT32                  Rule);
    691 
    692 void
    693 AcpiExEisaIdToString (
    694     char                    *Dest,
    695     UINT64                  CompressedId);
    696 
    697 void
    698 AcpiExIntegerToString (
    699     char                    *Dest,
    700     UINT64                  Value);
    701 
    702 void
    703 AcpiExPciClsToString (
    704     char                    *Dest,
    705     UINT8                   ClassCode[3]);
    706 
    707 BOOLEAN
    708 AcpiIsValidSpaceId (
    709     UINT8                   SpaceId);
    710 
    711 
    712 /*
    713  * exregion - default OpRegion handlers
    714  */
    715 ACPI_STATUS
    716 AcpiExSystemMemorySpaceHandler (
    717     UINT32                  Function,
    718     ACPI_PHYSICAL_ADDRESS   Address,
    719     UINT32                  BitWidth,
    720     UINT64                  *Value,
    721     void                    *HandlerContext,
    722     void                    *RegionContext);
    723 
    724 ACPI_STATUS
    725 AcpiExSystemIoSpaceHandler (
    726     UINT32                  Function,
    727     ACPI_PHYSICAL_ADDRESS   Address,
    728     UINT32                  BitWidth,
    729     UINT64                  *Value,
    730     void                    *HandlerContext,
    731     void                    *RegionContext);
    732 
    733 ACPI_STATUS
    734 AcpiExPciConfigSpaceHandler (
    735     UINT32                  Function,
    736     ACPI_PHYSICAL_ADDRESS   Address,
    737     UINT32                  BitWidth,
    738     UINT64                  *Value,
    739     void                    *HandlerContext,
    740     void                    *RegionContext);
    741 
    742 ACPI_STATUS
    743 AcpiExCmosSpaceHandler (
    744     UINT32                  Function,
    745     ACPI_PHYSICAL_ADDRESS   Address,
    746     UINT32                  BitWidth,
    747     UINT64                  *Value,
    748     void                    *HandlerContext,
    749     void                    *RegionContext);
    750 
    751 ACPI_STATUS
    752 AcpiExPciBarSpaceHandler (
    753     UINT32                  Function,
    754     ACPI_PHYSICAL_ADDRESS   Address,
    755     UINT32                  BitWidth,
    756     UINT64                  *Value,
    757     void                    *HandlerContext,
    758     void                    *RegionContext);
    759 
    760 ACPI_STATUS
    761 AcpiExEmbeddedControllerSpaceHandler (
    762     UINT32                  Function,
    763     ACPI_PHYSICAL_ADDRESS   Address,
    764     UINT32                  BitWidth,
    765     UINT64                  *Value,
    766     void                    *HandlerContext,
    767     void                    *RegionContext);
    768 
    769 ACPI_STATUS
    770 AcpiExSmBusSpaceHandler (
    771     UINT32                  Function,
    772     ACPI_PHYSICAL_ADDRESS   Address,
    773     UINT32                  BitWidth,
    774     UINT64                  *Value,
    775     void                    *HandlerContext,
    776     void                    *RegionContext);
    777 
    778 
    779 ACPI_STATUS
    780 AcpiExDataTableSpaceHandler (
    781     UINT32                  Function,
    782     ACPI_PHYSICAL_ADDRESS   Address,
    783     UINT32                  BitWidth,
    784     UINT64                  *Value,
    785     void                    *HandlerContext,
    786     void                    *RegionContext);
    787 
    788 #endif /* __INTERP_H__ */
    789