Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Added Kitten
[palacios-OLD.git] / kitten / include / acpi / acdispat.h
1 /******************************************************************************
2  *
3  * Name: acdispat.h - dispatcher (parser to interpreter interface)
4  *
5  *****************************************************************************/
6
7 /*
8  * Copyright (C) 2000 - 2006, R. Byron Moore
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions, and the following disclaimer,
16  *    without modification.
17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18  *    substantially similar to the "NO WARRANTY" disclaimer below
19  *    ("Disclaimer") and any redistribution must be conditioned upon
20  *    including a substantially similar Disclaimer requirement for further
21  *    binary redistribution.
22  * 3. Neither the names of the above-listed copyright holders nor the names
23  *    of any contributors may be used to endorse or promote products derived
24  *    from this software without specific prior written permission.
25  *
26  * Alternatively, this software may be distributed under the terms of the
27  * GNU General Public License ("GPL") version 2 as published by the Free
28  * Software Foundation.
29  *
30  * NO WARRANTY
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33  * LIMITED TO, THE IMPLIED WARRANTIES OF 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.
42  */
43
44 #ifndef _ACDISPAT_H_
45 #define _ACDISPAT_H_
46
47 #define NAMEOF_LOCAL_NTE    "__L0"
48 #define NAMEOF_ARG_NTE      "__A0"
49
50 /*
51  * dsopcode - support for late evaluation
52  */
53 acpi_status
54 acpi_ds_get_buffer_field_arguments(union acpi_operand_object *obj_desc);
55
56 acpi_status acpi_ds_get_region_arguments(union acpi_operand_object *rgn_desc);
57
58 acpi_status acpi_ds_get_buffer_arguments(union acpi_operand_object *obj_desc);
59
60 acpi_status acpi_ds_get_package_arguments(union acpi_operand_object *obj_desc);
61
62 acpi_status
63 acpi_ds_eval_buffer_field_operands(struct acpi_walk_state *walk_state,
64                                    union acpi_parse_object *op);
65
66 acpi_status
67 acpi_ds_eval_region_operands(struct acpi_walk_state *walk_state,
68                              union acpi_parse_object *op);
69
70 acpi_status
71 acpi_ds_eval_data_object_operands(struct acpi_walk_state *walk_state,
72                                   union acpi_parse_object *op,
73                                   union acpi_operand_object *obj_desc);
74
75 acpi_status acpi_ds_initialize_region(acpi_handle obj_handle);
76
77 /*
78  * dsctrl - Parser/Interpreter interface, control stack routines
79  */
80 acpi_status
81 acpi_ds_exec_begin_control_op(struct acpi_walk_state *walk_state,
82                               union acpi_parse_object *op);
83
84 acpi_status
85 acpi_ds_exec_end_control_op(struct acpi_walk_state *walk_state,
86                             union acpi_parse_object *op);
87
88 /*
89  * dsexec - Parser/Interpreter interface, method execution callbacks
90  */
91 acpi_status
92 acpi_ds_get_predicate_value(struct acpi_walk_state *walk_state,
93                             union acpi_operand_object *result_obj);
94
95 acpi_status
96 acpi_ds_exec_begin_op(struct acpi_walk_state *walk_state,
97                       union acpi_parse_object **out_op);
98
99 acpi_status acpi_ds_exec_end_op(struct acpi_walk_state *state);
100
101 /*
102  * dsfield - Parser/Interpreter interface for AML fields
103  */
104 acpi_status
105 acpi_ds_create_field(union acpi_parse_object *op,
106                      struct acpi_namespace_node *region_node,
107                      struct acpi_walk_state *walk_state);
108
109 acpi_status
110 acpi_ds_create_bank_field(union acpi_parse_object *op,
111                           struct acpi_namespace_node *region_node,
112                           struct acpi_walk_state *walk_state);
113
114 acpi_status
115 acpi_ds_create_index_field(union acpi_parse_object *op,
116                            struct acpi_namespace_node *region_node,
117                            struct acpi_walk_state *walk_state);
118
119 acpi_status
120 acpi_ds_create_buffer_field(union acpi_parse_object *op,
121                             struct acpi_walk_state *walk_state);
122
123 acpi_status
124 acpi_ds_init_field_objects(union acpi_parse_object *op,
125                            struct acpi_walk_state *walk_state);
126
127 /*
128  * dsload - Parser/Interpreter interface, namespace load callbacks
129  */
130 acpi_status
131 acpi_ds_load1_begin_op(struct acpi_walk_state *walk_state,
132                        union acpi_parse_object **out_op);
133
134 acpi_status acpi_ds_load1_end_op(struct acpi_walk_state *walk_state);
135
136 acpi_status
137 acpi_ds_load2_begin_op(struct acpi_walk_state *walk_state,
138                        union acpi_parse_object **out_op);
139
140 acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state);
141
142 acpi_status
143 acpi_ds_init_callbacks(struct acpi_walk_state *walk_state, u32 pass_number);
144
145 /*
146  * dsmthdat - method data (locals/args)
147  */
148 acpi_status
149 acpi_ds_store_object_to_local(u16 opcode,
150                               u32 index,
151                               union acpi_operand_object *src_desc,
152                               struct acpi_walk_state *walk_state);
153
154 acpi_status
155 acpi_ds_method_data_get_entry(u16 opcode,
156                               u32 index,
157                               struct acpi_walk_state *walk_state,
158                               union acpi_operand_object ***node);
159
160 void acpi_ds_method_data_delete_all(struct acpi_walk_state *walk_state);
161
162 u8 acpi_ds_is_method_value(union acpi_operand_object *obj_desc);
163
164 acpi_status
165 acpi_ds_method_data_get_value(u16 opcode,
166                               u32 index,
167                               struct acpi_walk_state *walk_state,
168                               union acpi_operand_object **dest_desc);
169
170 acpi_status
171 acpi_ds_method_data_init_args(union acpi_operand_object **params,
172                               u32 max_param_count,
173                               struct acpi_walk_state *walk_state);
174
175 acpi_status
176 acpi_ds_method_data_get_node(u16 opcode,
177                              u32 index,
178                              struct acpi_walk_state *walk_state,
179                              struct acpi_namespace_node **node);
180
181 void acpi_ds_method_data_init(struct acpi_walk_state *walk_state);
182
183 /*
184  * dsmethod - Parser/Interpreter interface - control method parsing
185  */
186 acpi_status acpi_ds_parse_method(struct acpi_namespace_node *node);
187
188 acpi_status
189 acpi_ds_call_control_method(struct acpi_thread_state *thread,
190                             struct acpi_walk_state *walk_state,
191                             union acpi_parse_object *op);
192
193 acpi_status
194 acpi_ds_restart_control_method(struct acpi_walk_state *walk_state,
195                                union acpi_operand_object *return_desc);
196
197 void
198 acpi_ds_terminate_control_method(union acpi_operand_object *method_desc,
199                                  struct acpi_walk_state *walk_state);
200
201 acpi_status
202 acpi_ds_begin_method_execution(struct acpi_namespace_node *method_node,
203                                union acpi_operand_object *obj_desc,
204                                struct acpi_walk_state *walk_state);
205
206 acpi_status
207 acpi_ds_method_error(acpi_status status, struct acpi_walk_state *walk_state);
208
209 /*
210  * dsinit
211  */
212 acpi_status
213 acpi_ds_initialize_objects(struct acpi_table_desc *table_desc,
214                            struct acpi_namespace_node *start_node);
215
216 /*
217  * dsobject - Parser/Interpreter interface - object initialization and conversion
218  */
219 acpi_status
220 acpi_ds_build_internal_buffer_obj(struct acpi_walk_state *walk_state,
221                                   union acpi_parse_object *op,
222                                   u32 buffer_length,
223                                   union acpi_operand_object **obj_desc_ptr);
224
225 acpi_status
226 acpi_ds_build_internal_package_obj(struct acpi_walk_state *walk_state,
227                                    union acpi_parse_object *op,
228                                    u32 package_length,
229                                    union acpi_operand_object **obj_desc);
230
231 acpi_status
232 acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state,
233                             union acpi_parse_object *op,
234                             u16 opcode, union acpi_operand_object **obj_desc);
235
236 acpi_status
237 acpi_ds_create_node(struct acpi_walk_state *walk_state,
238                     struct acpi_namespace_node *node,
239                     union acpi_parse_object *op);
240
241 /*
242  * dsutils - Parser/Interpreter interface utility routines
243  */
244 void acpi_ds_clear_implicit_return(struct acpi_walk_state *walk_state);
245
246 u8
247 acpi_ds_do_implicit_return(union acpi_operand_object *return_desc,
248                            struct acpi_walk_state *walk_state,
249                            u8 add_reference);
250
251 u8
252 acpi_ds_is_result_used(union acpi_parse_object *op,
253                        struct acpi_walk_state *walk_state);
254
255 void
256 acpi_ds_delete_result_if_not_used(union acpi_parse_object *op,
257                                   union acpi_operand_object *result_obj,
258                                   struct acpi_walk_state *walk_state);
259
260 acpi_status
261 acpi_ds_create_operand(struct acpi_walk_state *walk_state,
262                        union acpi_parse_object *arg, u32 args_remaining);
263
264 acpi_status
265 acpi_ds_create_operands(struct acpi_walk_state *walk_state,
266                         union acpi_parse_object *first_arg);
267
268 acpi_status acpi_ds_resolve_operands(struct acpi_walk_state *walk_state);
269
270 void acpi_ds_clear_operands(struct acpi_walk_state *walk_state);
271
272 /*
273  * dswscope - Scope Stack manipulation
274  */
275 acpi_status
276 acpi_ds_scope_stack_push(struct acpi_namespace_node *node,
277                          acpi_object_type type,
278                          struct acpi_walk_state *walk_state);
279
280 acpi_status acpi_ds_scope_stack_pop(struct acpi_walk_state *walk_state);
281
282 void acpi_ds_scope_stack_clear(struct acpi_walk_state *walk_state);
283
284 /*
285  * dswstate - parser WALK_STATE management routines
286  */
287 acpi_status
288 acpi_ds_obj_stack_push(void *object, struct acpi_walk_state *walk_state);
289
290 acpi_status
291 acpi_ds_obj_stack_pop(u32 pop_count, struct acpi_walk_state *walk_state);
292
293 struct acpi_walk_state *acpi_ds_create_walk_state(acpi_owner_id owner_id,
294                                                   union acpi_parse_object
295                                                   *origin,
296                                                   union acpi_operand_object
297                                                   *mth_desc,
298                                                   struct acpi_thread_state
299                                                   *thread);
300
301 acpi_status
302 acpi_ds_init_aml_walk(struct acpi_walk_state *walk_state,
303                       union acpi_parse_object *op,
304                       struct acpi_namespace_node *method_node,
305                       u8 * aml_start,
306                       u32 aml_length,
307                       struct acpi_evaluate_info *info, u8 pass_number);
308
309 acpi_status
310 acpi_ds_obj_stack_pop_and_delete(u32 pop_count,
311                                  struct acpi_walk_state *walk_state);
312
313 void acpi_ds_delete_walk_state(struct acpi_walk_state *walk_state);
314
315 struct acpi_walk_state *acpi_ds_pop_walk_state(struct acpi_thread_state
316                                                *thread);
317
318 void
319 acpi_ds_push_walk_state(struct acpi_walk_state *walk_state,
320                         struct acpi_thread_state *thread);
321
322 acpi_status acpi_ds_result_stack_pop(struct acpi_walk_state *walk_state);
323
324 acpi_status acpi_ds_result_stack_push(struct acpi_walk_state *walk_state);
325
326 acpi_status acpi_ds_result_stack_clear(struct acpi_walk_state *walk_state);
327
328 struct acpi_walk_state *acpi_ds_get_current_walk_state(struct acpi_thread_state
329                                                        *thread);
330
331 #ifdef ACPI_FUTURE_USAGE
332 acpi_status
333 acpi_ds_result_remove(union acpi_operand_object **object,
334                       u32 index, struct acpi_walk_state *walk_state);
335 #endif
336
337 acpi_status
338 acpi_ds_result_pop(union acpi_operand_object **object,
339                    struct acpi_walk_state *walk_state);
340
341 acpi_status
342 acpi_ds_result_push(union acpi_operand_object *object,
343                     struct acpi_walk_state *walk_state);
344
345 acpi_status
346 acpi_ds_result_pop_from_bottom(union acpi_operand_object **object,
347                                struct acpi_walk_state *walk_state);
348
349 #endif                          /* _ACDISPAT_H_ */