/* * Note: There is different store behavior depending on the original * source type */ 
acpi_ex_store_object_to_object (	union acpi_operand_object       *source_desc,	union acpi_operand_object       *dest_desc,	union acpi_operand_object       **new_desc,	struct acpi_walk_state          *walk_state){	union acpi_operand_object       *actual_src_desc;	acpi_status                     status = AE_OK;	ACPI_FUNCTION_TRACE_PTR ("ex_store_object_to_object", source_desc);	actual_src_desc = source_desc;	if (!dest_desc) {		/*		 * There is no destination object (An uninitialized node or		 * package element), so we can simply copy the source object		 * creating a new destination object		 */		status = acpi_ut_copy_iobject_to_iobject (actual_src_desc, new_desc, walk_state);		return_ACPI_STATUS (status);	}	if (ACPI_GET_OBJECT_TYPE (source_desc) != ACPI_GET_OBJECT_TYPE (dest_desc)) {		/*		 * The source type does not match the type of the destination.		 * Perform the "implicit conversion" of the source to the current type		 * of the target as per the ACPI specification.		 *		 * If no conversion performed, actual_src_desc = source_desc.		 * Otherwise, actual_src_desc is a temporary object to hold the		 * converted object.		 */		status = acpi_ex_convert_to_target_type (ACPI_GET_OBJECT_TYPE (dest_desc),				  source_desc, &actual_src_desc, walk_state);		if (ACPI_FAILURE (status)) {			return_ACPI_STATUS (status);		}		if (source_desc == actual_src_desc) {			/*			 * No conversion was performed. Return the source_desc as the			 * new object.			 */			*new_desc = source_desc;			return_ACPI_STATUS (AE_OK);		}	}	/*	 * We now have two objects of identical types, and we can perform a	 * copy of the *value* of the source object.	 */	switch (ACPI_GET_OBJECT_TYPE (dest_desc)) {	case ACPI_TYPE_INTEGER:		dest_desc->integer.value = actual_src_desc->integer.value;		/* Truncate value if we are executing from a 32-bit ACPI table */		acpi_ex_truncate_for32bit_table (dest_desc);		break;	case ACPI_TYPE_STRING:		status = acpi_ex_store_string_to_string (actual_src_desc, dest_desc);		break;	case ACPI_TYPE_BUFFER:		/*		 * Note: There is different store behavior depending on the original		 * source type		 */		status = acpi_ex_store_buffer_to_buffer (actual_src_desc, dest_desc);		break;	case ACPI_TYPE_PACKAGE:		status = acpi_ut_copy_iobject_to_iobject (actual_src_desc, &dest_desc,				 walk_state);		break;	default:		/*		 * All other types come here.		 */		ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "Store into type %s not implemented\n",			acpi_ut_get_object_type_name (dest_desc)));		status = AE_NOT_IMPLEMENTED;		break;	}	if (actual_src_desc != source_desc) {		/* Delete the intermediate (temporary) source object */		acpi_ut_remove_reference (actual_src_desc);	}	*new_desc = dest_desc;	return_ACPI_STATUS (status);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/6f42ccf2fc50ecee8ea170040627f268430c1648/exstoren.c/clean/drivers/acpi/executer/exstoren.c