* In field_flags, preserve the flag bits other than the ACCESS_TYPE bits 
* In field_flags, preserve the flag bits other than the * ACCESS_TYPE bits 
acpi_ds_get_field_names (	struct acpi_create_field_info   *info,	struct acpi_walk_state          *walk_state,	union acpi_parse_object         *arg){	acpi_status                     status;	acpi_integer                    position;	ACPI_FUNCTION_TRACE_PTR ("ds_get_field_names", info);	/* First field starts at bit zero */	info->field_bit_position = 0;	/* Process all elements in the field list (of parse nodes) */	while (arg) {		/*		 * Three types of field elements are handled:		 * 1) Offset - specifies a bit offset		 * 2) access_as - changes the access mode		 * 3) Name - Enters a new named field into the namespace		 */		switch (arg->common.aml_opcode) {		case AML_INT_RESERVEDFIELD_OP:			position = (acpi_integer) info->field_bit_position					 + (acpi_integer) arg->common.value.size;			if (position > ACPI_UINT32_MAX) {				ACPI_REPORT_ERROR (("Bit offset within field too large (> 0xFFFFFFFF)\n"));				return_ACPI_STATUS (AE_SUPPORT);			}			info->field_bit_position = (u32) position;			break;		case AML_INT_ACCESSFIELD_OP:			/*			 * Get a new access_type and access_attribute -- to be used for all			 * field units that follow, until field end or another access_as keyword.			 *			 * In field_flags, preserve the flag bits other than the ACCESS_TYPE bits			 */			info->field_flags = (u8) ((info->field_flags & ~(AML_FIELD_ACCESS_TYPE_MASK)) |					  ((u8) ((u32) arg->common.value.integer >> 8)));			info->attribute = (u8) (arg->common.value.integer);			break;		case AML_INT_NAMEDFIELD_OP:			/* Lookup the name */			status = acpi_ns_lookup (walk_state->scope_info,					  (char *) &arg->named.name,					  info->field_type, ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE,					  walk_state, &info->field_node);			if (ACPI_FAILURE (status)) {				ACPI_REPORT_NSERROR ((char *) &arg->named.name, status);				if (status != AE_ALREADY_EXISTS) {					return_ACPI_STATUS (status);				}				/* Already exists, ignore error */			}			else {				arg->common.node = info->field_node;				info->field_bit_length = arg->common.value.size;				/* Create and initialize an object for the new Field Node */				status = acpi_ex_prep_field_value (info);				if (ACPI_FAILURE (status)) {					return_ACPI_STATUS (status);				}			}			/* Keep track of bit position for the next field */			position = (acpi_integer) info->field_bit_position					 + (acpi_integer) arg->common.value.size;			if (position > ACPI_UINT32_MAX) {				ACPI_REPORT_ERROR (("Field [%4.4s] bit offset too large (> 0xFFFFFFFF)\n",						(char *) &info->field_node->name));				return_ACPI_STATUS (AE_SUPPORT);			}			info->field_bit_position += info->field_bit_length;			break;		default:			ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Invalid opcode in field list: %X\n",				arg->common.aml_opcode));			return_ACPI_STATUS (AE_AML_BAD_OPCODE);		}		arg = arg->common.next;	}	return_ACPI_STATUS (AE_OK);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/44f6c01242da4e162f28d8e1216a8c7a91174605/dsfield.c/clean/drivers/acpi/dispatcher/dsfield.c