// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 /****************************************************************************** * * Module Name: exstore - AML Interpreter object store support * * Copyright (C) 2000 - 2023, Intel Corp. * *****************************************************************************/ #include <acpi/acpi.h> #include "accommon.h" #include "acdispat.h" #include "acinterp.h" #include "amlcode.h" #include "acnamesp.h" #define _COMPONENT … ACPI_MODULE_NAME("exstore") /* Local prototypes */ static acpi_status acpi_ex_store_object_to_index(union acpi_operand_object *val_desc, union acpi_operand_object *dest_desc, struct acpi_walk_state *walk_state); static acpi_status acpi_ex_store_direct_to_node(union acpi_operand_object *source_desc, struct acpi_namespace_node *node, struct acpi_walk_state *walk_state); /******************************************************************************* * * FUNCTION: acpi_ex_store * * PARAMETERS: *source_desc - Value to be stored * *dest_desc - Where to store it. Must be an NS node * or union acpi_operand_object of type * Reference; * walk_state - Current walk state * * RETURN: Status * * DESCRIPTION: Store the value described by source_desc into the location * described by dest_desc. Called by various interpreter * functions to store the result of an operation into * the destination operand -- not just simply the actual "Store" * ASL operator. * ******************************************************************************/ acpi_status acpi_ex_store(union acpi_operand_object *source_desc, union acpi_operand_object *dest_desc, struct acpi_walk_state *walk_state) { … } /******************************************************************************* * * FUNCTION: acpi_ex_store_object_to_index * * PARAMETERS: *source_desc - Value to be stored * *dest_desc - Named object to receive the value * walk_state - Current walk state * * RETURN: Status * * DESCRIPTION: Store the object to indexed Buffer or Package element * ******************************************************************************/ static acpi_status acpi_ex_store_object_to_index(union acpi_operand_object *source_desc, union acpi_operand_object *index_desc, struct acpi_walk_state *walk_state) { … } /******************************************************************************* * * FUNCTION: acpi_ex_store_object_to_node * * PARAMETERS: source_desc - Value to be stored * node - Named object to receive the value * walk_state - Current walk state * implicit_conversion - Perform implicit conversion (yes/no) * * RETURN: Status * * DESCRIPTION: Store the object to the named object. * * The assignment of an object to a named object is handled here. * The value passed in will replace the current value (if any) * with the input value. * * When storing into an object the data is converted to the * target object type then stored in the object. This means * that the target object type (for an initialized target) will * not be changed by a store operation. A copy_object can change * the target type, however. * * The implicit_conversion flag is set to NO/FALSE only when * storing to an arg_x -- as per the rules of the ACPI spec. * * Assumes parameters are already validated. * ******************************************************************************/ acpi_status acpi_ex_store_object_to_node(union acpi_operand_object *source_desc, struct acpi_namespace_node *node, struct acpi_walk_state *walk_state, u8 implicit_conversion) { … } /******************************************************************************* * * FUNCTION: acpi_ex_store_direct_to_node * * PARAMETERS: source_desc - Value to be stored * node - Named object to receive the value * walk_state - Current walk state * * RETURN: Status * * DESCRIPTION: "Store" an object directly to a node. This involves a copy * and an attach. * ******************************************************************************/ static acpi_status acpi_ex_store_direct_to_node(union acpi_operand_object *source_desc, struct acpi_namespace_node *node, struct acpi_walk_state *walk_state) { … }