1 /******************************************************************************
3 * Name: acdispat.h - dispatcher (parser to interpreter interface)
5 *****************************************************************************/
8 * Copyright (C) 2000 - 2014, Intel Corp.
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
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.
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.
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41 * POSSIBILITY OF SUCH DAMAGES.
49 #define NAMEOF_LOCAL_NTE "__L0"
50 #define NAMEOF_ARG_NTE "__A0"
54 * dsargs - execution of dynamic arguments for static objects
57 AcpiDsGetBufferFieldArguments (
58 ACPI_OPERAND_OBJECT *ObjDesc);
61 AcpiDsGetBankFieldArguments (
62 ACPI_OPERAND_OBJECT *ObjDesc);
65 AcpiDsGetRegionArguments (
66 ACPI_OPERAND_OBJECT *RgnDesc);
69 AcpiDsGetBufferArguments (
70 ACPI_OPERAND_OBJECT *ObjDesc);
73 AcpiDsGetPackageArguments (
74 ACPI_OPERAND_OBJECT *ObjDesc);
78 * dscontrol - support for execution control opcodes
81 AcpiDsExecBeginControlOp (
82 ACPI_WALK_STATE *WalkState,
83 ACPI_PARSE_OBJECT *Op);
86 AcpiDsExecEndControlOp (
87 ACPI_WALK_STATE *WalkState,
88 ACPI_PARSE_OBJECT *Op);
92 * dsopcode - support for late operand evaluation
95 AcpiDsEvalBufferFieldOperands (
96 ACPI_WALK_STATE *WalkState,
97 ACPI_PARSE_OBJECT *Op);
100 AcpiDsEvalRegionOperands (
101 ACPI_WALK_STATE *WalkState,
102 ACPI_PARSE_OBJECT *Op);
105 AcpiDsEvalTableRegionOperands (
106 ACPI_WALK_STATE *WalkState,
107 ACPI_PARSE_OBJECT *Op);
110 AcpiDsEvalDataObjectOperands (
111 ACPI_WALK_STATE *WalkState,
112 ACPI_PARSE_OBJECT *Op,
113 ACPI_OPERAND_OBJECT *ObjDesc);
116 AcpiDsEvalBankFieldOperands (
117 ACPI_WALK_STATE *WalkState,
118 ACPI_PARSE_OBJECT *Op);
121 AcpiDsInitializeRegion (
122 ACPI_HANDLE ObjHandle);
126 * dsexec - Parser/Interpreter interface, method execution callbacks
129 AcpiDsGetPredicateValue (
130 ACPI_WALK_STATE *WalkState,
131 ACPI_OPERAND_OBJECT *ResultObj);
135 ACPI_WALK_STATE *WalkState,
136 ACPI_PARSE_OBJECT **OutOp);
140 ACPI_WALK_STATE *State);
144 * dsfield - Parser/Interpreter interface for AML fields
148 ACPI_PARSE_OBJECT *Op,
149 ACPI_NAMESPACE_NODE *RegionNode,
150 ACPI_WALK_STATE *WalkState);
153 AcpiDsCreateBankField (
154 ACPI_PARSE_OBJECT *Op,
155 ACPI_NAMESPACE_NODE *RegionNode,
156 ACPI_WALK_STATE *WalkState);
159 AcpiDsCreateIndexField (
160 ACPI_PARSE_OBJECT *Op,
161 ACPI_NAMESPACE_NODE *RegionNode,
162 ACPI_WALK_STATE *WalkState);
165 AcpiDsCreateBufferField (
166 ACPI_PARSE_OBJECT *Op,
167 ACPI_WALK_STATE *WalkState);
170 AcpiDsInitFieldObjects (
171 ACPI_PARSE_OBJECT *Op,
172 ACPI_WALK_STATE *WalkState);
176 * dsload - Parser/Interpreter interface
179 AcpiDsInitCallbacks (
180 ACPI_WALK_STATE *WalkState,
183 /* dsload - pass 1 namespace load callbacks */
187 ACPI_WALK_STATE *WalkState,
188 ACPI_PARSE_OBJECT **OutOp);
192 ACPI_WALK_STATE *WalkState);
195 /* dsload - pass 2 namespace load callbacks */
199 ACPI_WALK_STATE *WalkState,
200 ACPI_PARSE_OBJECT **OutOp);
204 ACPI_WALK_STATE *WalkState);
208 * dsmthdat - method data (locals/args)
211 AcpiDsStoreObjectToLocal (
214 ACPI_OPERAND_OBJECT *SrcDesc,
215 ACPI_WALK_STATE *WalkState);
218 AcpiDsMethodDataGetEntry (
221 ACPI_WALK_STATE *WalkState,
222 ACPI_OPERAND_OBJECT ***Node);
225 AcpiDsMethodDataDeleteAll (
226 ACPI_WALK_STATE *WalkState);
229 AcpiDsIsMethodValue (
230 ACPI_OPERAND_OBJECT *ObjDesc);
233 AcpiDsMethodDataGetValue (
236 ACPI_WALK_STATE *WalkState,
237 ACPI_OPERAND_OBJECT **DestDesc);
240 AcpiDsMethodDataInitArgs (
241 ACPI_OPERAND_OBJECT **Params,
242 UINT32 MaxParamCount,
243 ACPI_WALK_STATE *WalkState);
246 AcpiDsMethodDataGetNode (
249 ACPI_WALK_STATE *WalkState,
250 ACPI_NAMESPACE_NODE **Node);
253 AcpiDsMethodDataInit (
254 ACPI_WALK_STATE *WalkState);
258 * dsmethod - Parser/Interpreter interface - control method parsing
261 AcpiDsAutoSerializeMethod (
262 ACPI_NAMESPACE_NODE *Node,
263 ACPI_OPERAND_OBJECT *ObjDesc);
266 AcpiDsCallControlMethod (
267 ACPI_THREAD_STATE *Thread,
268 ACPI_WALK_STATE *WalkState,
269 ACPI_PARSE_OBJECT *Op);
272 AcpiDsRestartControlMethod (
273 ACPI_WALK_STATE *WalkState,
274 ACPI_OPERAND_OBJECT *ReturnDesc);
277 AcpiDsTerminateControlMethod (
278 ACPI_OPERAND_OBJECT *MethodDesc,
279 ACPI_WALK_STATE *WalkState);
282 AcpiDsBeginMethodExecution (
283 ACPI_NAMESPACE_NODE *MethodNode,
284 ACPI_OPERAND_OBJECT *ObjDesc,
285 ACPI_WALK_STATE *WalkState);
290 ACPI_WALK_STATE *WalkState);
296 AcpiDsInitializeObjects (
298 ACPI_NAMESPACE_NODE *StartNode);
302 * dsobject - Parser/Interpreter interface - object initialization and conversion
305 AcpiDsBuildInternalBufferObj (
306 ACPI_WALK_STATE *WalkState,
307 ACPI_PARSE_OBJECT *Op,
309 ACPI_OPERAND_OBJECT **ObjDescPtr);
312 AcpiDsBuildInternalPackageObj (
313 ACPI_WALK_STATE *WalkState,
314 ACPI_PARSE_OBJECT *op,
315 UINT32 PackageLength,
316 ACPI_OPERAND_OBJECT **ObjDesc);
319 AcpiDsInitObjectFromOp (
320 ACPI_WALK_STATE *WalkState,
321 ACPI_PARSE_OBJECT *Op,
323 ACPI_OPERAND_OBJECT **ObjDesc);
327 ACPI_WALK_STATE *WalkState,
328 ACPI_NAMESPACE_NODE *Node,
329 ACPI_PARSE_OBJECT *Op);
333 * dsutils - Parser/Interpreter interface utility routines
336 AcpiDsClearImplicitReturn (
337 ACPI_WALK_STATE *WalkState);
340 AcpiDsDoImplicitReturn (
341 ACPI_OPERAND_OBJECT *ReturnDesc,
342 ACPI_WALK_STATE *WalkState,
343 BOOLEAN AddReference);
347 ACPI_PARSE_OBJECT *Op,
348 ACPI_WALK_STATE *WalkState);
351 AcpiDsDeleteResultIfNotUsed (
352 ACPI_PARSE_OBJECT *Op,
353 ACPI_OPERAND_OBJECT *ResultObj,
354 ACPI_WALK_STATE *WalkState);
357 AcpiDsCreateOperand (
358 ACPI_WALK_STATE *WalkState,
359 ACPI_PARSE_OBJECT *Arg,
360 UINT32 ArgsRemaining);
363 AcpiDsCreateOperands (
364 ACPI_WALK_STATE *WalkState,
365 ACPI_PARSE_OBJECT *FirstArg);
368 AcpiDsResolveOperands (
369 ACPI_WALK_STATE *WalkState);
372 AcpiDsClearOperands (
373 ACPI_WALK_STATE *WalkState);
376 AcpiDsEvaluateNamePath (
377 ACPI_WALK_STATE *WalkState);
381 * dswscope - Scope Stack manipulation
384 AcpiDsScopeStackPush (
385 ACPI_NAMESPACE_NODE *Node,
386 ACPI_OBJECT_TYPE Type,
387 ACPI_WALK_STATE *WalkState);
391 AcpiDsScopeStackPop (
392 ACPI_WALK_STATE *WalkState);
395 AcpiDsScopeStackClear (
396 ACPI_WALK_STATE *WalkState);
400 * dswstate - parser WALK_STATE management routines
405 ACPI_WALK_STATE *WalkState);
410 ACPI_WALK_STATE *WalkState);
413 AcpiDsCreateWalkState (
414 ACPI_OWNER_ID OwnerId,
415 ACPI_PARSE_OBJECT *Origin,
416 ACPI_OPERAND_OBJECT *MthDesc,
417 ACPI_THREAD_STATE *Thread);
421 ACPI_WALK_STATE *WalkState,
422 ACPI_PARSE_OBJECT *Op,
423 ACPI_NAMESPACE_NODE *MethodNode,
426 ACPI_EVALUATE_INFO *Info,
430 AcpiDsObjStackPopAndDelete (
432 ACPI_WALK_STATE *WalkState);
435 AcpiDsDeleteWalkState (
436 ACPI_WALK_STATE *WalkState);
440 ACPI_THREAD_STATE *Thread);
443 AcpiDsPushWalkState (
444 ACPI_WALK_STATE *WalkState,
445 ACPI_THREAD_STATE *Thread);
448 AcpiDsResultStackClear (
449 ACPI_WALK_STATE *WalkState);
452 AcpiDsGetCurrentWalkState (
453 ACPI_THREAD_STATE *Thread);
457 ACPI_OPERAND_OBJECT **Object,
458 ACPI_WALK_STATE *WalkState);
462 ACPI_OPERAND_OBJECT *Object,
463 ACPI_WALK_STATE *WalkState);
465 #endif /* _ACDISPAT_H_ */