1433d6423SLionel Sambuc /******************************************************************************
2433d6423SLionel Sambuc  *
3433d6423SLionel Sambuc  * Name: acinterp.h - Interpreter subcomponent prototypes and defines
4433d6423SLionel Sambuc  *
5433d6423SLionel Sambuc  *****************************************************************************/
6433d6423SLionel Sambuc 
7*29492bb7SDavid van Moolenbroek /*
8*29492bb7SDavid van Moolenbroek  * Copyright (C) 2000 - 2014, Intel Corp.
9433d6423SLionel Sambuc  * All rights reserved.
10433d6423SLionel Sambuc  *
11*29492bb7SDavid van Moolenbroek  * Redistribution and use in source and binary forms, with or without
12*29492bb7SDavid van Moolenbroek  * modification, are permitted provided that the following conditions
13*29492bb7SDavid van Moolenbroek  * are met:
14*29492bb7SDavid van Moolenbroek  * 1. Redistributions of source code must retain the above copyright
15*29492bb7SDavid van Moolenbroek  *    notice, this list of conditions, and the following disclaimer,
16*29492bb7SDavid van Moolenbroek  *    without modification.
17*29492bb7SDavid van Moolenbroek  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18*29492bb7SDavid van Moolenbroek  *    substantially similar to the "NO WARRANTY" disclaimer below
19*29492bb7SDavid van Moolenbroek  *    ("Disclaimer") and any redistribution must be conditioned upon
20*29492bb7SDavid van Moolenbroek  *    including a substantially similar Disclaimer requirement for further
21*29492bb7SDavid van Moolenbroek  *    binary redistribution.
22*29492bb7SDavid van Moolenbroek  * 3. Neither the names of the above-listed copyright holders nor the names
23*29492bb7SDavid van Moolenbroek  *    of any contributors may be used to endorse or promote products derived
24*29492bb7SDavid van Moolenbroek  *    from this software without specific prior written permission.
25433d6423SLionel Sambuc  *
26*29492bb7SDavid van Moolenbroek  * Alternatively, this software may be distributed under the terms of the
27*29492bb7SDavid van Moolenbroek  * GNU General Public License ("GPL") version 2 as published by the Free
28*29492bb7SDavid van Moolenbroek  * Software Foundation.
29433d6423SLionel Sambuc  *
30*29492bb7SDavid van Moolenbroek  * NO WARRANTY
31*29492bb7SDavid van Moolenbroek  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32*29492bb7SDavid van Moolenbroek  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33*29492bb7SDavid van Moolenbroek  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34*29492bb7SDavid van Moolenbroek  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35*29492bb7SDavid van Moolenbroek  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36*29492bb7SDavid van Moolenbroek  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37*29492bb7SDavid van Moolenbroek  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38*29492bb7SDavid van Moolenbroek  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39*29492bb7SDavid van Moolenbroek  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40*29492bb7SDavid van Moolenbroek  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41*29492bb7SDavid van Moolenbroek  * POSSIBILITY OF SUCH DAMAGES.
42*29492bb7SDavid van Moolenbroek  */
43433d6423SLionel Sambuc 
44433d6423SLionel Sambuc #ifndef __ACINTERP_H__
45433d6423SLionel Sambuc #define __ACINTERP_H__
46433d6423SLionel Sambuc 
47433d6423SLionel Sambuc 
48433d6423SLionel Sambuc #define ACPI_WALK_OPERANDS          (&(WalkState->Operands [WalkState->NumOperands -1]))
49433d6423SLionel Sambuc 
50433d6423SLionel Sambuc /* Macros for tables used for debug output */
51433d6423SLionel Sambuc 
52433d6423SLionel Sambuc #define ACPI_EXD_OFFSET(f)          (UINT8) ACPI_OFFSET (ACPI_OPERAND_OBJECT,f)
53433d6423SLionel Sambuc #define ACPI_EXD_NSOFFSET(f)        (UINT8) ACPI_OFFSET (ACPI_NAMESPACE_NODE,f)
54433d6423SLionel Sambuc #define ACPI_EXD_TABLE_SIZE(name)   (sizeof(name) / sizeof (ACPI_EXDUMP_INFO))
55433d6423SLionel Sambuc 
56433d6423SLionel Sambuc /*
57433d6423SLionel Sambuc  * If possible, pack the following structures to byte alignment, since we
58433d6423SLionel Sambuc  * don't care about performance for debug output. Two cases where we cannot
59433d6423SLionel Sambuc  * pack the structures:
60433d6423SLionel Sambuc  *
61433d6423SLionel Sambuc  * 1) Hardware does not support misaligned memory transfers
62433d6423SLionel Sambuc  * 2) Compiler does not support pointers within packed structures
63433d6423SLionel Sambuc  */
64433d6423SLionel Sambuc #if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED))
65433d6423SLionel Sambuc #pragma pack(1)
66433d6423SLionel Sambuc #endif
67433d6423SLionel Sambuc 
68433d6423SLionel Sambuc typedef const struct acpi_exdump_info
69433d6423SLionel Sambuc {
70433d6423SLionel Sambuc     UINT8                   Opcode;
71433d6423SLionel Sambuc     UINT8                   Offset;
72433d6423SLionel Sambuc     char                    *Name;
73433d6423SLionel Sambuc 
74433d6423SLionel Sambuc } ACPI_EXDUMP_INFO;
75433d6423SLionel Sambuc 
76433d6423SLionel Sambuc /* Values for the Opcode field above */
77433d6423SLionel Sambuc 
78433d6423SLionel Sambuc #define ACPI_EXD_INIT                   0
79433d6423SLionel Sambuc #define ACPI_EXD_TYPE                   1
80433d6423SLionel Sambuc #define ACPI_EXD_UINT8                  2
81433d6423SLionel Sambuc #define ACPI_EXD_UINT16                 3
82433d6423SLionel Sambuc #define ACPI_EXD_UINT32                 4
83433d6423SLionel Sambuc #define ACPI_EXD_UINT64                 5
84433d6423SLionel Sambuc #define ACPI_EXD_LITERAL                6
85433d6423SLionel Sambuc #define ACPI_EXD_POINTER                7
86433d6423SLionel Sambuc #define ACPI_EXD_ADDRESS                8
87433d6423SLionel Sambuc #define ACPI_EXD_STRING                 9
88433d6423SLionel Sambuc #define ACPI_EXD_BUFFER                 10
89433d6423SLionel Sambuc #define ACPI_EXD_PACKAGE                11
90433d6423SLionel Sambuc #define ACPI_EXD_FIELD                  12
91433d6423SLionel Sambuc #define ACPI_EXD_REFERENCE              13
92*29492bb7SDavid van Moolenbroek #define ACPI_EXD_LIST                   14 /* Operand object list */
93*29492bb7SDavid van Moolenbroek #define ACPI_EXD_HDLR_LIST              15 /* Address Handler list */
94*29492bb7SDavid van Moolenbroek #define ACPI_EXD_RGN_LIST               16 /* Region list */
95*29492bb7SDavid van Moolenbroek #define ACPI_EXD_NODE                   17 /* Namespace Node */
96433d6423SLionel Sambuc 
97433d6423SLionel Sambuc /* restore default alignment */
98433d6423SLionel Sambuc 
99433d6423SLionel Sambuc #pragma pack()
100433d6423SLionel Sambuc 
101433d6423SLionel Sambuc 
102433d6423SLionel Sambuc /*
103433d6423SLionel Sambuc  * exconvrt - object conversion
104433d6423SLionel Sambuc  */
105433d6423SLionel Sambuc ACPI_STATUS
106433d6423SLionel Sambuc AcpiExConvertToInteger (
107433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
108433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **ResultDesc,
109433d6423SLionel Sambuc     UINT32                  Flags);
110433d6423SLionel Sambuc 
111433d6423SLionel Sambuc ACPI_STATUS
112433d6423SLionel Sambuc AcpiExConvertToBuffer (
113433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
114433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **ResultDesc);
115433d6423SLionel Sambuc 
116433d6423SLionel Sambuc ACPI_STATUS
117433d6423SLionel Sambuc AcpiExConvertToString (
118433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
119433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **ResultDesc,
120433d6423SLionel Sambuc     UINT32                  Type);
121433d6423SLionel Sambuc 
122433d6423SLionel Sambuc /* Types for ->String conversion */
123433d6423SLionel Sambuc 
124433d6423SLionel Sambuc #define ACPI_EXPLICIT_BYTE_COPY         0x00000000
125433d6423SLionel Sambuc #define ACPI_EXPLICIT_CONVERT_HEX       0x00000001
126433d6423SLionel Sambuc #define ACPI_IMPLICIT_CONVERT_HEX       0x00000002
127433d6423SLionel Sambuc #define ACPI_EXPLICIT_CONVERT_DECIMAL   0x00000003
128433d6423SLionel Sambuc 
129433d6423SLionel Sambuc ACPI_STATUS
130433d6423SLionel Sambuc AcpiExConvertToTargetType (
131433d6423SLionel Sambuc     ACPI_OBJECT_TYPE        DestinationType,
132433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *SourceDesc,
133433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **ResultDesc,
134433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
135433d6423SLionel Sambuc 
136433d6423SLionel Sambuc 
137433d6423SLionel Sambuc /*
138433d6423SLionel Sambuc  * exdebug - AML debug object
139433d6423SLionel Sambuc  */
140433d6423SLionel Sambuc void
141433d6423SLionel Sambuc AcpiExDoDebugObject (
142433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *SourceDesc,
143433d6423SLionel Sambuc     UINT32                  Level,
144433d6423SLionel Sambuc     UINT32                  Index);
145433d6423SLionel Sambuc 
146433d6423SLionel Sambuc 
147433d6423SLionel Sambuc /*
148433d6423SLionel Sambuc  * exfield - ACPI AML (p-code) execution - field manipulation
149433d6423SLionel Sambuc  */
150433d6423SLionel Sambuc ACPI_STATUS
151433d6423SLionel Sambuc AcpiExCommonBufferSetup (
152433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
153433d6423SLionel Sambuc     UINT32                  BufferLength,
154433d6423SLionel Sambuc     UINT32                  *DatumCount);
155433d6423SLionel Sambuc 
156433d6423SLionel Sambuc ACPI_STATUS
157433d6423SLionel Sambuc AcpiExWriteWithUpdateRule (
158433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
159433d6423SLionel Sambuc     UINT64                  Mask,
160433d6423SLionel Sambuc     UINT64                  FieldValue,
161433d6423SLionel Sambuc     UINT32                  FieldDatumByteOffset);
162433d6423SLionel Sambuc 
163433d6423SLionel Sambuc void
164433d6423SLionel Sambuc AcpiExGetBufferDatum(
165433d6423SLionel Sambuc     UINT64                  *Datum,
166433d6423SLionel Sambuc     void                    *Buffer,
167433d6423SLionel Sambuc     UINT32                  BufferLength,
168433d6423SLionel Sambuc     UINT32                  ByteGranularity,
169433d6423SLionel Sambuc     UINT32                  BufferOffset);
170433d6423SLionel Sambuc 
171433d6423SLionel Sambuc void
172433d6423SLionel Sambuc AcpiExSetBufferDatum (
173433d6423SLionel Sambuc     UINT64                  MergedDatum,
174433d6423SLionel Sambuc     void                    *Buffer,
175433d6423SLionel Sambuc     UINT32                  BufferLength,
176433d6423SLionel Sambuc     UINT32                  ByteGranularity,
177433d6423SLionel Sambuc     UINT32                  BufferOffset);
178433d6423SLionel Sambuc 
179433d6423SLionel Sambuc ACPI_STATUS
180433d6423SLionel Sambuc AcpiExReadDataFromField (
181433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState,
182433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
183433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **RetBufferDesc);
184433d6423SLionel Sambuc 
185433d6423SLionel Sambuc ACPI_STATUS
186433d6423SLionel Sambuc AcpiExWriteDataToField (
187433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *SourceDesc,
188433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
189433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **ResultDesc);
190433d6423SLionel Sambuc 
191433d6423SLionel Sambuc 
192433d6423SLionel Sambuc /*
193433d6423SLionel Sambuc  * exfldio - low level field I/O
194433d6423SLionel Sambuc  */
195433d6423SLionel Sambuc ACPI_STATUS
196433d6423SLionel Sambuc AcpiExExtractFromField (
197433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
198433d6423SLionel Sambuc     void                    *Buffer,
199433d6423SLionel Sambuc     UINT32                  BufferLength);
200433d6423SLionel Sambuc 
201433d6423SLionel Sambuc ACPI_STATUS
202433d6423SLionel Sambuc AcpiExInsertIntoField (
203433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
204433d6423SLionel Sambuc     void                    *Buffer,
205433d6423SLionel Sambuc     UINT32                  BufferLength);
206433d6423SLionel Sambuc 
207433d6423SLionel Sambuc ACPI_STATUS
208433d6423SLionel Sambuc AcpiExAccessRegion (
209433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
210433d6423SLionel Sambuc     UINT32                  FieldDatumByteOffset,
211433d6423SLionel Sambuc     UINT64                  *Value,
212433d6423SLionel Sambuc     UINT32                  ReadWrite);
213433d6423SLionel Sambuc 
214433d6423SLionel Sambuc 
215433d6423SLionel Sambuc /*
216433d6423SLionel Sambuc  * exmisc - misc support routines
217433d6423SLionel Sambuc  */
218433d6423SLionel Sambuc ACPI_STATUS
219433d6423SLionel Sambuc AcpiExGetObjectReference (
220433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
221433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **ReturnDesc,
222433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
223433d6423SLionel Sambuc 
224433d6423SLionel Sambuc ACPI_STATUS
225433d6423SLionel Sambuc AcpiExConcatTemplate (
226433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
227433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc2,
228433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **ActualReturnDesc,
229433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
230433d6423SLionel Sambuc 
231433d6423SLionel Sambuc ACPI_STATUS
232433d6423SLionel Sambuc AcpiExDoConcatenate (
233433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
234433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc2,
235433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **ActualReturnDesc,
236433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
237433d6423SLionel Sambuc 
238433d6423SLionel Sambuc ACPI_STATUS
239433d6423SLionel Sambuc AcpiExDoLogicalNumericOp (
240433d6423SLionel Sambuc     UINT16                  Opcode,
241433d6423SLionel Sambuc     UINT64                  Integer0,
242433d6423SLionel Sambuc     UINT64                  Integer1,
243433d6423SLionel Sambuc     BOOLEAN                 *LogicalResult);
244433d6423SLionel Sambuc 
245433d6423SLionel Sambuc ACPI_STATUS
246433d6423SLionel Sambuc AcpiExDoLogicalOp (
247433d6423SLionel Sambuc     UINT16                  Opcode,
248433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *Operand0,
249433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *Operand1,
250433d6423SLionel Sambuc     BOOLEAN                 *LogicalResult);
251433d6423SLionel Sambuc 
252433d6423SLionel Sambuc UINT64
253433d6423SLionel Sambuc AcpiExDoMathOp (
254433d6423SLionel Sambuc     UINT16                  Opcode,
255433d6423SLionel Sambuc     UINT64                  Operand0,
256433d6423SLionel Sambuc     UINT64                  Operand1);
257433d6423SLionel Sambuc 
258433d6423SLionel Sambuc ACPI_STATUS
259433d6423SLionel Sambuc AcpiExCreateMutex (
260433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
261433d6423SLionel Sambuc 
262433d6423SLionel Sambuc ACPI_STATUS
263433d6423SLionel Sambuc AcpiExCreateProcessor (
264433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
265433d6423SLionel Sambuc 
266433d6423SLionel Sambuc ACPI_STATUS
267433d6423SLionel Sambuc AcpiExCreatePowerResource (
268433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
269433d6423SLionel Sambuc 
270433d6423SLionel Sambuc ACPI_STATUS
271433d6423SLionel Sambuc AcpiExCreateRegion (
272433d6423SLionel Sambuc     UINT8                   *AmlStart,
273433d6423SLionel Sambuc     UINT32                  AmlLength,
274433d6423SLionel Sambuc     UINT8                   RegionSpace,
275433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
276433d6423SLionel Sambuc 
277433d6423SLionel Sambuc ACPI_STATUS
278433d6423SLionel Sambuc AcpiExCreateEvent (
279433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
280433d6423SLionel Sambuc 
281433d6423SLionel Sambuc ACPI_STATUS
282433d6423SLionel Sambuc AcpiExCreateAlias (
283433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
284433d6423SLionel Sambuc 
285433d6423SLionel Sambuc ACPI_STATUS
286433d6423SLionel Sambuc AcpiExCreateMethod (
287433d6423SLionel Sambuc     UINT8                   *AmlStart,
288433d6423SLionel Sambuc     UINT32                  AmlLength,
289433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
290433d6423SLionel Sambuc 
291433d6423SLionel Sambuc 
292433d6423SLionel Sambuc /*
293433d6423SLionel Sambuc  * exconfig - dynamic table load/unload
294433d6423SLionel Sambuc  */
295433d6423SLionel Sambuc ACPI_STATUS
296433d6423SLionel Sambuc AcpiExLoadOp (
297433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
298433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *Target,
299433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
300433d6423SLionel Sambuc 
301433d6423SLionel Sambuc ACPI_STATUS
302433d6423SLionel Sambuc AcpiExLoadTableOp (
303433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState,
304433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **ReturnDesc);
305433d6423SLionel Sambuc 
306433d6423SLionel Sambuc ACPI_STATUS
307433d6423SLionel Sambuc AcpiExUnloadTable (
308433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *DdbHandle);
309433d6423SLionel Sambuc 
310433d6423SLionel Sambuc 
311433d6423SLionel Sambuc /*
312433d6423SLionel Sambuc  * exmutex - mutex support
313433d6423SLionel Sambuc  */
314433d6423SLionel Sambuc ACPI_STATUS
315433d6423SLionel Sambuc AcpiExAcquireMutex (
316433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *TimeDesc,
317433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
318433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
319433d6423SLionel Sambuc 
320433d6423SLionel Sambuc ACPI_STATUS
321433d6423SLionel Sambuc AcpiExAcquireMutexObject (
322433d6423SLionel Sambuc     UINT16                  Timeout,
323433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
324433d6423SLionel Sambuc     ACPI_THREAD_ID          ThreadId);
325433d6423SLionel Sambuc 
326433d6423SLionel Sambuc ACPI_STATUS
327433d6423SLionel Sambuc AcpiExReleaseMutex (
328433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
329433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
330433d6423SLionel Sambuc 
331433d6423SLionel Sambuc ACPI_STATUS
332433d6423SLionel Sambuc AcpiExReleaseMutexObject (
333433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc);
334433d6423SLionel Sambuc 
335433d6423SLionel Sambuc void
336433d6423SLionel Sambuc AcpiExReleaseAllMutexes (
337433d6423SLionel Sambuc     ACPI_THREAD_STATE       *Thread);
338433d6423SLionel Sambuc 
339433d6423SLionel Sambuc void
340433d6423SLionel Sambuc AcpiExUnlinkMutex (
341433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc);
342433d6423SLionel Sambuc 
343433d6423SLionel Sambuc 
344433d6423SLionel Sambuc /*
345433d6423SLionel Sambuc  * exprep - ACPI AML execution - prep utilities
346433d6423SLionel Sambuc  */
347433d6423SLionel Sambuc ACPI_STATUS
348433d6423SLionel Sambuc AcpiExPrepCommonFieldObject (
349433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
350433d6423SLionel Sambuc     UINT8                   FieldFlags,
351433d6423SLionel Sambuc     UINT8                   FieldAttribute,
352433d6423SLionel Sambuc     UINT32                  FieldBitPosition,
353433d6423SLionel Sambuc     UINT32                  FieldBitLength);
354433d6423SLionel Sambuc 
355433d6423SLionel Sambuc ACPI_STATUS
356433d6423SLionel Sambuc AcpiExPrepFieldValue (
357433d6423SLionel Sambuc     ACPI_CREATE_FIELD_INFO  *Info);
358433d6423SLionel Sambuc 
359433d6423SLionel Sambuc 
360433d6423SLionel Sambuc /*
361433d6423SLionel Sambuc  * exsystem - Interface to OS services
362433d6423SLionel Sambuc  */
363433d6423SLionel Sambuc ACPI_STATUS
364433d6423SLionel Sambuc AcpiExSystemDoNotifyOp (
365433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *Value,
366433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc);
367433d6423SLionel Sambuc 
368433d6423SLionel Sambuc ACPI_STATUS
369433d6423SLionel Sambuc AcpiExSystemDoSleep(
370433d6423SLionel Sambuc     UINT64                  Time);
371433d6423SLionel Sambuc 
372433d6423SLionel Sambuc ACPI_STATUS
373433d6423SLionel Sambuc AcpiExSystemDoStall (
374433d6423SLionel Sambuc     UINT32                  Time);
375433d6423SLionel Sambuc 
376433d6423SLionel Sambuc ACPI_STATUS
377433d6423SLionel Sambuc AcpiExSystemSignalEvent(
378433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc);
379433d6423SLionel Sambuc 
380433d6423SLionel Sambuc ACPI_STATUS
381433d6423SLionel Sambuc AcpiExSystemWaitEvent(
382433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *Time,
383433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc);
384433d6423SLionel Sambuc 
385433d6423SLionel Sambuc ACPI_STATUS
386433d6423SLionel Sambuc AcpiExSystemResetEvent(
387433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc);
388433d6423SLionel Sambuc 
389433d6423SLionel Sambuc ACPI_STATUS
390433d6423SLionel Sambuc AcpiExSystemWaitSemaphore (
391433d6423SLionel Sambuc     ACPI_SEMAPHORE          Semaphore,
392433d6423SLionel Sambuc     UINT16                  Timeout);
393433d6423SLionel Sambuc 
394433d6423SLionel Sambuc ACPI_STATUS
395433d6423SLionel Sambuc AcpiExSystemWaitMutex (
396433d6423SLionel Sambuc     ACPI_MUTEX              Mutex,
397433d6423SLionel Sambuc     UINT16                  Timeout);
398433d6423SLionel Sambuc 
399433d6423SLionel Sambuc /*
400433d6423SLionel Sambuc  * exoparg1 - ACPI AML execution, 1 operand
401433d6423SLionel Sambuc  */
402433d6423SLionel Sambuc ACPI_STATUS
403433d6423SLionel Sambuc AcpiExOpcode_0A_0T_1R (
404433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
405433d6423SLionel Sambuc 
406433d6423SLionel Sambuc ACPI_STATUS
407433d6423SLionel Sambuc AcpiExOpcode_1A_0T_0R (
408433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
409433d6423SLionel Sambuc 
410433d6423SLionel Sambuc ACPI_STATUS
411433d6423SLionel Sambuc AcpiExOpcode_1A_0T_1R (
412433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
413433d6423SLionel Sambuc 
414433d6423SLionel Sambuc ACPI_STATUS
415433d6423SLionel Sambuc AcpiExOpcode_1A_1T_1R (
416433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
417433d6423SLionel Sambuc 
418433d6423SLionel Sambuc ACPI_STATUS
419433d6423SLionel Sambuc AcpiExOpcode_1A_1T_0R (
420433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
421433d6423SLionel Sambuc 
422433d6423SLionel Sambuc /*
423433d6423SLionel Sambuc  * exoparg2 - ACPI AML execution, 2 operands
424433d6423SLionel Sambuc  */
425433d6423SLionel Sambuc ACPI_STATUS
426433d6423SLionel Sambuc AcpiExOpcode_2A_0T_0R (
427433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
428433d6423SLionel Sambuc 
429433d6423SLionel Sambuc ACPI_STATUS
430433d6423SLionel Sambuc AcpiExOpcode_2A_0T_1R (
431433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
432433d6423SLionel Sambuc 
433433d6423SLionel Sambuc ACPI_STATUS
434433d6423SLionel Sambuc AcpiExOpcode_2A_1T_1R (
435433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
436433d6423SLionel Sambuc 
437433d6423SLionel Sambuc ACPI_STATUS
438433d6423SLionel Sambuc AcpiExOpcode_2A_2T_1R (
439433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
440433d6423SLionel Sambuc 
441433d6423SLionel Sambuc 
442433d6423SLionel Sambuc /*
443433d6423SLionel Sambuc  * exoparg3 - ACPI AML execution, 3 operands
444433d6423SLionel Sambuc  */
445433d6423SLionel Sambuc ACPI_STATUS
446433d6423SLionel Sambuc AcpiExOpcode_3A_0T_0R (
447433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
448433d6423SLionel Sambuc 
449433d6423SLionel Sambuc ACPI_STATUS
450433d6423SLionel Sambuc AcpiExOpcode_3A_1T_1R (
451433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
452433d6423SLionel Sambuc 
453433d6423SLionel Sambuc 
454433d6423SLionel Sambuc /*
455433d6423SLionel Sambuc  * exoparg6 - ACPI AML execution, 6 operands
456433d6423SLionel Sambuc  */
457433d6423SLionel Sambuc ACPI_STATUS
458433d6423SLionel Sambuc AcpiExOpcode_6A_0T_1R (
459433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
460433d6423SLionel Sambuc 
461433d6423SLionel Sambuc 
462433d6423SLionel Sambuc /*
463433d6423SLionel Sambuc  * exresolv - Object resolution and get value functions
464433d6423SLionel Sambuc  */
465433d6423SLionel Sambuc ACPI_STATUS
466433d6423SLionel Sambuc AcpiExResolveToValue (
467433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **StackPtr,
468433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
469433d6423SLionel Sambuc 
470433d6423SLionel Sambuc ACPI_STATUS
471433d6423SLionel Sambuc AcpiExResolveMultiple (
472433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState,
473433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *Operand,
474433d6423SLionel Sambuc     ACPI_OBJECT_TYPE        *ReturnType,
475433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **ReturnDesc);
476433d6423SLionel Sambuc 
477433d6423SLionel Sambuc 
478433d6423SLionel Sambuc /*
479433d6423SLionel Sambuc  * exresnte - resolve namespace node
480433d6423SLionel Sambuc  */
481433d6423SLionel Sambuc ACPI_STATUS
482433d6423SLionel Sambuc AcpiExResolveNodeToValue (
483433d6423SLionel Sambuc     ACPI_NAMESPACE_NODE     **StackPtr,
484433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
485433d6423SLionel Sambuc 
486433d6423SLionel Sambuc 
487433d6423SLionel Sambuc /*
488433d6423SLionel Sambuc  * exresop - resolve operand to value
489433d6423SLionel Sambuc  */
490433d6423SLionel Sambuc ACPI_STATUS
491433d6423SLionel Sambuc AcpiExResolveOperands (
492433d6423SLionel Sambuc     UINT16                  Opcode,
493433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **StackPtr,
494433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
495433d6423SLionel Sambuc 
496433d6423SLionel Sambuc 
497433d6423SLionel Sambuc /*
498433d6423SLionel Sambuc  * exdump - Interpreter debug output routines
499433d6423SLionel Sambuc  */
500433d6423SLionel Sambuc void
501433d6423SLionel Sambuc AcpiExDumpOperand (
502433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc,
503433d6423SLionel Sambuc     UINT32                  Depth);
504433d6423SLionel Sambuc 
505433d6423SLionel Sambuc void
506433d6423SLionel Sambuc AcpiExDumpOperands (
507433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **Operands,
508433d6423SLionel Sambuc     const char              *OpcodeName,
509433d6423SLionel Sambuc     UINT32                  NumOpcodes);
510433d6423SLionel Sambuc 
511433d6423SLionel Sambuc void
512433d6423SLionel Sambuc AcpiExDumpObjectDescriptor (
513433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *Object,
514433d6423SLionel Sambuc     UINT32                  Flags);
515433d6423SLionel Sambuc 
516433d6423SLionel Sambuc void
517433d6423SLionel Sambuc AcpiExDumpNamespaceNode (
518433d6423SLionel Sambuc     ACPI_NAMESPACE_NODE     *Node,
519433d6423SLionel Sambuc     UINT32                  Flags);
520433d6423SLionel Sambuc 
521433d6423SLionel Sambuc 
522433d6423SLionel Sambuc /*
523433d6423SLionel Sambuc  * exnames - AML namestring support
524433d6423SLionel Sambuc  */
525433d6423SLionel Sambuc ACPI_STATUS
526433d6423SLionel Sambuc AcpiExGetNameString (
527433d6423SLionel Sambuc     ACPI_OBJECT_TYPE        DataType,
528433d6423SLionel Sambuc     UINT8                   *InAmlAddress,
529433d6423SLionel Sambuc     char                    **OutNameString,
530433d6423SLionel Sambuc     UINT32                  *OutNameLength);
531433d6423SLionel Sambuc 
532433d6423SLionel Sambuc 
533433d6423SLionel Sambuc /*
534433d6423SLionel Sambuc  * exstore - Object store support
535433d6423SLionel Sambuc  */
536433d6423SLionel Sambuc ACPI_STATUS
537433d6423SLionel Sambuc AcpiExStore (
538433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ValDesc,
539433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *DestDesc,
540433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
541433d6423SLionel Sambuc 
542433d6423SLionel Sambuc ACPI_STATUS
543433d6423SLionel Sambuc AcpiExStoreObjectToNode (
544433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *SourceDesc,
545433d6423SLionel Sambuc     ACPI_NAMESPACE_NODE     *Node,
546433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState,
547433d6423SLionel Sambuc     UINT8                   ImplicitConversion);
548433d6423SLionel Sambuc 
549433d6423SLionel Sambuc #define ACPI_IMPLICIT_CONVERSION        TRUE
550433d6423SLionel Sambuc #define ACPI_NO_IMPLICIT_CONVERSION     FALSE
551433d6423SLionel Sambuc 
552433d6423SLionel Sambuc 
553433d6423SLionel Sambuc /*
554433d6423SLionel Sambuc  * exstoren - resolve/store object
555433d6423SLionel Sambuc  */
556433d6423SLionel Sambuc ACPI_STATUS
557433d6423SLionel Sambuc AcpiExResolveObject (
558433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **SourceDescPtr,
559433d6423SLionel Sambuc     ACPI_OBJECT_TYPE        TargetType,
560433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
561433d6423SLionel Sambuc 
562433d6423SLionel Sambuc ACPI_STATUS
563433d6423SLionel Sambuc AcpiExStoreObjectToObject (
564433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *SourceDesc,
565433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *DestDesc,
566433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     **NewDesc,
567433d6423SLionel Sambuc     ACPI_WALK_STATE         *WalkState);
568433d6423SLionel Sambuc 
569433d6423SLionel Sambuc 
570433d6423SLionel Sambuc /*
571433d6423SLionel Sambuc  * exstorob - store object - buffer/string
572433d6423SLionel Sambuc  */
573433d6423SLionel Sambuc ACPI_STATUS
574433d6423SLionel Sambuc AcpiExStoreBufferToBuffer (
575433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *SourceDesc,
576433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *TargetDesc);
577433d6423SLionel Sambuc 
578433d6423SLionel Sambuc ACPI_STATUS
579433d6423SLionel Sambuc AcpiExStoreStringToString (
580433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *SourceDesc,
581433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *TargetDesc);
582433d6423SLionel Sambuc 
583433d6423SLionel Sambuc 
584433d6423SLionel Sambuc /*
585433d6423SLionel Sambuc  * excopy - object copy
586433d6423SLionel Sambuc  */
587433d6423SLionel Sambuc ACPI_STATUS
588433d6423SLionel Sambuc AcpiExCopyIntegerToIndexField (
589433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *SourceDesc,
590433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *TargetDesc);
591433d6423SLionel Sambuc 
592433d6423SLionel Sambuc ACPI_STATUS
593433d6423SLionel Sambuc AcpiExCopyIntegerToBankField (
594433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *SourceDesc,
595433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *TargetDesc);
596433d6423SLionel Sambuc 
597433d6423SLionel Sambuc ACPI_STATUS
598433d6423SLionel Sambuc AcpiExCopyDataToNamedField (
599433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *SourceDesc,
600433d6423SLionel Sambuc     ACPI_NAMESPACE_NODE     *Node);
601433d6423SLionel Sambuc 
602433d6423SLionel Sambuc ACPI_STATUS
603433d6423SLionel Sambuc AcpiExCopyIntegerToBufferField (
604433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *SourceDesc,
605433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *TargetDesc);
606433d6423SLionel Sambuc 
607433d6423SLionel Sambuc 
608433d6423SLionel Sambuc /*
609433d6423SLionel Sambuc  * exutils - interpreter/scanner utilities
610433d6423SLionel Sambuc  */
611433d6423SLionel Sambuc void
612433d6423SLionel Sambuc AcpiExEnterInterpreter (
613433d6423SLionel Sambuc     void);
614433d6423SLionel Sambuc 
615433d6423SLionel Sambuc void
616433d6423SLionel Sambuc AcpiExExitInterpreter (
617433d6423SLionel Sambuc     void);
618433d6423SLionel Sambuc 
619*29492bb7SDavid van Moolenbroek BOOLEAN
620433d6423SLionel Sambuc AcpiExTruncateFor32bitTable (
621433d6423SLionel Sambuc     ACPI_OPERAND_OBJECT     *ObjDesc);
622433d6423SLionel Sambuc 
623433d6423SLionel Sambuc void
624433d6423SLionel Sambuc AcpiExAcquireGlobalLock (
625433d6423SLionel Sambuc     UINT32                  Rule);
626433d6423SLionel Sambuc 
627433d6423SLionel Sambuc void
628433d6423SLionel Sambuc AcpiExReleaseGlobalLock (
629433d6423SLionel Sambuc     UINT32                  Rule);
630433d6423SLionel Sambuc 
631433d6423SLionel Sambuc void
632433d6423SLionel Sambuc AcpiExEisaIdToString (
633433d6423SLionel Sambuc     char                    *Dest,
634433d6423SLionel Sambuc     UINT64                  CompressedId);
635433d6423SLionel Sambuc 
636433d6423SLionel Sambuc void
637433d6423SLionel Sambuc AcpiExIntegerToString (
638433d6423SLionel Sambuc     char                    *Dest,
639433d6423SLionel Sambuc     UINT64                  Value);
640433d6423SLionel Sambuc 
641*29492bb7SDavid van Moolenbroek BOOLEAN
642*29492bb7SDavid van Moolenbroek AcpiIsValidSpaceId (
643*29492bb7SDavid van Moolenbroek     UINT8                   SpaceId);
644*29492bb7SDavid van Moolenbroek 
645433d6423SLionel Sambuc 
646433d6423SLionel Sambuc /*
647433d6423SLionel Sambuc  * exregion - default OpRegion handlers
648433d6423SLionel Sambuc  */
649433d6423SLionel Sambuc ACPI_STATUS
650433d6423SLionel Sambuc AcpiExSystemMemorySpaceHandler (
651433d6423SLionel Sambuc     UINT32                  Function,
652433d6423SLionel Sambuc     ACPI_PHYSICAL_ADDRESS   Address,
653433d6423SLionel Sambuc     UINT32                  BitWidth,
654433d6423SLionel Sambuc     UINT64                  *Value,
655433d6423SLionel Sambuc     void                    *HandlerContext,
656433d6423SLionel Sambuc     void                    *RegionContext);
657433d6423SLionel Sambuc 
658433d6423SLionel Sambuc ACPI_STATUS
659433d6423SLionel Sambuc AcpiExSystemIoSpaceHandler (
660433d6423SLionel Sambuc     UINT32                  Function,
661433d6423SLionel Sambuc     ACPI_PHYSICAL_ADDRESS   Address,
662433d6423SLionel Sambuc     UINT32                  BitWidth,
663433d6423SLionel Sambuc     UINT64                  *Value,
664433d6423SLionel Sambuc     void                    *HandlerContext,
665433d6423SLionel Sambuc     void                    *RegionContext);
666433d6423SLionel Sambuc 
667433d6423SLionel Sambuc ACPI_STATUS
668433d6423SLionel Sambuc AcpiExPciConfigSpaceHandler (
669433d6423SLionel Sambuc     UINT32                  Function,
670433d6423SLionel Sambuc     ACPI_PHYSICAL_ADDRESS   Address,
671433d6423SLionel Sambuc     UINT32                  BitWidth,
672433d6423SLionel Sambuc     UINT64                  *Value,
673433d6423SLionel Sambuc     void                    *HandlerContext,
674433d6423SLionel Sambuc     void                    *RegionContext);
675433d6423SLionel Sambuc 
676433d6423SLionel Sambuc ACPI_STATUS
677433d6423SLionel Sambuc AcpiExCmosSpaceHandler (
678433d6423SLionel Sambuc     UINT32                  Function,
679433d6423SLionel Sambuc     ACPI_PHYSICAL_ADDRESS   Address,
680433d6423SLionel Sambuc     UINT32                  BitWidth,
681433d6423SLionel Sambuc     UINT64                  *Value,
682433d6423SLionel Sambuc     void                    *HandlerContext,
683433d6423SLionel Sambuc     void                    *RegionContext);
684433d6423SLionel Sambuc 
685433d6423SLionel Sambuc ACPI_STATUS
686433d6423SLionel Sambuc AcpiExPciBarSpaceHandler (
687433d6423SLionel Sambuc     UINT32                  Function,
688433d6423SLionel Sambuc     ACPI_PHYSICAL_ADDRESS   Address,
689433d6423SLionel Sambuc     UINT32                  BitWidth,
690433d6423SLionel Sambuc     UINT64                  *Value,
691433d6423SLionel Sambuc     void                    *HandlerContext,
692433d6423SLionel Sambuc     void                    *RegionContext);
693433d6423SLionel Sambuc 
694433d6423SLionel Sambuc ACPI_STATUS
695433d6423SLionel Sambuc AcpiExEmbeddedControllerSpaceHandler (
696433d6423SLionel Sambuc     UINT32                  Function,
697433d6423SLionel Sambuc     ACPI_PHYSICAL_ADDRESS   Address,
698433d6423SLionel Sambuc     UINT32                  BitWidth,
699433d6423SLionel Sambuc     UINT64                  *Value,
700433d6423SLionel Sambuc     void                    *HandlerContext,
701433d6423SLionel Sambuc     void                    *RegionContext);
702433d6423SLionel Sambuc 
703433d6423SLionel Sambuc ACPI_STATUS
704433d6423SLionel Sambuc AcpiExSmBusSpaceHandler (
705433d6423SLionel Sambuc     UINT32                  Function,
706433d6423SLionel Sambuc     ACPI_PHYSICAL_ADDRESS   Address,
707433d6423SLionel Sambuc     UINT32                  BitWidth,
708433d6423SLionel Sambuc     UINT64                  *Value,
709433d6423SLionel Sambuc     void                    *HandlerContext,
710433d6423SLionel Sambuc     void                    *RegionContext);
711433d6423SLionel Sambuc 
712433d6423SLionel Sambuc 
713433d6423SLionel Sambuc ACPI_STATUS
714433d6423SLionel Sambuc AcpiExDataTableSpaceHandler (
715433d6423SLionel Sambuc     UINT32                  Function,
716433d6423SLionel Sambuc     ACPI_PHYSICAL_ADDRESS   Address,
717433d6423SLionel Sambuc     UINT32                  BitWidth,
718433d6423SLionel Sambuc     UINT64                  *Value,
719433d6423SLionel Sambuc     void                    *HandlerContext,
720433d6423SLionel Sambuc     void                    *RegionContext);
721433d6423SLionel Sambuc 
722433d6423SLionel Sambuc #endif /* __INTERP_H__ */
723