ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[WHILE_OP] termination! Op=%p\n", op)); 
ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[WHILE_OP] termination! Op=%p\n",op)); 
acpi_ds_exec_end_control_op (	struct acpi_walk_state          *walk_state,	union acpi_parse_object         *op){	acpi_status                     status = AE_OK;	union acpi_generic_state        *control_state;	ACPI_FUNCTION_NAME ("ds_exec_end_control_op");	switch (op->common.aml_opcode) {	case AML_IF_OP:		ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[IF_OP] Op=%p\n", op));		/*		 * Save the result of the predicate in case there is an		 * ELSE to come		 */		walk_state->last_predicate =			(u8) walk_state->control_state->common.value;		/*		 * Pop the control state that was created at the start		 * of the IF and free it		 */		control_state = acpi_ut_pop_generic_state (&walk_state->control_state);		acpi_ut_delete_generic_state (control_state);		break;	case AML_ELSE_OP:		break;	case AML_WHILE_OP:		ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[WHILE_OP] Op=%p\n", op));		if (walk_state->control_state->common.value) {			/* Predicate was true, go back and evaluate it again! */			status = AE_CTRL_PENDING;		}		ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[WHILE_OP] termination! Op=%p\n", op));		/* Pop this control state and free it */		control_state = acpi_ut_pop_generic_state (&walk_state->control_state);		walk_state->aml_last_while = control_state->control.aml_predicate_start;		acpi_ut_delete_generic_state (control_state);		break;	case AML_RETURN_OP:		ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,			"[RETURN_OP] Op=%p Arg=%p\n",op, op->common.value.arg));		/*		 * One optional operand -- the return value		 * It can be either an immediate operand or a result that		 * has been bubbled up the tree		 */		if (op->common.value.arg) {			/* Since we have a real Return(), delete any implicit return */			acpi_ds_clear_implicit_return (walk_state);			/* Return statement has an immediate operand */			status = acpi_ds_create_operands (walk_state, op->common.value.arg);			if (ACPI_FAILURE (status)) {				return (status);			}			/*			 * If value being returned is a Reference (such as			 * an arg or local), resolve it now because it may			 * cease to exist at the end of the method.			 */			status = acpi_ex_resolve_to_value (&walk_state->operands [0], walk_state);			if (ACPI_FAILURE (status)) {				return (status);			}			/*			 * Get the return value and save as the last result			 * value.  This is the only place where walk_state->return_desc			 * is set to anything other than zero!			 */			walk_state->return_desc = walk_state->operands[0];		}		else if ((walk_state->results) &&				 (walk_state->results->results.num_results > 0)) {			/* Since we have a real Return(), delete any implicit return */			acpi_ds_clear_implicit_return (walk_state);			/*			 * The return value has come from a previous calculation.			 *			 * If value being returned is a Reference (such as			 * an arg or local), resolve it now because it may			 * cease to exist at the end of the method.			 *			 * Allow references created by the Index operator to return unchanged.			 */			if ((ACPI_GET_DESCRIPTOR_TYPE (walk_state->results->results.obj_desc[0]) == ACPI_DESC_TYPE_OPERAND) &&				(ACPI_GET_OBJECT_TYPE (walk_state->results->results.obj_desc [0]) == ACPI_TYPE_LOCAL_REFERENCE) &&				((walk_state->results->results.obj_desc [0])->reference.opcode != AML_INDEX_OP)) {				status = acpi_ex_resolve_to_value (&walk_state->results->results.obj_desc [0], walk_state);				if (ACPI_FAILURE (status)) {					return (status);				}			}			walk_state->return_desc = walk_state->results->results.obj_desc [0];		}		else {			/* No return operand */			if (walk_state->num_operands) {				acpi_ut_remove_reference (walk_state->operands [0]);			}			walk_state->operands [0]    = NULL;			walk_state->num_operands    = 0;			walk_state->return_desc     = NULL;		}		ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH,			"Completed RETURN_OP State=%p, ret_val=%p\n",			walk_state, walk_state->return_desc));		/* End the control method execution right now */		status = AE_CTRL_TERMINATE;		break;	case AML_NOOP_OP:		/* Just do nothing! */		break;	case AML_BREAK_POINT_OP:		/* Call up to the OS service layer to handle this */		status = acpi_os_signal (ACPI_SIGNAL_BREAKPOINT, "Executed AML Breakpoint opcode");		/* If and when it returns, all done. */		break;	case AML_BREAK_OP:	case AML_CONTINUE_OP: /* ACPI 2.0 */		/* Pop and delete control states until we find a while */		while (walk_state->control_state &&				(walk_state->control_state->control.opcode != AML_WHILE_OP)) {			control_state = acpi_ut_pop_generic_state (&walk_state->control_state);			acpi_ut_delete_generic_state (control_state);		}		/* No while found? */		if (!walk_state->control_state) {			return (AE_AML_NO_WHILE);		}		/* Was: walk_state->aml_last_while = walk_state->control_state->Control.aml_predicate_start; */		walk_state->aml_last_while = walk_state->control_state->control.package_end;		/* Return status depending on opcode */		if (op->common.aml_opcode == AML_BREAK_OP) {			status = AE_CTRL_BREAK;		}		else {			status = AE_CTRL_CONTINUE;		}		break;	default:		ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unknown control opcode=%X Op=%p\n",			op->common.aml_opcode, op));		status = AE_AML_BAD_OPCODE;		break;	}	return (status);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/44f6c01242da4e162f28d8e1216a8c7a91174605/dsopcode.c/clean/drivers/acpi/dispatcher/dsopcode.c