Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 350894
b: refs/heads/master
c: ef42e53
h: refs/heads/master
v: v3
  • Loading branch information
Bob Moore authored and Rafael J. Wysocki committed Jan 10, 2013
1 parent 81dbf7a commit 2158826
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3e5621a750e2cfb26748c34acbb67c691845494a
refs/heads/master: ef42e53f271b99fe9eb853df5661edeac8a277f6
2 changes: 1 addition & 1 deletion trunk/drivers/acpi/acpica/acinterp.h
Original file line number Diff line number Diff line change
Expand Up @@ -458,7 +458,7 @@ void acpi_ex_reacquire_interpreter(void);

void acpi_ex_relinquish_interpreter(void);

void acpi_ex_truncate_for32bit_table(union acpi_operand_object *obj_desc);
u8 acpi_ex_truncate_for32bit_table(union acpi_operand_object *obj_desc);

void acpi_ex_acquire_global_lock(u32 rule);

Expand Down
14 changes: 12 additions & 2 deletions trunk/drivers/acpi/acpica/dsobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -703,7 +703,7 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state,
/* Truncate value if we are executing from a 32-bit ACPI table */

#ifndef ACPI_NO_METHOD_EXECUTION
acpi_ex_truncate_for32bit_table(obj_desc);
(void)acpi_ex_truncate_for32bit_table(obj_desc);
#endif
break;

Expand All @@ -725,8 +725,18 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state,
case AML_TYPE_LITERAL:

obj_desc->integer.value = op->common.value.integer;

#ifndef ACPI_NO_METHOD_EXECUTION
acpi_ex_truncate_for32bit_table(obj_desc);
if (acpi_ex_truncate_for32bit_table(obj_desc)) {

/* Warn if we found a 64-bit constant in a 32-bit table */

ACPI_WARNING((AE_INFO,
"Truncated 64-bit constant found in 32-bit table: %8.8X%8.8X => %8.8X",
ACPI_FORMAT_UINT64(op->common.
value.integer),
(u32)obj_desc->integer.value));
}
#endif
break;

Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/acpi/acpica/dswexec.c
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ acpi_ds_get_predicate_value(struct acpi_walk_state *walk_state,

/* Truncate the predicate to 32-bits if necessary */

acpi_ex_truncate_for32bit_table(local_obj_desc);
(void)acpi_ex_truncate_for32bit_table(local_obj_desc);

/*
* Save the result of the predicate evaluation on
Expand Down Expand Up @@ -706,7 +706,7 @@ acpi_status acpi_ds_exec_end_op(struct acpi_walk_state *walk_state)
* ACPI 2.0 support for 64-bit integers: Truncate numeric
* result value if we are executing from a 32-bit ACPI table
*/
acpi_ex_truncate_for32bit_table(walk_state->result_obj);
(void)acpi_ex_truncate_for32bit_table(walk_state->result_obj);

/*
* Check if we just completed the evaluation of a
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/acpi/acpica/exconvrt.c
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ acpi_ex_convert_to_integer(union acpi_operand_object *obj_desc,

/* Save the Result */

acpi_ex_truncate_for32bit_table(return_desc);
(void)acpi_ex_truncate_for32bit_table(return_desc);
*result_desc = return_desc;
return_ACPI_STATUS(AE_OK);
}
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/acpi/acpica/exstoren.c
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ acpi_ex_store_object_to_object(union acpi_operand_object *source_desc,

/* Truncate value if we are executing from a 32-bit ACPI table */

acpi_ex_truncate_for32bit_table(dest_desc);
(void)acpi_ex_truncate_for32bit_table(dest_desc);
break;

case ACPI_TYPE_STRING:
Expand Down
18 changes: 11 additions & 7 deletions trunk/drivers/acpi/acpica/exutils.c
Original file line number Diff line number Diff line change
Expand Up @@ -202,35 +202,39 @@ void acpi_ex_relinquish_interpreter(void)
*
* PARAMETERS: obj_desc - Object to be truncated
*
* RETURN: none
* RETURN: TRUE if a truncation was performed, FALSE otherwise.
*
* DESCRIPTION: Truncate an ACPI Integer to 32 bits if the execution mode is
* 32-bit, as determined by the revision of the DSDT.
*
******************************************************************************/

void acpi_ex_truncate_for32bit_table(union acpi_operand_object *obj_desc)
u8 acpi_ex_truncate_for32bit_table(union acpi_operand_object *obj_desc)
{

ACPI_FUNCTION_ENTRY();

/*
* Object must be a valid number and we must be executing
* a control method. NS node could be there for AML_INT_NAMEPATH_OP.
* a control method. Object could be NS node for AML_INT_NAMEPATH_OP.
*/
if ((!obj_desc) ||
(ACPI_GET_DESCRIPTOR_TYPE(obj_desc) != ACPI_DESC_TYPE_OPERAND) ||
(obj_desc->common.type != ACPI_TYPE_INTEGER)) {
return;
return (FALSE);
}

if (acpi_gbl_integer_byte_width == 4) {
if ((acpi_gbl_integer_byte_width == 4) &&
(obj_desc->integer.value > (u64)ACPI_UINT32_MAX)) {
/*
* We are running a method that exists in a 32-bit ACPI table.
* We are executing in a 32-bit ACPI table.
* Truncate the value to 32 bits by zeroing out the upper 32-bit field
*/
obj_desc->integer.value &= (u64) ACPI_UINT32_MAX;
obj_desc->integer.value &= (u64)ACPI_UINT32_MAX;
return (TRUE);
}

return (FALSE);
}

/*******************************************************************************
Expand Down

0 comments on commit 2158826

Please sign in to comment.