brintos

brintos / linux-shallow public Read only

0
0
Text · 9.8 KiB · 73eecbf Raw
345 lines · c
1/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */2/******************************************************************************3 *4 * Name: acdispat.h - dispatcher (parser to interpreter interface)5 *6 * Copyright (C) 2000 - 2023, Intel Corp.7 *8 *****************************************************************************/9 10#ifndef _ACDISPAT_H_11#define _ACDISPAT_H_12 13#define NAMEOF_LOCAL_NTE    "__L0"14#define NAMEOF_ARG_NTE      "__A0"15 16/*17 * dsargs - execution of dynamic arguments for static objects18 */19acpi_status20acpi_ds_get_buffer_field_arguments(union acpi_operand_object *obj_desc);21 22acpi_status23acpi_ds_get_bank_field_arguments(union acpi_operand_object *obj_desc);24 25acpi_status acpi_ds_get_region_arguments(union acpi_operand_object *rgn_desc);26 27acpi_status acpi_ds_get_buffer_arguments(union acpi_operand_object *obj_desc);28 29acpi_status acpi_ds_get_package_arguments(union acpi_operand_object *obj_desc);30 31/*32 * dscontrol - support for execution control opcodes33 */34acpi_status35acpi_ds_exec_begin_control_op(struct acpi_walk_state *walk_state,36			      union acpi_parse_object *op);37 38acpi_status39acpi_ds_exec_end_control_op(struct acpi_walk_state *walk_state,40			    union acpi_parse_object *op);41 42/*43 * dsopcode - support for late operand evaluation44 */45acpi_status46acpi_ds_eval_buffer_field_operands(struct acpi_walk_state *walk_state,47				   union acpi_parse_object *op);48 49acpi_status50acpi_ds_eval_region_operands(struct acpi_walk_state *walk_state,51			     union acpi_parse_object *op);52 53acpi_status54acpi_ds_eval_table_region_operands(struct acpi_walk_state *walk_state,55				   union acpi_parse_object *op);56 57acpi_status58acpi_ds_eval_data_object_operands(struct acpi_walk_state *walk_state,59				  union acpi_parse_object *op,60				  union acpi_operand_object *obj_desc);61 62acpi_status63acpi_ds_eval_bank_field_operands(struct acpi_walk_state *walk_state,64				 union acpi_parse_object *op);65 66acpi_status acpi_ds_initialize_region(acpi_handle obj_handle);67 68/*69 * dsexec - Parser/Interpreter interface, method execution callbacks70 */71acpi_status72acpi_ds_get_predicate_value(struct acpi_walk_state *walk_state,73			    union acpi_operand_object *result_obj);74 75acpi_status76acpi_ds_exec_begin_op(struct acpi_walk_state *walk_state,77		      union acpi_parse_object **out_op);78 79acpi_status acpi_ds_exec_end_op(struct acpi_walk_state *state);80 81/*82 * dsfield - Parser/Interpreter interface for AML fields83 */84acpi_status85acpi_ds_create_field(union acpi_parse_object *op,86		     struct acpi_namespace_node *region_node,87		     struct acpi_walk_state *walk_state);88 89acpi_status90acpi_ds_create_bank_field(union acpi_parse_object *op,91			  struct acpi_namespace_node *region_node,92			  struct acpi_walk_state *walk_state);93 94acpi_status95acpi_ds_create_index_field(union acpi_parse_object *op,96			   struct acpi_namespace_node *region_node,97			   struct acpi_walk_state *walk_state);98 99acpi_status100acpi_ds_create_buffer_field(union acpi_parse_object *op,101			    struct acpi_walk_state *walk_state);102 103acpi_status104acpi_ds_init_field_objects(union acpi_parse_object *op,105			   struct acpi_walk_state *walk_state);106 107/*108 * dsload - Parser/Interpreter interface109 */110acpi_status111acpi_ds_init_callbacks(struct acpi_walk_state *walk_state, u32 pass_number);112 113/* dsload - pass 1 namespace load callbacks */114 115acpi_status116acpi_ds_load1_begin_op(struct acpi_walk_state *walk_state,117		       union acpi_parse_object **out_op);118 119acpi_status acpi_ds_load1_end_op(struct acpi_walk_state *walk_state);120 121/* dsload - pass 2 namespace load callbacks */122 123acpi_status124acpi_ds_load2_begin_op(struct acpi_walk_state *walk_state,125		       union acpi_parse_object **out_op);126 127acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state);128 129/*130 * dsmthdat - method data (locals/args)131 */132acpi_status133acpi_ds_store_object_to_local(u8 type,134			      u32 index,135			      union acpi_operand_object *src_desc,136			      struct acpi_walk_state *walk_state);137 138acpi_status139acpi_ds_method_data_get_entry(u16 opcode,140			      u32 index,141			      struct acpi_walk_state *walk_state,142			      union acpi_operand_object ***node);143 144void acpi_ds_method_data_delete_all(struct acpi_walk_state *walk_state);145 146u8 acpi_ds_is_method_value(union acpi_operand_object *obj_desc);147 148acpi_status149acpi_ds_method_data_get_value(u8 type,150			      u32 index,151			      struct acpi_walk_state *walk_state,152			      union acpi_operand_object **dest_desc);153 154acpi_status155acpi_ds_method_data_init_args(union acpi_operand_object **params,156			      u32 max_param_count,157			      struct acpi_walk_state *walk_state);158 159acpi_status160acpi_ds_method_data_get_node(u8 type,161			     u32 index,162			     struct acpi_walk_state *walk_state,163			     struct acpi_namespace_node **node);164 165void acpi_ds_method_data_init(struct acpi_walk_state *walk_state);166 167/*168 * dsmethod - Parser/Interpreter interface - control method parsing169 */170acpi_status171acpi_ds_auto_serialize_method(struct acpi_namespace_node *node,172			      union acpi_operand_object *obj_desc);173 174acpi_status175acpi_ds_call_control_method(struct acpi_thread_state *thread,176			    struct acpi_walk_state *walk_state,177			    union acpi_parse_object *op);178 179acpi_status180acpi_ds_restart_control_method(struct acpi_walk_state *walk_state,181			       union acpi_operand_object *return_desc);182 183void184acpi_ds_terminate_control_method(union acpi_operand_object *method_desc,185				 struct acpi_walk_state *walk_state);186 187acpi_status188acpi_ds_begin_method_execution(struct acpi_namespace_node *method_node,189			       union acpi_operand_object *obj_desc,190			       struct acpi_walk_state *walk_state);191 192acpi_status193acpi_ds_method_error(acpi_status status, struct acpi_walk_state *walk_state);194 195/*196 * dsinit197 */198acpi_status199acpi_ds_initialize_objects(u32 table_index,200			   struct acpi_namespace_node *start_node);201 202/*203 * dsobject - Parser/Interpreter interface - object initialization and conversion204 */205acpi_status206acpi_ds_build_internal_object(struct acpi_walk_state *walk_state,207			      union acpi_parse_object *op,208			      union acpi_operand_object **obj_desc_ptr);209 210acpi_status211acpi_ds_build_internal_buffer_obj(struct acpi_walk_state *walk_state,212				  union acpi_parse_object *op,213				  u32 buffer_length,214				  union acpi_operand_object **obj_desc_ptr);215 216acpi_status217acpi_ds_build_internal_package_obj(struct acpi_walk_state *walk_state,218				   union acpi_parse_object *op,219				   u32 package_length,220				   union acpi_operand_object **obj_desc);221 222acpi_status223acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state,224			    union acpi_parse_object *op,225			    u16 opcode, union acpi_operand_object **obj_desc);226 227acpi_status228acpi_ds_create_node(struct acpi_walk_state *walk_state,229		    struct acpi_namespace_node *node,230		    union acpi_parse_object *op);231 232/*233 * dspkginit - Package object initialization234 */235acpi_status236acpi_ds_init_package_element(u8 object_type,237			     union acpi_operand_object *source_object,238			     union acpi_generic_state *state, void *context);239 240/*241 * dsutils - Parser/Interpreter interface utility routines242 */243void acpi_ds_clear_implicit_return(struct acpi_walk_state *walk_state);244 245u8246acpi_ds_do_implicit_return(union acpi_operand_object *return_desc,247			   struct acpi_walk_state *walk_state,248			   u8 add_reference);249 250u8251acpi_ds_is_result_used(union acpi_parse_object *op,252		       struct acpi_walk_state *walk_state);253 254void255acpi_ds_delete_result_if_not_used(union acpi_parse_object *op,256				  union acpi_operand_object *result_obj,257				  struct acpi_walk_state *walk_state);258 259acpi_status260acpi_ds_create_operand(struct acpi_walk_state *walk_state,261		       union acpi_parse_object *arg, u32 args_remaining);262 263acpi_status264acpi_ds_create_operands(struct acpi_walk_state *walk_state,265			union acpi_parse_object *first_arg);266 267acpi_status acpi_ds_resolve_operands(struct acpi_walk_state *walk_state);268 269void acpi_ds_clear_operands(struct acpi_walk_state *walk_state);270 271acpi_status acpi_ds_evaluate_name_path(struct acpi_walk_state *walk_state);272 273/*274 * dswscope - Scope Stack manipulation275 */276acpi_status277acpi_ds_scope_stack_push(struct acpi_namespace_node *node,278			 acpi_object_type type,279			 struct acpi_walk_state *walk_state);280 281acpi_status acpi_ds_scope_stack_pop(struct acpi_walk_state *walk_state);282 283void acpi_ds_scope_stack_clear(struct acpi_walk_state *walk_state);284 285/*286 * dswstate - parser WALK_STATE management routines287 */288acpi_status289acpi_ds_obj_stack_push(void *object, struct acpi_walk_state *walk_state);290 291acpi_status292acpi_ds_obj_stack_pop(u32 pop_count, struct acpi_walk_state *walk_state);293 294struct acpi_walk_state * acpi_ds_create_walk_state(acpi_owner_id owner_id,295						   union acpi_parse_object296						   *origin,297						   union acpi_operand_object298						   *mth_desc,299						   struct acpi_thread_state300						   *thread);301 302acpi_status303acpi_ds_init_aml_walk(struct acpi_walk_state *walk_state,304		      union acpi_parse_object *op,305		      struct acpi_namespace_node *method_node,306		      u8 * aml_start,307		      u32 aml_length,308		      struct acpi_evaluate_info *info, u8 pass_number);309 310void311acpi_ds_obj_stack_pop_and_delete(u32 pop_count,312				 struct acpi_walk_state *walk_state);313 314void acpi_ds_delete_walk_state(struct acpi_walk_state *walk_state);315 316struct acpi_walk_state *acpi_ds_pop_walk_state(struct acpi_thread_state317					       *thread);318 319void320acpi_ds_push_walk_state(struct acpi_walk_state *walk_state,321			struct acpi_thread_state *thread);322 323acpi_status acpi_ds_result_stack_clear(struct acpi_walk_state *walk_state);324 325struct acpi_walk_state *acpi_ds_get_current_walk_state(struct acpi_thread_state326						       *thread);327 328acpi_status329acpi_ds_result_pop(union acpi_operand_object **object,330		   struct acpi_walk_state *walk_state);331 332acpi_status333acpi_ds_result_push(union acpi_operand_object *object,334		    struct acpi_walk_state *walk_state);335 336/*337 * dsdebug - parser debugging routines338 */339void340acpi_ds_dump_method_stack(acpi_status status,341			  struct acpi_walk_state *walk_state,342			  union acpi_parse_object *op);343 344#endif				/* _ACDISPAT_H_ */345