Subversion Repositories Kolibri OS

Rev

Rev 1498 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /******************************************************************************
  2.  *
  3.  * Name: acinterp.h - Interpreter subcomponent prototypes and defines
  4.  *
  5.  *****************************************************************************/
  6.  
  7. /******************************************************************************
  8.  *
  9.  * 1. Copyright Notice
  10.  *
  11.  * Some or all of this work - Copyright (c) 1999 - 2011, Intel Corp.
  12.  * All rights reserved.
  13.  *
  14.  * 2. License
  15.  *
  16.  * 2.1. This is your license from Intel Corp. under its intellectual property
  17.  * rights.  You may have additional license terms from the party that provided
  18.  * you this software, covering your right to use that party's intellectual
  19.  * property rights.
  20.  *
  21.  * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
  22.  * copy of the source code appearing in this file ("Covered Code") an
  23.  * irrevocable, perpetual, worldwide license under Intel's copyrights in the
  24.  * base code distributed originally by Intel ("Original Intel Code") to copy,
  25.  * make derivatives, distribute, use and display any portion of the Covered
  26.  * Code in any form, with the right to sublicense such rights; and
  27.  *
  28.  * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
  29.  * license (with the right to sublicense), under only those claims of Intel
  30.  * patents that are infringed by the Original Intel Code, to make, use, sell,
  31.  * offer to sell, and import the Covered Code and derivative works thereof
  32.  * solely to the minimum extent necessary to exercise the above copyright
  33.  * license, and in no event shall the patent license extend to any additions
  34.  * to or modifications of the Original Intel Code.  No other license or right
  35.  * is granted directly or by implication, estoppel or otherwise;
  36.  *
  37.  * The above copyright and patent license is granted only if the following
  38.  * conditions are met:
  39.  *
  40.  * 3. Conditions
  41.  *
  42.  * 3.1. Redistribution of Source with Rights to Further Distribute Source.
  43.  * Redistribution of source code of any substantial portion of the Covered
  44.  * Code or modification with rights to further distribute source must include
  45.  * the above Copyright Notice, the above License, this list of Conditions,
  46.  * and the following Disclaimer and Export Compliance provision.  In addition,
  47.  * Licensee must cause all Covered Code to which Licensee contributes to
  48.  * contain a file documenting the changes Licensee made to create that Covered
  49.  * Code and the date of any change.  Licensee must include in that file the
  50.  * documentation of any changes made by any predecessor Licensee.  Licensee
  51.  * must include a prominent statement that the modification is derived,
  52.  * directly or indirectly, from Original Intel Code.
  53.  *
  54.  * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
  55.  * Redistribution of source code of any substantial portion of the Covered
  56.  * Code or modification without rights to further distribute source must
  57.  * include the following Disclaimer and Export Compliance provision in the
  58.  * documentation and/or other materials provided with distribution.  In
  59.  * addition, Licensee may not authorize further sublicense of source of any
  60.  * portion of the Covered Code, and must include terms to the effect that the
  61.  * license from Licensee to its licensee is limited to the intellectual
  62.  * property embodied in the software Licensee provides to its licensee, and
  63.  * not to intellectual property embodied in modifications its licensee may
  64.  * make.
  65.  *
  66.  * 3.3. Redistribution of Executable. Redistribution in executable form of any
  67.  * substantial portion of the Covered Code or modification must reproduce the
  68.  * above Copyright Notice, and the following Disclaimer and Export Compliance
  69.  * provision in the documentation and/or other materials provided with the
  70.  * distribution.
  71.  *
  72.  * 3.4. Intel retains all right, title, and interest in and to the Original
  73.  * Intel Code.
  74.  *
  75.  * 3.5. Neither the name Intel nor any other trademark owned or controlled by
  76.  * Intel shall be used in advertising or otherwise to promote the sale, use or
  77.  * other dealings in products derived from or relating to the Covered Code
  78.  * without prior written authorization from Intel.
  79.  *
  80.  * 4. Disclaimer and Export Compliance
  81.  *
  82.  * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
  83.  * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
  84.  * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
  85.  * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
  86.  * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
  87.  * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
  88.  * PARTICULAR PURPOSE.
  89.  *
  90.  * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
  91.  * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
  92.  * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
  93.  * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
  94.  * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
  95.  * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
  96.  * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
  97.  * LIMITED REMEDY.
  98.  *
  99.  * 4.3. Licensee shall not export, either directly or indirectly, any of this
  100.  * software or system incorporating such software without first obtaining any
  101.  * required license or other approval from the U. S. Department of Commerce or
  102.  * any other agency or department of the United States Government.  In the
  103.  * event Licensee exports any such software from the United States or
  104.  * re-exports any such software from a foreign destination, Licensee shall
  105.  * ensure that the distribution and export/re-export of the software is in
  106.  * compliance with all laws, regulations, orders, or other restrictions of the
  107.  * U.S. Export Administration Regulations. Licensee agrees that neither it nor
  108.  * any of its subsidiaries will export/re-export any technical data, process,
  109.  * software, or service, directly or indirectly, to any country for which the
  110.  * United States government or any agency thereof requires an export license,
  111.  * other governmental approval, or letter of assurance, without first obtaining
  112.  * such license, approval or letter.
  113.  *
  114.  *****************************************************************************/
  115.  
  116. #ifndef __ACINTERP_H__
  117. #define __ACINTERP_H__
  118.  
  119.  
  120. #define ACPI_WALK_OPERANDS          (&(WalkState->Operands [WalkState->NumOperands -1]))
  121.  
  122. /* Macros for tables used for debug output */
  123.  
  124. #define ACPI_EXD_OFFSET(f)          (UINT8) ACPI_OFFSET (ACPI_OPERAND_OBJECT,f)
  125. #define ACPI_EXD_NSOFFSET(f)        (UINT8) ACPI_OFFSET (ACPI_NAMESPACE_NODE,f)
  126. #define ACPI_EXD_TABLE_SIZE(name)   (sizeof(name) / sizeof (ACPI_EXDUMP_INFO))
  127.  
  128. /*
  129.  * If possible, pack the following structures to byte alignment, since we
  130.  * don't care about performance for debug output. Two cases where we cannot
  131.  * pack the structures:
  132.  *
  133.  * 1) Hardware does not support misaligned memory transfers
  134.  * 2) Compiler does not support pointers within packed structures
  135.  */
  136. #if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED))
  137. #pragma pack(1)
  138. #endif
  139.  
  140. typedef const struct acpi_exdump_info
  141. {
  142.     UINT8                   Opcode;
  143.     UINT8                   Offset;
  144.     char                    *Name;
  145.  
  146. } ACPI_EXDUMP_INFO;
  147.  
  148. /* Values for the Opcode field above */
  149.  
  150. #define ACPI_EXD_INIT                   0
  151. #define ACPI_EXD_TYPE                   1
  152. #define ACPI_EXD_UINT8                  2
  153. #define ACPI_EXD_UINT16                 3
  154. #define ACPI_EXD_UINT32                 4
  155. #define ACPI_EXD_UINT64                 5
  156. #define ACPI_EXD_LITERAL                6
  157. #define ACPI_EXD_POINTER                7
  158. #define ACPI_EXD_ADDRESS                8
  159. #define ACPI_EXD_STRING                 9
  160. #define ACPI_EXD_BUFFER                 10
  161. #define ACPI_EXD_PACKAGE                11
  162. #define ACPI_EXD_FIELD                  12
  163. #define ACPI_EXD_REFERENCE              13
  164.  
  165. /* restore default alignment */
  166.  
  167. #pragma pack()
  168.  
  169.  
  170. /*
  171.  * exconvrt - object conversion
  172.  */
  173. ACPI_STATUS
  174. AcpiExConvertToInteger (
  175.     ACPI_OPERAND_OBJECT     *ObjDesc,
  176.     ACPI_OPERAND_OBJECT     **ResultDesc,
  177.     UINT32                  Flags);
  178.  
  179. ACPI_STATUS
  180. AcpiExConvertToBuffer (
  181.     ACPI_OPERAND_OBJECT     *ObjDesc,
  182.     ACPI_OPERAND_OBJECT     **ResultDesc);
  183.  
  184. ACPI_STATUS
  185. AcpiExConvertToString (
  186.     ACPI_OPERAND_OBJECT     *ObjDesc,
  187.     ACPI_OPERAND_OBJECT     **ResultDesc,
  188.     UINT32                  Type);
  189.  
  190. /* Types for ->String conversion */
  191.  
  192. #define ACPI_EXPLICIT_BYTE_COPY         0x00000000
  193. #define ACPI_EXPLICIT_CONVERT_HEX       0x00000001
  194. #define ACPI_IMPLICIT_CONVERT_HEX       0x00000002
  195. #define ACPI_EXPLICIT_CONVERT_DECIMAL   0x00000003
  196.  
  197. ACPI_STATUS
  198. AcpiExConvertToTargetType (
  199.     ACPI_OBJECT_TYPE        DestinationType,
  200.     ACPI_OPERAND_OBJECT     *SourceDesc,
  201.     ACPI_OPERAND_OBJECT     **ResultDesc,
  202.     ACPI_WALK_STATE         *WalkState);
  203.  
  204.  
  205. /*
  206.  * exdebug - AML debug object
  207.  */
  208. void
  209. AcpiExDoDebugObject (
  210.     ACPI_OPERAND_OBJECT     *SourceDesc,
  211.     UINT32                  Level,
  212.     UINT32                  Index);
  213.  
  214.  
  215. /*
  216.  * exfield - ACPI AML (p-code) execution - field manipulation
  217.  */
  218. ACPI_STATUS
  219. AcpiExCommonBufferSetup (
  220.     ACPI_OPERAND_OBJECT     *ObjDesc,
  221.     UINT32                  BufferLength,
  222.     UINT32                  *DatumCount);
  223.  
  224. ACPI_STATUS
  225. AcpiExWriteWithUpdateRule (
  226.     ACPI_OPERAND_OBJECT     *ObjDesc,
  227.     UINT64                  Mask,
  228.     UINT64                  FieldValue,
  229.     UINT32                  FieldDatumByteOffset);
  230.  
  231. void
  232. AcpiExGetBufferDatum(
  233.     UINT64                  *Datum,
  234.     void                    *Buffer,
  235.     UINT32                  BufferLength,
  236.     UINT32                  ByteGranularity,
  237.     UINT32                  BufferOffset);
  238.  
  239. void
  240. AcpiExSetBufferDatum (
  241.     UINT64                  MergedDatum,
  242.     void                    *Buffer,
  243.     UINT32                  BufferLength,
  244.     UINT32                  ByteGranularity,
  245.     UINT32                  BufferOffset);
  246.  
  247. ACPI_STATUS
  248. AcpiExReadDataFromField (
  249.     ACPI_WALK_STATE         *WalkState,
  250.     ACPI_OPERAND_OBJECT     *ObjDesc,
  251.     ACPI_OPERAND_OBJECT     **RetBufferDesc);
  252.  
  253. ACPI_STATUS
  254. AcpiExWriteDataToField (
  255.     ACPI_OPERAND_OBJECT     *SourceDesc,
  256.     ACPI_OPERAND_OBJECT     *ObjDesc,
  257.     ACPI_OPERAND_OBJECT     **ResultDesc);
  258.  
  259.  
  260. /*
  261.  * exfldio - low level field I/O
  262.  */
  263. ACPI_STATUS
  264. AcpiExExtractFromField (
  265.     ACPI_OPERAND_OBJECT     *ObjDesc,
  266.     void                    *Buffer,
  267.     UINT32                  BufferLength);
  268.  
  269. ACPI_STATUS
  270. AcpiExInsertIntoField (
  271.     ACPI_OPERAND_OBJECT     *ObjDesc,
  272.     void                    *Buffer,
  273.     UINT32                  BufferLength);
  274.  
  275. ACPI_STATUS
  276. AcpiExAccessRegion (
  277.     ACPI_OPERAND_OBJECT     *ObjDesc,
  278.     UINT32                  FieldDatumByteOffset,
  279.     UINT64                  *Value,
  280.     UINT32                  ReadWrite);
  281.  
  282.  
  283. /*
  284.  * exmisc - misc support routines
  285.  */
  286. ACPI_STATUS
  287. AcpiExGetObjectReference (
  288.     ACPI_OPERAND_OBJECT     *ObjDesc,
  289.     ACPI_OPERAND_OBJECT     **ReturnDesc,
  290.     ACPI_WALK_STATE         *WalkState);
  291.  
  292. ACPI_STATUS
  293. AcpiExConcatTemplate (
  294.     ACPI_OPERAND_OBJECT     *ObjDesc,
  295.     ACPI_OPERAND_OBJECT     *ObjDesc2,
  296.     ACPI_OPERAND_OBJECT     **ActualReturnDesc,
  297.     ACPI_WALK_STATE         *WalkState);
  298.  
  299. ACPI_STATUS
  300. AcpiExDoConcatenate (
  301.     ACPI_OPERAND_OBJECT     *ObjDesc,
  302.     ACPI_OPERAND_OBJECT     *ObjDesc2,
  303.     ACPI_OPERAND_OBJECT     **ActualReturnDesc,
  304.     ACPI_WALK_STATE         *WalkState);
  305.  
  306. ACPI_STATUS
  307. AcpiExDoLogicalNumericOp (
  308.     UINT16                  Opcode,
  309.     UINT64                  Integer0,
  310.     UINT64                  Integer1,
  311.     BOOLEAN                 *LogicalResult);
  312.  
  313. ACPI_STATUS
  314. AcpiExDoLogicalOp (
  315.     UINT16                  Opcode,
  316.     ACPI_OPERAND_OBJECT     *Operand0,
  317.     ACPI_OPERAND_OBJECT     *Operand1,
  318.     BOOLEAN                 *LogicalResult);
  319.  
  320. UINT64
  321. AcpiExDoMathOp (
  322.     UINT16                  Opcode,
  323.     UINT64                  Operand0,
  324.     UINT64                  Operand1);
  325.  
  326. ACPI_STATUS
  327. AcpiExCreateMutex (
  328.     ACPI_WALK_STATE         *WalkState);
  329.  
  330. ACPI_STATUS
  331. AcpiExCreateProcessor (
  332.     ACPI_WALK_STATE         *WalkState);
  333.  
  334. ACPI_STATUS
  335. AcpiExCreatePowerResource (
  336.     ACPI_WALK_STATE         *WalkState);
  337.  
  338. ACPI_STATUS
  339. AcpiExCreateRegion (
  340.     UINT8                   *AmlStart,
  341.     UINT32                  AmlLength,
  342.     UINT8                   RegionSpace,
  343.     ACPI_WALK_STATE         *WalkState);
  344.  
  345. ACPI_STATUS
  346. AcpiExCreateEvent (
  347.     ACPI_WALK_STATE         *WalkState);
  348.  
  349. ACPI_STATUS
  350. AcpiExCreateAlias (
  351.     ACPI_WALK_STATE         *WalkState);
  352.  
  353. ACPI_STATUS
  354. AcpiExCreateMethod (
  355.     UINT8                   *AmlStart,
  356.     UINT32                  AmlLength,
  357.     ACPI_WALK_STATE         *WalkState);
  358.  
  359.  
  360. /*
  361.  * exconfig - dynamic table load/unload
  362.  */
  363. ACPI_STATUS
  364. AcpiExLoadOp (
  365.     ACPI_OPERAND_OBJECT     *ObjDesc,
  366.     ACPI_OPERAND_OBJECT     *Target,
  367.     ACPI_WALK_STATE         *WalkState);
  368.  
  369. ACPI_STATUS
  370. AcpiExLoadTableOp (
  371.     ACPI_WALK_STATE         *WalkState,
  372.     ACPI_OPERAND_OBJECT     **ReturnDesc);
  373.  
  374. ACPI_STATUS
  375. AcpiExUnloadTable (
  376.     ACPI_OPERAND_OBJECT     *DdbHandle);
  377.  
  378.  
  379. /*
  380.  * exmutex - mutex support
  381.  */
  382. ACPI_STATUS
  383. AcpiExAcquireMutex (
  384.     ACPI_OPERAND_OBJECT     *TimeDesc,
  385.     ACPI_OPERAND_OBJECT     *ObjDesc,
  386.     ACPI_WALK_STATE         *WalkState);
  387.  
  388. ACPI_STATUS
  389. AcpiExAcquireMutexObject (
  390.     UINT16                  Timeout,
  391.     ACPI_OPERAND_OBJECT     *ObjDesc,
  392.     ACPI_THREAD_ID          ThreadId);
  393.  
  394. ACPI_STATUS
  395. AcpiExReleaseMutex (
  396.     ACPI_OPERAND_OBJECT     *ObjDesc,
  397.     ACPI_WALK_STATE         *WalkState);
  398.  
  399. ACPI_STATUS
  400. AcpiExReleaseMutexObject (
  401.     ACPI_OPERAND_OBJECT     *ObjDesc);
  402.  
  403. void
  404. AcpiExReleaseAllMutexes (
  405.     ACPI_THREAD_STATE       *Thread);
  406.  
  407. void
  408. AcpiExUnlinkMutex (
  409.     ACPI_OPERAND_OBJECT     *ObjDesc);
  410.  
  411.  
  412. /*
  413.  * exprep - ACPI AML execution - prep utilities
  414.  */
  415. ACPI_STATUS
  416. AcpiExPrepCommonFieldObject (
  417.     ACPI_OPERAND_OBJECT     *ObjDesc,
  418.     UINT8                   FieldFlags,
  419.     UINT8                   FieldAttribute,
  420.     UINT32                  FieldBitPosition,
  421.     UINT32                  FieldBitLength);
  422.  
  423. ACPI_STATUS
  424. AcpiExPrepFieldValue (
  425.     ACPI_CREATE_FIELD_INFO  *Info);
  426.  
  427.  
  428. /*
  429.  * exsystem - Interface to OS services
  430.  */
  431. ACPI_STATUS
  432. AcpiExSystemDoNotifyOp (
  433.     ACPI_OPERAND_OBJECT     *Value,
  434.     ACPI_OPERAND_OBJECT     *ObjDesc);
  435.  
  436. ACPI_STATUS
  437. AcpiExSystemDoSleep(
  438.     UINT64                  Time);
  439.  
  440. ACPI_STATUS
  441. AcpiExSystemDoStall (
  442.     UINT32                  Time);
  443.  
  444. ACPI_STATUS
  445. AcpiExSystemSignalEvent(
  446.     ACPI_OPERAND_OBJECT     *ObjDesc);
  447.  
  448. ACPI_STATUS
  449. AcpiExSystemWaitEvent(
  450.     ACPI_OPERAND_OBJECT     *Time,
  451.     ACPI_OPERAND_OBJECT     *ObjDesc);
  452.  
  453. ACPI_STATUS
  454. AcpiExSystemResetEvent(
  455.     ACPI_OPERAND_OBJECT     *ObjDesc);
  456.  
  457. ACPI_STATUS
  458. AcpiExSystemWaitSemaphore (
  459.     ACPI_SEMAPHORE          Semaphore,
  460.     UINT16                  Timeout);
  461.  
  462. ACPI_STATUS
  463. AcpiExSystemWaitMutex (
  464.     ACPI_MUTEX              Mutex,
  465.     UINT16                  Timeout);
  466.  
  467. /*
  468.  * exoparg1 - ACPI AML execution, 1 operand
  469.  */
  470. ACPI_STATUS
  471. AcpiExOpcode_0A_0T_1R (
  472.     ACPI_WALK_STATE         *WalkState);
  473.  
  474. ACPI_STATUS
  475. AcpiExOpcode_1A_0T_0R (
  476.     ACPI_WALK_STATE         *WalkState);
  477.  
  478. ACPI_STATUS
  479. AcpiExOpcode_1A_0T_1R (
  480.     ACPI_WALK_STATE         *WalkState);
  481.  
  482. ACPI_STATUS
  483. AcpiExOpcode_1A_1T_1R (
  484.     ACPI_WALK_STATE         *WalkState);
  485.  
  486. ACPI_STATUS
  487. AcpiExOpcode_1A_1T_0R (
  488.     ACPI_WALK_STATE         *WalkState);
  489.  
  490. /*
  491.  * exoparg2 - ACPI AML execution, 2 operands
  492.  */
  493. ACPI_STATUS
  494. AcpiExOpcode_2A_0T_0R (
  495.     ACPI_WALK_STATE         *WalkState);
  496.  
  497. ACPI_STATUS
  498. AcpiExOpcode_2A_0T_1R (
  499.     ACPI_WALK_STATE         *WalkState);
  500.  
  501. ACPI_STATUS
  502. AcpiExOpcode_2A_1T_1R (
  503.     ACPI_WALK_STATE         *WalkState);
  504.  
  505. ACPI_STATUS
  506. AcpiExOpcode_2A_2T_1R (
  507.     ACPI_WALK_STATE         *WalkState);
  508.  
  509.  
  510. /*
  511.  * exoparg3 - ACPI AML execution, 3 operands
  512.  */
  513. ACPI_STATUS
  514. AcpiExOpcode_3A_0T_0R (
  515.     ACPI_WALK_STATE         *WalkState);
  516.  
  517. ACPI_STATUS
  518. AcpiExOpcode_3A_1T_1R (
  519.     ACPI_WALK_STATE         *WalkState);
  520.  
  521.  
  522. /*
  523.  * exoparg6 - ACPI AML execution, 6 operands
  524.  */
  525. ACPI_STATUS
  526. AcpiExOpcode_6A_0T_1R (
  527.     ACPI_WALK_STATE         *WalkState);
  528.  
  529.  
  530. /*
  531.  * exresolv - Object resolution and get value functions
  532.  */
  533. ACPI_STATUS
  534. AcpiExResolveToValue (
  535.     ACPI_OPERAND_OBJECT     **StackPtr,
  536.     ACPI_WALK_STATE         *WalkState);
  537.  
  538. ACPI_STATUS
  539. AcpiExResolveMultiple (
  540.     ACPI_WALK_STATE         *WalkState,
  541.     ACPI_OPERAND_OBJECT     *Operand,
  542.     ACPI_OBJECT_TYPE        *ReturnType,
  543.     ACPI_OPERAND_OBJECT     **ReturnDesc);
  544.  
  545.  
  546. /*
  547.  * exresnte - resolve namespace node
  548.  */
  549. ACPI_STATUS
  550. AcpiExResolveNodeToValue (
  551.     ACPI_NAMESPACE_NODE     **StackPtr,
  552.     ACPI_WALK_STATE         *WalkState);
  553.  
  554.  
  555. /*
  556.  * exresop - resolve operand to value
  557.  */
  558. ACPI_STATUS
  559. AcpiExResolveOperands (
  560.     UINT16                  Opcode,
  561.     ACPI_OPERAND_OBJECT     **StackPtr,
  562.     ACPI_WALK_STATE         *WalkState);
  563.  
  564.  
  565. /*
  566.  * exdump - Interpreter debug output routines
  567.  */
  568. void
  569. AcpiExDumpOperand (
  570.     ACPI_OPERAND_OBJECT     *ObjDesc,
  571.     UINT32                  Depth);
  572.  
  573. void
  574. AcpiExDumpOperands (
  575.     ACPI_OPERAND_OBJECT     **Operands,
  576.     const char              *OpcodeName,
  577.     UINT32                  NumOpcodes);
  578.  
  579. void
  580. AcpiExDumpObjectDescriptor (
  581.     ACPI_OPERAND_OBJECT     *Object,
  582.     UINT32                  Flags);
  583.  
  584. void
  585. AcpiExDumpNamespaceNode (
  586.     ACPI_NAMESPACE_NODE     *Node,
  587.     UINT32                  Flags);
  588.  
  589.  
  590. /*
  591.  * exnames - AML namestring support
  592.  */
  593. ACPI_STATUS
  594. AcpiExGetNameString (
  595.     ACPI_OBJECT_TYPE        DataType,
  596.     UINT8                   *InAmlAddress,
  597.     char                    **OutNameString,
  598.     UINT32                  *OutNameLength);
  599.  
  600.  
  601. /*
  602.  * exstore - Object store support
  603.  */
  604. ACPI_STATUS
  605. AcpiExStore (
  606.     ACPI_OPERAND_OBJECT     *ValDesc,
  607.     ACPI_OPERAND_OBJECT     *DestDesc,
  608.     ACPI_WALK_STATE         *WalkState);
  609.  
  610. ACPI_STATUS
  611. AcpiExStoreObjectToNode (
  612.     ACPI_OPERAND_OBJECT     *SourceDesc,
  613.     ACPI_NAMESPACE_NODE     *Node,
  614.     ACPI_WALK_STATE         *WalkState,
  615.     UINT8                   ImplicitConversion);
  616.  
  617. #define ACPI_IMPLICIT_CONVERSION        TRUE
  618. #define ACPI_NO_IMPLICIT_CONVERSION     FALSE
  619.  
  620.  
  621. /*
  622.  * exstoren - resolve/store object
  623.  */
  624. ACPI_STATUS
  625. AcpiExResolveObject (
  626.     ACPI_OPERAND_OBJECT     **SourceDescPtr,
  627.     ACPI_OBJECT_TYPE        TargetType,
  628.     ACPI_WALK_STATE         *WalkState);
  629.  
  630. ACPI_STATUS
  631. AcpiExStoreObjectToObject (
  632.     ACPI_OPERAND_OBJECT     *SourceDesc,
  633.     ACPI_OPERAND_OBJECT     *DestDesc,
  634.     ACPI_OPERAND_OBJECT     **NewDesc,
  635.     ACPI_WALK_STATE         *WalkState);
  636.  
  637.  
  638. /*
  639.  * exstorob - store object - buffer/string
  640.  */
  641. ACPI_STATUS
  642. AcpiExStoreBufferToBuffer (
  643.     ACPI_OPERAND_OBJECT     *SourceDesc,
  644.     ACPI_OPERAND_OBJECT     *TargetDesc);
  645.  
  646. ACPI_STATUS
  647. AcpiExStoreStringToString (
  648.     ACPI_OPERAND_OBJECT     *SourceDesc,
  649.     ACPI_OPERAND_OBJECT     *TargetDesc);
  650.  
  651.  
  652. /*
  653.  * excopy - object copy
  654.  */
  655. ACPI_STATUS
  656. AcpiExCopyIntegerToIndexField (
  657.     ACPI_OPERAND_OBJECT     *SourceDesc,
  658.     ACPI_OPERAND_OBJECT     *TargetDesc);
  659.  
  660. ACPI_STATUS
  661. AcpiExCopyIntegerToBankField (
  662.     ACPI_OPERAND_OBJECT     *SourceDesc,
  663.     ACPI_OPERAND_OBJECT     *TargetDesc);
  664.  
  665. ACPI_STATUS
  666. AcpiExCopyDataToNamedField (
  667.     ACPI_OPERAND_OBJECT     *SourceDesc,
  668.     ACPI_NAMESPACE_NODE     *Node);
  669.  
  670. ACPI_STATUS
  671. AcpiExCopyIntegerToBufferField (
  672.     ACPI_OPERAND_OBJECT     *SourceDesc,
  673.     ACPI_OPERAND_OBJECT     *TargetDesc);
  674.  
  675.  
  676. /*
  677.  * exutils - interpreter/scanner utilities
  678.  */
  679. void
  680. AcpiExEnterInterpreter (
  681.     void);
  682.  
  683. void
  684. AcpiExExitInterpreter (
  685.     void);
  686.  
  687. void
  688. AcpiExReacquireInterpreter (
  689.     void);
  690.  
  691. void
  692. AcpiExRelinquishInterpreter (
  693.     void);
  694.  
  695. void
  696. AcpiExTruncateFor32bitTable (
  697.     ACPI_OPERAND_OBJECT     *ObjDesc);
  698.  
  699. void
  700. AcpiExAcquireGlobalLock (
  701.     UINT32                  Rule);
  702.  
  703. void
  704. AcpiExReleaseGlobalLock (
  705.     UINT32                  Rule);
  706.  
  707. void
  708. AcpiExEisaIdToString (
  709.     char                    *Dest,
  710.     UINT64                  CompressedId);
  711.  
  712. void
  713. AcpiExIntegerToString (
  714.     char                    *Dest,
  715.     UINT64                  Value);
  716.  
  717.  
  718. /*
  719.  * exregion - default OpRegion handlers
  720.  */
  721. ACPI_STATUS
  722. AcpiExSystemMemorySpaceHandler (
  723.     UINT32                  Function,
  724.     ACPI_PHYSICAL_ADDRESS   Address,
  725.     UINT32                  BitWidth,
  726.     UINT64                  *Value,
  727.     void                    *HandlerContext,
  728.     void                    *RegionContext);
  729.  
  730. ACPI_STATUS
  731. AcpiExSystemIoSpaceHandler (
  732.     UINT32                  Function,
  733.     ACPI_PHYSICAL_ADDRESS   Address,
  734.     UINT32                  BitWidth,
  735.     UINT64                  *Value,
  736.     void                    *HandlerContext,
  737.     void                    *RegionContext);
  738.  
  739. ACPI_STATUS
  740. AcpiExPciConfigSpaceHandler (
  741.     UINT32                  Function,
  742.     ACPI_PHYSICAL_ADDRESS   Address,
  743.     UINT32                  BitWidth,
  744.     UINT64                  *Value,
  745.     void                    *HandlerContext,
  746.     void                    *RegionContext);
  747.  
  748. ACPI_STATUS
  749. AcpiExCmosSpaceHandler (
  750.     UINT32                  Function,
  751.     ACPI_PHYSICAL_ADDRESS   Address,
  752.     UINT32                  BitWidth,
  753.     UINT64                  *Value,
  754.     void                    *HandlerContext,
  755.     void                    *RegionContext);
  756.  
  757. ACPI_STATUS
  758. AcpiExPciBarSpaceHandler (
  759.     UINT32                  Function,
  760.     ACPI_PHYSICAL_ADDRESS   Address,
  761.     UINT32                  BitWidth,
  762.     UINT64                  *Value,
  763.     void                    *HandlerContext,
  764.     void                    *RegionContext);
  765.  
  766. ACPI_STATUS
  767. AcpiExEmbeddedControllerSpaceHandler (
  768.     UINT32                  Function,
  769.     ACPI_PHYSICAL_ADDRESS   Address,
  770.     UINT32                  BitWidth,
  771.     UINT64                  *Value,
  772.     void                    *HandlerContext,
  773.     void                    *RegionContext);
  774.  
  775. ACPI_STATUS
  776. AcpiExSmBusSpaceHandler (
  777.     UINT32                  Function,
  778.     ACPI_PHYSICAL_ADDRESS   Address,
  779.     UINT32                  BitWidth,
  780.     UINT64                  *Value,
  781.     void                    *HandlerContext,
  782.     void                    *RegionContext);
  783.  
  784.  
  785. ACPI_STATUS
  786. AcpiExDataTableSpaceHandler (
  787.     UINT32                  Function,
  788.     ACPI_PHYSICAL_ADDRESS   Address,
  789.     UINT32                  BitWidth,
  790.     UINT64                  *Value,
  791.     void                    *HandlerContext,
  792.     void                    *RegionContext);
  793.  
  794. #endif /* __INTERP_H__ */
  795.