1 /******************************************************************************
3 * Name: acinterp.h - Interpreter subcomponent prototypes and defines
6 *****************************************************************************/
9 * Copyright (C) 2000, 2001 R. Byron Moore
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 #ifndef __ACINTERP_H__
27 #define __ACINTERP_H__
30 #define WALK_OPERANDS &(walk_state->operands [walk_state->num_operands -1])
33 /* Interpreter constants */
35 #define AML_END_OF_BLOCK -1
36 #define PUSH_PKG_LENGTH 1
37 #define DO_NOT_PUSH_PKG_LENGTH 0
41 #define STACK_BOTTOM (u32) -1
43 /* Constants for global "When_to_parse_methods" */
45 #define METHOD_PARSE_AT_INIT 0x0
46 #define METHOD_PARSE_JUST_IN_TIME 0x1
47 #define METHOD_DELETE_AT_COMPLETION 0x2
51 acpi_aml_resolve_operands (
53 ACPI_OPERAND_OBJECT **stack_ptr,
54 ACPI_WALK_STATE *walk_state);
58 * amxface - External interpreter interfaces
63 ACPI_TABLE_TYPE table_id);
66 acpi_aml_execute_method (
67 ACPI_NAMESPACE_NODE *method_node,
68 ACPI_OPERAND_OBJECT **params,
69 ACPI_OPERAND_OBJECT **return_obj_desc);
73 * amconvrt - object conversion
77 acpi_aml_convert_to_integer (
78 ACPI_OPERAND_OBJECT **obj_desc,
79 ACPI_WALK_STATE *walk_state);
82 acpi_aml_convert_to_buffer (
83 ACPI_OPERAND_OBJECT **obj_desc,
84 ACPI_WALK_STATE *walk_state);
87 acpi_aml_convert_to_string (
88 ACPI_OPERAND_OBJECT **obj_desc,
89 ACPI_WALK_STATE *walk_state);
92 acpi_aml_convert_to_target_type (
93 OBJECT_TYPE_INTERNAL destination_type,
94 ACPI_OPERAND_OBJECT **obj_desc,
95 ACPI_WALK_STATE *walk_state);
99 * amfield - ACPI AML (p-code) execution - field manipulation
103 acpi_aml_read_field (
104 ACPI_OPERAND_OBJECT *obj_desc,
110 u32 byte_granularity);
113 acpi_aml_write_field (
114 ACPI_OPERAND_OBJECT *obj_desc,
120 u32 byte_granularity);
123 acpi_aml_setup_field (
124 ACPI_OPERAND_OBJECT *obj_desc,
125 ACPI_OPERAND_OBJECT *rgn_desc,
126 u32 field_bit_width);
129 acpi_aml_read_field_data (
130 ACPI_OPERAND_OBJECT *obj_desc,
131 u32 field_byte_offset,
136 acpi_aml_access_named_field (
138 ACPI_HANDLE named_field,
143 * ammisc - ACPI AML (p-code) execution - specific opcodes
147 acpi_aml_exec_create_field (
150 ACPI_NAMESPACE_NODE *node,
151 ACPI_WALK_STATE *walk_state);
154 acpi_aml_exec_reconfiguration (
156 ACPI_WALK_STATE *walk_state);
159 acpi_aml_exec_fatal (
160 ACPI_WALK_STATE *walk_state);
163 acpi_aml_exec_index (
164 ACPI_WALK_STATE *walk_state,
165 ACPI_OPERAND_OBJECT **return_desc);
168 acpi_aml_exec_match (
169 ACPI_WALK_STATE *walk_state,
170 ACPI_OPERAND_OBJECT **return_desc);
173 acpi_aml_exec_create_mutex (
174 ACPI_WALK_STATE *walk_state);
177 acpi_aml_exec_create_processor (
178 ACPI_PARSE_OBJECT *op,
179 ACPI_HANDLE processor_nTE);
182 acpi_aml_exec_create_power_resource (
183 ACPI_PARSE_OBJECT *op,
184 ACPI_HANDLE processor_nTE);
187 acpi_aml_exec_create_region (
191 ACPI_WALK_STATE *walk_state);
194 acpi_aml_exec_create_event (
195 ACPI_WALK_STATE *walk_state);
198 acpi_aml_exec_create_alias (
199 ACPI_WALK_STATE *walk_state);
202 acpi_aml_exec_create_method (
210 * ammutex - mutex support
214 acpi_aml_acquire_mutex (
215 ACPI_OPERAND_OBJECT *time_desc,
216 ACPI_OPERAND_OBJECT *obj_desc,
217 ACPI_WALK_STATE *walk_state);
220 acpi_aml_release_mutex (
221 ACPI_OPERAND_OBJECT *obj_desc,
222 ACPI_WALK_STATE *walk_state);
225 acpi_aml_release_all_mutexes (
226 ACPI_OPERAND_OBJECT *mutex_list);
229 acpi_aml_unlink_mutex (
230 ACPI_OPERAND_OBJECT *obj_desc);
234 * amprep - ACPI AML (p-code) execution - prep utilities
238 acpi_aml_prep_def_field_value (
239 ACPI_NAMESPACE_NODE *node,
247 acpi_aml_prep_bank_field_value (
248 ACPI_NAMESPACE_NODE *node,
250 ACPI_HANDLE bank_reg,
258 acpi_aml_prep_index_field_value (
259 ACPI_NAMESPACE_NODE *node,
260 ACPI_HANDLE index_reg,
261 ACPI_HANDLE data_reg,
269 * amsystem - Interface to OS services
273 acpi_aml_system_do_notify_op (
274 ACPI_OPERAND_OBJECT *value,
275 ACPI_OPERAND_OBJECT *obj_desc);
278 acpi_aml_system_do_suspend(
282 acpi_aml_system_do_stall (
286 acpi_aml_system_acquire_mutex(
287 ACPI_OPERAND_OBJECT *time,
288 ACPI_OPERAND_OBJECT *obj_desc);
291 acpi_aml_system_release_mutex(
292 ACPI_OPERAND_OBJECT *obj_desc);
295 acpi_aml_system_signal_event(
296 ACPI_OPERAND_OBJECT *obj_desc);
299 acpi_aml_system_wait_event(
300 ACPI_OPERAND_OBJECT *time,
301 ACPI_OPERAND_OBJECT *obj_desc);
304 acpi_aml_system_reset_event(
305 ACPI_OPERAND_OBJECT *obj_desc);
308 acpi_aml_system_wait_semaphore (
309 ACPI_HANDLE semaphore,
314 * ammonadic - ACPI AML (p-code) execution, monadic operators
318 acpi_aml_exec_monadic1 (
320 ACPI_WALK_STATE *walk_state);
323 acpi_aml_exec_monadic2 (
325 ACPI_WALK_STATE *walk_state,
326 ACPI_OPERAND_OBJECT **return_desc);
329 acpi_aml_exec_monadic2_r (
331 ACPI_WALK_STATE *walk_state,
332 ACPI_OPERAND_OBJECT **return_desc);
336 * amdyadic - ACPI AML (p-code) execution, dyadic operators
340 acpi_aml_exec_dyadic1 (
342 ACPI_WALK_STATE *walk_state);
345 acpi_aml_exec_dyadic2 (
347 ACPI_WALK_STATE *walk_state,
348 ACPI_OPERAND_OBJECT **return_desc);
351 acpi_aml_exec_dyadic2_r (
353 ACPI_WALK_STATE *walk_state,
354 ACPI_OPERAND_OBJECT **return_desc);
357 acpi_aml_exec_dyadic2_s (
359 ACPI_WALK_STATE *walk_state,
360 ACPI_OPERAND_OBJECT **return_desc);
364 * amresolv - Object resolution and get value functions
368 acpi_aml_resolve_to_value (
369 ACPI_OPERAND_OBJECT **stack_ptr,
370 ACPI_WALK_STATE *walk_state);
373 acpi_aml_resolve_node_to_value (
374 ACPI_NAMESPACE_NODE **stack_ptr,
375 ACPI_WALK_STATE *walk_state);
378 acpi_aml_resolve_object_to_value (
379 ACPI_OPERAND_OBJECT **stack_ptr,
380 ACPI_WALK_STATE *walk_state);
383 acpi_aml_get_field_unit_value (
384 ACPI_OPERAND_OBJECT *field_desc,
385 ACPI_OPERAND_OBJECT *result_desc);
389 * amdump - Scanner debug output routines
393 acpi_aml_show_hex_value (
400 acpi_aml_dump_operand (
401 ACPI_OPERAND_OBJECT *entry_desc);
404 acpi_aml_dump_operands (
405 ACPI_OPERAND_OBJECT **operands,
406 OPERATING_MODE interpreter_mode,
410 NATIVE_CHAR *module_name,
414 acpi_aml_dump_object_descriptor (
415 ACPI_OPERAND_OBJECT *object,
421 ACPI_NAMESPACE_NODE *node,
426 * amnames - interpreter/scanner name load/execute
430 acpi_aml_allocate_name_string (
439 acpi_aml_exec_name_segment (
441 NATIVE_CHAR *name_string);
444 acpi_aml_get_name_string (
445 OBJECT_TYPE_INTERNAL data_type,
447 NATIVE_CHAR **out_name_string,
448 u32 *out_name_length);
452 ACPI_OBJECT_TYPE data_type,
453 OPERATING_MODE load_exec_mode);
457 * amstore - Object store support
461 acpi_aml_exec_store (
462 ACPI_OPERAND_OBJECT *val_desc,
463 ACPI_OPERAND_OBJECT *dest_desc,
464 ACPI_WALK_STATE *walk_state);
467 acpi_aml_store_object_to_index (
468 ACPI_OPERAND_OBJECT *val_desc,
469 ACPI_OPERAND_OBJECT *dest_desc,
470 ACPI_WALK_STATE *walk_state);
473 acpi_aml_store_object_to_node (
474 ACPI_OPERAND_OBJECT *source_desc,
475 ACPI_NAMESPACE_NODE *node,
476 ACPI_WALK_STATE *walk_state);
479 acpi_aml_store_object_to_object (
480 ACPI_OPERAND_OBJECT *source_desc,
481 ACPI_OPERAND_OBJECT *dest_desc,
482 ACPI_WALK_STATE *walk_state);
490 acpi_aml_resolve_object (
491 ACPI_OPERAND_OBJECT **source_desc_ptr,
492 OBJECT_TYPE_INTERNAL target_type,
493 ACPI_WALK_STATE *walk_state);
496 acpi_aml_store_object (
497 ACPI_OPERAND_OBJECT *source_desc,
498 OBJECT_TYPE_INTERNAL target_type,
499 ACPI_OPERAND_OBJECT **target_desc_ptr,
500 ACPI_WALK_STATE *walk_state);
504 * amcopy - object copy
508 acpi_aml_copy_buffer_to_buffer (
509 ACPI_OPERAND_OBJECT *source_desc,
510 ACPI_OPERAND_OBJECT *target_desc);
513 acpi_aml_copy_string_to_string (
514 ACPI_OPERAND_OBJECT *source_desc,
515 ACPI_OPERAND_OBJECT *target_desc);
518 acpi_aml_copy_integer_to_index_field (
519 ACPI_OPERAND_OBJECT *source_desc,
520 ACPI_OPERAND_OBJECT *target_desc);
523 acpi_aml_copy_integer_to_bank_field (
524 ACPI_OPERAND_OBJECT *source_desc,
525 ACPI_OPERAND_OBJECT *target_desc);
528 acpi_aml_copy_data_to_named_field (
529 ACPI_OPERAND_OBJECT *source_desc,
530 ACPI_NAMESPACE_NODE *node);
533 acpi_aml_copy_integer_to_field_unit (
534 ACPI_OPERAND_OBJECT *source_desc,
535 ACPI_OPERAND_OBJECT *target_desc);
538 * amutils - interpreter/scanner utilities
542 acpi_aml_enter_interpreter (
546 acpi_aml_exit_interpreter (
550 acpi_aml_truncate_for32bit_table (
551 ACPI_OPERAND_OBJECT *obj_desc,
552 ACPI_WALK_STATE *walk_state);
555 acpi_aml_validate_object_type (
556 ACPI_OBJECT_TYPE type);
559 acpi_aml_acquire_global_lock (
563 acpi_aml_release_global_lock (
567 acpi_aml_digits_needed (
572 acpi_aml_eisa_id_to_string (
574 NATIVE_CHAR *out_string);
577 acpi_aml_unsigned_integer_to_string (
579 NATIVE_CHAR *out_string);
583 * amregion - default Op_region handlers
587 acpi_aml_system_memory_space_handler (
589 ACPI_PHYSICAL_ADDRESS address,
592 void *handler_context,
593 void *region_context);
596 acpi_aml_system_io_space_handler (
598 ACPI_PHYSICAL_ADDRESS address,
601 void *handler_context,
602 void *region_context);
605 acpi_aml_pci_config_space_handler (
607 ACPI_PHYSICAL_ADDRESS address,
610 void *handler_context,
611 void *region_context);
614 acpi_aml_embedded_controller_space_handler (
616 ACPI_PHYSICAL_ADDRESS address,
619 void *handler_context,
620 void *region_context);
623 acpi_aml_sm_bus_space_handler (
625 ACPI_PHYSICAL_ADDRESS address,
628 void *handler_context,
629 void *region_context);
632 #endif /* __INTERP_H__ */