acdispat.h revision 114237
1139825Simp/******************************************************************************
286227Stmm *
3128776Stmm * Name: acdispat.h - dispatcher (parser to interpreter interface)
4167308Smarius *       $Revision: 56 $
5128776Stmm *
686227Stmm *****************************************************************************/
786227Stmm
886227Stmm/******************************************************************************
986227Stmm *
1086227Stmm * 1. Copyright Notice
1186227Stmm *
1286227Stmm * Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp.
1386227Stmm * All rights reserved.
1486227Stmm *
1586227Stmm * 2. License
1686227Stmm *
1786227Stmm * 2.1. This is your license from Intel Corp. under its intellectual property
18128776Stmm * rights.  You may have additional license terms from the party that provided
1986227Stmm * you this software, covering your right to use that party's intellectual
2086227Stmm * property rights.
2186227Stmm *
2286227Stmm * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
2386227Stmm * copy of the source code appearing in this file ("Covered Code") an
2486227Stmm * irrevocable, perpetual, worldwide license under Intel's copyrights in the
2586227Stmm * base code distributed originally by Intel ("Original Intel Code") to copy,
2686227Stmm * make derivatives, distribute, use and display any portion of the Covered
2786227Stmm * Code in any form, with the right to sublicense such rights; and
2886227Stmm *
2986227Stmm * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent
3086227Stmm * license (with the right to sublicense), under only those claims of Intel
3186227Stmm * patents that are infringed by the Original Intel Code, to make, use, sell,
3286227Stmm * offer to sell, and import the Covered Code and derivative works thereof
3386227Stmm * solely to the minimum extent necessary to exercise the above copyright
3486227Stmm * license, and in no event shall the patent license extend to any additions
35146474Smarius * to or modifications of the Original Intel Code.  No other license or right
36146474Smarius * is granted directly or by implication, estoppel or otherwise;
37146474Smarius *
3886227Stmm * The above copyright and patent license is granted only if the following
3986227Stmm * conditions are met:
4086227Stmm *
4186227Stmm * 3. Conditions
4286227Stmm *
43130068Sphk * 3.1. Redistribution of Source with Rights to Further Distribute Source.
4486227Stmm * Redistribution of source code of any substantial portion of the Covered
45167308Smarius * Code or modification with rights to further distribute source must include
46167308Smarius * the above Copyright Notice, the above License, this list of Conditions,
4786227Stmm * and the following Disclaimer and Export Compliance provision.  In addition,
4886227Stmm * Licensee must cause all Covered Code to which Licensee contributes to
4986227Stmm * contain a file documenting the changes Licensee made to create that Covered
50167308Smarius * Code and the date of any change.  Licensee must include in that file the
5186227Stmm * documentation of any changes made by any predecessor Licensee.  Licensee
52167308Smarius * must include a prominent statement that the modification is derived,
5386227Stmm * directly or indirectly, from Original Intel Code.
54167308Smarius *
5586227Stmm * 3.2. Redistribution of Source with no Rights to Further Distribute Source.
5686227Stmm * Redistribution of source code of any substantial portion of the Covered
5786227Stmm * Code or modification without rights to further distribute source must
5886227Stmm * include the following Disclaimer and Export Compliance provision in the
5986227Stmm * documentation and/or other materials provided with distribution.  In
60133862Smarius * addition, Licensee may not authorize further sublicense of source of any
6186227Stmm * portion of the Covered Code, and must include terms to the effect that the
62128776Stmm * license from Licensee to its licensee is limited to the intellectual
6386227Stmm * property embodied in the software Licensee provides to its licensee, and
6486227Stmm * not to intellectual property embodied in modifications its licensee may
6586227Stmm * make.
6686227Stmm *
6786227Stmm * 3.3. Redistribution of Executable. Redistribution in executable form of any
68133862Smarius * substantial portion of the Covered Code or modification must reproduce the
6986227Stmm * above Copyright Notice, and the following Disclaimer and Export Compliance
7086227Stmm * provision in the documentation and/or other materials provided with the
7186227Stmm * distribution.
72167308Smarius *
73167308Smarius * 3.4. Intel retains all right, title, and interest in and to the Original
7486227Stmm * Intel Code.
7586227Stmm *
7688823Stmm * 3.5. Neither the name Intel nor any other trademark owned or controlled by
7788823Stmm * Intel shall be used in advertising or otherwise to promote the sale, use or
7888823Stmm * other dealings in products derived from or relating to the Covered Code
7988823Stmm * without prior written authorization from Intel.
8088823Stmm *
81128776Stmm * 4. Disclaimer and Export Compliance
82128776Stmm *
83167308Smarius * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
84146474Smarius * HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
85128776Stmm * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
86128776Stmm * INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
87128776Stmm * UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
88128776Stmm * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
89128776Stmm * PARTICULAR PURPOSE.
90128776Stmm *
91128776Stmm * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
92167308Smarius * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
93167308Smarius * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
94167308Smarius * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
9586227Stmm * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
96178443Smarius * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
97178443Smarius * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
98178443Smarius * LIMITED REMEDY.
99185133Smarius *
100167308Smarius * 4.3. Licensee shall not export, either directly or indirectly, any of this
101167308Smarius * software or system incorporating such software without first obtaining any
102167308Smarius * required license or other approval from the U. S. Department of Commerce or
103167308Smarius * any other agency or department of the United States Government.  In the
10486227Stmm * event Licensee exports any such software from the United States or
10586227Stmm * re-exports any such software from a foreign destination, Licensee shall
10686227Stmm * ensure that the distribution and export/re-export of the software is in
107128776Stmm * compliance with all laws, regulations, orders, or other restrictions of the
10886227Stmm * U.S. Export Administration Regulations. Licensee agrees that neither it nor
10986227Stmm * any of its subsidiaries will export/re-export any technical data, process,
11086227Stmm * software, or service, directly or indirectly, to any country for which the
11186227Stmm * United States government or any agency thereof requires an export license,
11286227Stmm * other governmental approval, or letter of assurance, without first obtaining
113167308Smarius * such license, approval or letter.
114167308Smarius *
115167308Smarius *****************************************************************************/
116167308Smarius
117167308Smarius
118146474Smarius#ifndef _ACDISPAT_H_
11986227Stmm#define _ACDISPAT_H_
12086227Stmm
12186227Stmm
12286227Stmm#define NAMEOF_LOCAL_NTE    "__L0"
123167308Smarius#define NAMEOF_ARG_NTE      "__A0"
124167308Smarius
125190099Smarius
126190099Smarius/* Common interfaces */
127190099Smarius
128178443SmariusACPI_STATUS
129178443SmariusAcpiDsObjStackPush (
130178443Smarius    void                    *Object,
131167308Smarius    ACPI_WALK_STATE         *WalkState);
13286227Stmm
133167308SmariusACPI_STATUS
134167308SmariusAcpiDsObjStackPop (
135167308Smarius    UINT32                  PopCount,
136167308Smarius    ACPI_WALK_STATE         *WalkState);
137167308Smarius
138167308Smariusvoid *
139167308SmariusAcpiDsObjStackGetValue (
140167308Smarius    UINT32                  Index,
141190099Smarius    ACPI_WALK_STATE         *WalkState);
14286227Stmm
14386227StmmACPI_STATUS
14486227StmmAcpiDsObjStackPopObject (
14586227Stmm    ACPI_OPERAND_OBJECT     **Object,
146167308Smarius    ACPI_WALK_STATE         *WalkState);
147200874Smarius
148200874Smarius
149200815Smarius/* dsopcode - support for late evaluation */
15086227Stmm
151185133SmariusACPI_STATUS
15290622StmmAcpiDsExecuteArguments (
153167308Smarius    ACPI_NAMESPACE_NODE     *Node,
15490622Stmm    ACPI_NAMESPACE_NODE     *ScopeNode,
15590622Stmm    UINT32                  AmlLength,
15686227Stmm    UINT8                   *AmlStart);
15790622Stmm
15886227StmmACPI_STATUS
15986227StmmAcpiDsGetBufferFieldArguments (
160167308Smarius    ACPI_OPERAND_OBJECT     *ObjDesc);
16190622Stmm
16286227StmmACPI_STATUS
16386227StmmAcpiDsGetRegionArguments (
16486227Stmm    ACPI_OPERAND_OBJECT     *RgnDesc);
165185133Smarius
16686227StmmACPI_STATUS
16786227StmmAcpiDsGetBufferArguments (
16886227Stmm    ACPI_OPERAND_OBJECT     *ObjDesc);
16986227Stmm
17086227StmmACPI_STATUS
17186227StmmAcpiDsGetPackageArguments (
17286227Stmm    ACPI_OPERAND_OBJECT     *ObjDesc);
17386227Stmm
174185133SmariusACPI_STATUS
17586227StmmAcpiDsInitBufferField (
17686227Stmm    UINT16                  AmlOpcode,
17786227Stmm    ACPI_OPERAND_OBJECT     *ObjDesc,
178167308Smarius    ACPI_OPERAND_OBJECT     *BufferDesc,
179167308Smarius    ACPI_OPERAND_OBJECT     *OffsetDesc,
18086227Stmm    ACPI_OPERAND_OBJECT     *LengthDesc,
18186227Stmm    ACPI_OPERAND_OBJECT     *ResultDesc);
18286227Stmm
18386227StmmACPI_STATUS
18486227StmmAcpiDsEvalBufferFieldOperands (
18586227Stmm    ACPI_WALK_STATE         *WalkState,
18686227Stmm    ACPI_PARSE_OBJECT       *Op);
18786227Stmm
18886227StmmACPI_STATUS
18986227StmmAcpiDsEvalRegionOperands (
19086227Stmm    ACPI_WALK_STATE         *WalkState,
19186227Stmm    ACPI_PARSE_OBJECT       *Op);
19286227Stmm
193128776StmmACPI_STATUS
194128776StmmAcpiDsEvalDataObjectOperands (
195133862Smarius    ACPI_WALK_STATE         *WalkState,
196128776Stmm    ACPI_PARSE_OBJECT       *Op,
197128776Stmm    ACPI_OPERAND_OBJECT     *ObjDesc);
198128776Stmm
199128776StmmACPI_STATUS
200128776StmmAcpiDsInitializeRegion (
201128776Stmm    ACPI_HANDLE             ObjHandle);
202167308Smarius
203167308Smarius
20486227Stmm/* dsctrl - Parser/Interpreter interface, control stack routines */
205167308Smarius
20686227Stmm
207167308SmariusACPI_STATUS
208167308SmariusAcpiDsExecBeginControlOp (
209167308Smarius    ACPI_WALK_STATE         *WalkState,
21086227Stmm    ACPI_PARSE_OBJECT       *Op);
21188823Stmm
21288823StmmACPI_STATUS
21388823StmmAcpiDsExecEndControlOp (
21488823Stmm    ACPI_WALK_STATE         *WalkState,
215167308Smarius    ACPI_PARSE_OBJECT       *Op);
21688823Stmm
21788823Stmm
21897265Sjake/* dsexec - Parser/Interpreter interface, method execution callbacks */
219167308Smarius
220167308Smarius
221146474SmariusACPI_STATUS
222146474SmariusAcpiDsGetPredicateValue (
223146474Smarius    ACPI_WALK_STATE         *WalkState,
224146474Smarius    ACPI_OPERAND_OBJECT     *ResultObj);
225146474Smarius
226146474SmariusACPI_STATUS
227146474SmariusAcpiDsExecBeginOp (
228146474Smarius    ACPI_WALK_STATE         *WalkState,
229146474Smarius    ACPI_PARSE_OBJECT       **OutOp);
230167308Smarius
231167308SmariusACPI_STATUS
23286227StmmAcpiDsExecEndOp (
233167308Smarius    ACPI_WALK_STATE         *State);
234167308Smarius
235167308Smarius
236167308Smarius/* dsfield - Parser/Interpreter interface for AML fields */
237167308Smarius
23886227StmmACPI_STATUS
23988823StmmAcpiDsGetFieldNames (
240167308Smarius    ACPI_CREATE_FIELD_INFO  *Info,
24186227Stmm    ACPI_WALK_STATE         *WalkState,
242128776Stmm    ACPI_PARSE_OBJECT       *Arg);
24386227Stmm
24486227StmmACPI_STATUS
245146474SmariusAcpiDsCreateField (
246146474Smarius    ACPI_PARSE_OBJECT       *Op,
247146474Smarius    ACPI_NAMESPACE_NODE     *RegionNode,
248146474Smarius    ACPI_WALK_STATE         *WalkState);
249167308Smarius
250146474SmariusACPI_STATUS
251146474SmariusAcpiDsCreateBankField (
252146474Smarius    ACPI_PARSE_OBJECT       *Op,
253146474Smarius    ACPI_NAMESPACE_NODE     *RegionNode,
254146474Smarius    ACPI_WALK_STATE         *WalkState);
255167308Smarius
256167308SmariusACPI_STATUS
257167308SmariusAcpiDsCreateIndexField (
258167308Smarius    ACPI_PARSE_OBJECT       *Op,
259167308Smarius    ACPI_NAMESPACE_NODE     *RegionNode,
260146474Smarius    ACPI_WALK_STATE         *WalkState);
261146474Smarius
262146474SmariusACPI_STATUS
263146474SmariusAcpiDsCreateBufferField (
264167308Smarius    ACPI_PARSE_OBJECT       *Op,
265167308Smarius    ACPI_WALK_STATE         *WalkState);
26686227Stmm
267167308SmariusACPI_STATUS
26886227StmmAcpiDsInitFieldObjects (
269167308Smarius    ACPI_PARSE_OBJECT       *Op,
270167308Smarius    ACPI_WALK_STATE         *WalkState);
271167308Smarius
272167308Smarius
27386227Stmm/* dsload - Parser/Interpreter interface, namespace load callbacks */
27486227Stmm
275167308SmariusACPI_STATUS
276167308SmariusAcpiDsLoad1BeginOp (
27786227Stmm    ACPI_WALK_STATE         *WalkState,
278167308Smarius    ACPI_PARSE_OBJECT       **OutOp);
27986227Stmm
280167308SmariusACPI_STATUS
281167308SmariusAcpiDsLoad1EndOp (
282167308Smarius    ACPI_WALK_STATE         *WalkState);
283167308Smarius
284167308SmariusACPI_STATUS
28586227StmmAcpiDsLoad2BeginOp (
28686227Stmm    ACPI_WALK_STATE         *WalkState,
28786227Stmm    ACPI_PARSE_OBJECT       **OutOp);
28886227Stmm
289166901SpisoACPI_STATUS
29086227StmmAcpiDsLoad2EndOp (
29186227Stmm    ACPI_WALK_STATE         *WalkState);
29288823Stmm
29386227StmmACPI_STATUS
294167308SmariusAcpiDsInitCallbacks (
29586227Stmm    ACPI_WALK_STATE         *WalkState,
296131535Simp    UINT32                  PassNumber);
29786227Stmm
29886227Stmm
299128776Stmm/* dsmthdat - method data (locals/args) */
30086227Stmm
30186227Stmm
30286227StmmACPI_STATUS
30386227StmmAcpiDsStoreObjectToLocal (
304131535Simp    UINT16                  Opcode,
305166901Spiso    UINT32                  Index,
30686227Stmm    ACPI_OPERAND_OBJECT     *SrcDesc,
307167308Smarius    ACPI_WALK_STATE         *WalkState);
308167308Smarius
309167308SmariusACPI_STATUS
310167308SmariusAcpiDsMethodDataGetEntry (
311167308Smarius    UINT16                  Opcode,
31286227Stmm    UINT32                  Index,
31386227Stmm    ACPI_WALK_STATE         *WalkState,
31486227Stmm    ACPI_OPERAND_OBJECT     ***Node);
31586227Stmm
31686227Stmmvoid
31786227StmmAcpiDsMethodDataDeleteAll (
318146474Smarius    ACPI_WALK_STATE         *WalkState);
319131535Simp
32086227StmmBOOLEAN
32186227StmmAcpiDsIsMethodValue (
32286227Stmm    ACPI_OPERAND_OBJECT     *ObjDesc);
323178443Smarius
324178443SmariusACPI_OBJECT_TYPE
325178443SmariusAcpiDsMethodDataGetType (
326178443Smarius    UINT16                  Opcode,
327178443Smarius    UINT32                  Index,
328178443Smarius    ACPI_WALK_STATE         *WalkState);
329178443Smarius
330178443SmariusACPI_STATUS
331178443SmariusAcpiDsMethodDataGetValue (
33286227Stmm    UINT16                  Opcode,
33386227Stmm    UINT32                  Index,
33486227Stmm    ACPI_WALK_STATE         *WalkState,
33586227Stmm    ACPI_OPERAND_OBJECT     **DestDesc);
336167308Smarius
337167308Smariusvoid
338167308SmariusAcpiDsMethodDataDeleteValue (
339167308Smarius    UINT16                  Opcode,
340167308Smarius    UINT32                  Index,
34186227Stmm    ACPI_WALK_STATE         *WalkState);
342167308Smarius
343167308SmariusACPI_STATUS
344167308SmariusAcpiDsMethodDataInitArgs (
345167308Smarius    ACPI_OPERAND_OBJECT     **Params,
346167308Smarius    UINT32                  MaxParamCount,
34786227Stmm    ACPI_WALK_STATE         *WalkState);
348167308Smarius
349167308SmariusACPI_STATUS
350167308SmariusAcpiDsMethodDataGetNode (
351167308Smarius    UINT16                  Opcode,
352167308Smarius    UINT32                  Index,
353167308Smarius    ACPI_WALK_STATE         *WalkState,
354167308Smarius    ACPI_NAMESPACE_NODE     **Node);
355167308Smarius
356167308Smariusvoid
357167308SmariusAcpiDsMethodDataInit (
358167308Smarius    ACPI_WALK_STATE         *WalkState);
359167308Smarius
360167308SmariusACPI_STATUS
361167308SmariusAcpiDsMethodDataSetValue (
36286227Stmm    UINT16                  Opcode,
36386227Stmm    UINT32                  Index,
36488823Stmm    ACPI_OPERAND_OBJECT     *Object,
36586227Stmm    ACPI_WALK_STATE         *WalkState);
36688823Stmm
36788823Stmm
36888823Stmm/* dsmethod - Parser/Interpreter interface - control method parsing */
36986227Stmm
37086227StmmACPI_STATUS
37186227StmmAcpiDsParseMethod (
37286227Stmm    ACPI_HANDLE             ObjHandle);
373167308Smarius
37486227StmmACPI_STATUS
37586227StmmAcpiDsCallControlMethod (
37686227Stmm    ACPI_THREAD_STATE       *Thread,
377157896Simp    ACPI_WALK_STATE         *WalkState,
37888823Stmm    ACPI_PARSE_OBJECT       *Op);
37988823Stmm
38088823StmmACPI_STATUS
38188823StmmAcpiDsRestartControlMethod (
38286227Stmm    ACPI_WALK_STATE         *WalkState,
38386227Stmm    ACPI_OPERAND_OBJECT     *ReturnDesc);
384128776Stmm
38586227StmmACPI_STATUS
38686227StmmAcpiDsTerminateControlMethod (
38786227Stmm    ACPI_WALK_STATE         *WalkState);
38886227Stmm
38988823StmmACPI_STATUS
390167308SmariusAcpiDsBeginMethodExecution (
391167308Smarius    ACPI_NAMESPACE_NODE     *MethodNode,
392167308Smarius    ACPI_OPERAND_OBJECT     *ObjDesc,
393167308Smarius    ACPI_NAMESPACE_NODE     *CallingMethodNode);
394167308Smarius
395167308Smarius
396167308Smarius/* dsobj - Parser/Interpreter interface - object initialization and conversion */
39786227Stmm
39886227StmmACPI_STATUS
39986227StmmAcpiDsInitOneObject (
40086227Stmm    ACPI_HANDLE             ObjHandle,
40186227Stmm    UINT32                  Level,
40286227Stmm    void                    *Context,
40386227Stmm    void                    **ReturnValue);
40486227Stmm
40586227StmmACPI_STATUS
40686227StmmAcpiDsInitializeObjects (
40786227Stmm    ACPI_TABLE_DESC         *TableDesc,
40886227Stmm    ACPI_NAMESPACE_NODE     *StartNode);
40986227Stmm
41086227StmmACPI_STATUS
41186227StmmAcpiDsBuildInternalBufferObj (
41286227Stmm    ACPI_WALK_STATE         *WalkState,
41388823Stmm    ACPI_PARSE_OBJECT       *Op,
41486227Stmm    UINT32                  BufferLength,
41586227Stmm    ACPI_OPERAND_OBJECT     **ObjDescPtr);
41686227Stmm
41786227StmmACPI_STATUS
41886227StmmAcpiDsBuildInternalPackageObj (
41986227Stmm    ACPI_WALK_STATE         *WalkState,
420167308Smarius    ACPI_PARSE_OBJECT       *op,
42186227Stmm    UINT32                  PackageLength,
42286227Stmm    ACPI_OPERAND_OBJECT     **ObjDesc);
42386227Stmm
42486227StmmACPI_STATUS
42586227StmmAcpiDsBuildInternalObject (
42686227Stmm    ACPI_WALK_STATE         *WalkState,
427128776Stmm    ACPI_PARSE_OBJECT       *Op,
42886227Stmm    ACPI_OPERAND_OBJECT     **ObjDescPtr);
42986227Stmm
43086227StmmACPI_STATUS
431167308SmariusAcpiDsInitObjectFromOp (
432167308Smarius    ACPI_WALK_STATE         *WalkState,
433167308Smarius    ACPI_PARSE_OBJECT       *Op,
434167308Smarius    UINT16                  Opcode,
435167308Smarius    ACPI_OPERAND_OBJECT     **ObjDesc);
436167308Smarius
437167308SmariusACPI_STATUS
438167308SmariusAcpiDsCreateNode (
439167308Smarius    ACPI_WALK_STATE         *WalkState,
440167308Smarius    ACPI_NAMESPACE_NODE     *Node,
441167308Smarius    ACPI_PARSE_OBJECT       *Op);
442167308Smarius
443167308Smarius
444167308Smarius/* dsutils - Parser/Interpreter interface utility routines */
445167308Smarius
446167308SmariusBOOLEAN
447167308SmariusAcpiDsIsResultUsed (
448167308Smarius    ACPI_PARSE_OBJECT       *Op,
449167308Smarius    ACPI_WALK_STATE         *WalkState);
450167308Smarius
451167308Smariusvoid
452167308SmariusAcpiDsDeleteResultIfNotUsed (
453167308Smarius    ACPI_PARSE_OBJECT       *Op,
454167308Smarius    ACPI_OPERAND_OBJECT     *ResultObj,
455167308Smarius    ACPI_WALK_STATE         *WalkState);
456167308Smarius
457167308SmariusACPI_STATUS
458167308SmariusAcpiDsCreateOperand (
459167308Smarius    ACPI_WALK_STATE         *WalkState,
460167308Smarius    ACPI_PARSE_OBJECT       *Arg,
461167308Smarius    UINT32                  ArgsRemaining);
462167308Smarius
463167308SmariusACPI_STATUS
464167308SmariusAcpiDsCreateOperands (
465167308Smarius    ACPI_WALK_STATE         *WalkState,
466167308Smarius    ACPI_PARSE_OBJECT       *FirstArg);
467167308Smarius
468167308SmariusACPI_STATUS
469167308SmariusAcpiDsResolveOperands (
470167308Smarius    ACPI_WALK_STATE         *WalkState);
471167308Smarius
472167308Smariusvoid
473167308SmariusAcpiDsClearOperands (
474167308Smarius    ACPI_WALK_STATE         *WalkState);
475167308Smarius
476167308Smarius
477167308Smarius/*
478167308Smarius * dswscope - Scope Stack manipulation
479167308Smarius */
480167308Smarius
481167308SmariusACPI_STATUS
482167308SmariusAcpiDsScopeStackPush (
483167308Smarius    ACPI_NAMESPACE_NODE     *Node,
484167308Smarius    ACPI_OBJECT_TYPE        Type,
485167308Smarius    ACPI_WALK_STATE         *WalkState);
486167308Smarius
487167308Smarius
488167308SmariusACPI_STATUS
489167308SmariusAcpiDsScopeStackPop (
490167308Smarius    ACPI_WALK_STATE         *WalkState);
491167308Smarius
492167308Smariusvoid
493167308SmariusAcpiDsScopeStackClear (
494167308Smarius    ACPI_WALK_STATE         *WalkState);
495167308Smarius
496167308Smarius
497167308Smarius/* dswstate - parser WALK_STATE management routines */
498167308Smarius
499167308SmariusACPI_WALK_STATE *
500167308SmariusAcpiDsCreateWalkState (
501167308Smarius    ACPI_OWNER_ID           OwnerId,
502167308Smarius    ACPI_PARSE_OBJECT       *Origin,
503167308Smarius    ACPI_OPERAND_OBJECT     *MthDesc,
504167308Smarius    ACPI_THREAD_STATE       *Thread);
505167308Smarius
506167308SmariusACPI_STATUS
507167308SmariusAcpiDsInitAmlWalk (
508167308Smarius    ACPI_WALK_STATE         *WalkState,
509167308Smarius    ACPI_PARSE_OBJECT       *Op,
510167308Smarius    ACPI_NAMESPACE_NODE     *MethodNode,
511167308Smarius    UINT8                   *AmlStart,
512167308Smarius    UINT32                  AmlLength,
513167308Smarius    ACPI_OPERAND_OBJECT     **Params,
514167308Smarius    ACPI_OPERAND_OBJECT     **ReturnObjDesc,
515167308Smarius    UINT32                  PassNumber);
516167308Smarius
517167308SmariusACPI_STATUS
518167308SmariusAcpiDsObjStackDeleteAll (
519167308Smarius    ACPI_WALK_STATE         *WalkState);
520167308Smarius
521167308SmariusACPI_STATUS
522167308SmariusAcpiDsObjStackPopAndDelete (
523167308Smarius    UINT32                  PopCount,
524167308Smarius    ACPI_WALK_STATE         *WalkState);
525167308Smarius
526167308Smariusvoid
527167308SmariusAcpiDsDeleteWalkState (
528167308Smarius    ACPI_WALK_STATE         *WalkState);
529167308Smarius
530167308SmariusACPI_WALK_STATE *
531167308SmariusAcpiDsPopWalkState (
532167308Smarius    ACPI_THREAD_STATE       *Thread);
533167308Smarius
534167308Smariusvoid
535167308SmariusAcpiDsPushWalkState (
536167308Smarius    ACPI_WALK_STATE         *WalkState,
537167308Smarius    ACPI_THREAD_STATE       *Thread);
538167308Smarius
539167308SmariusACPI_STATUS
540167308SmariusAcpiDsResultStackPop (
541167308Smarius    ACPI_WALK_STATE         *WalkState);
542167308Smarius
543167308SmariusACPI_STATUS
544167308SmariusAcpiDsResultStackPush (
545    ACPI_WALK_STATE         *WalkState);
546
547ACPI_STATUS
548AcpiDsResultStackClear (
549    ACPI_WALK_STATE         *WalkState);
550
551ACPI_WALK_STATE *
552AcpiDsGetCurrentWalkState (
553    ACPI_THREAD_STATE       *Thread);
554
555void
556AcpiDsDeleteWalkStateCache (
557    void);
558
559ACPI_STATUS
560AcpiDsResultInsert (
561    void                    *Object,
562    UINT32                  Index,
563    ACPI_WALK_STATE         *WalkState);
564
565ACPI_STATUS
566AcpiDsResultRemove (
567    ACPI_OPERAND_OBJECT     **Object,
568    UINT32                  Index,
569    ACPI_WALK_STATE         *WalkState);
570
571ACPI_STATUS
572AcpiDsResultPop (
573    ACPI_OPERAND_OBJECT     **Object,
574    ACPI_WALK_STATE         *WalkState);
575
576ACPI_STATUS
577AcpiDsResultPush (
578    ACPI_OPERAND_OBJECT     *Object,
579    ACPI_WALK_STATE         *WalkState);
580
581ACPI_STATUS
582AcpiDsResultPopFromBottom (
583    ACPI_OPERAND_OBJECT     **Object,
584    ACPI_WALK_STATE         *WalkState);
585
586#endif /* _ACDISPAT_H_ */
587