ACPICA: Revert "Fix for implicit result conversion for the To____ functions"
Subsystems (2)
PATCH v2 4/7 ACPICA: Revert "Fix for implicit result conversion for the To____ functions"
From: Bob Moore <[email protected]>
ACPICA commit 0e44fee13434766ebbb4d156e3ed45604508d7c3
This reverts commit e1342c9f2dde37a67e916099658b65984ef8a434. Implicit conversion should in fact be disabled for the "explicit conversion" operators. This is stated in the ACPI specification. The operators affected are:to_integerto_stringto_bufferto_decimal_stringto_hex_stringto_BCDfrom_BCD
Signed-off-by Bob Moore <[email protected]>
Signed-off-by Erik Schmauss <[email protected]>
--- drivers/acpi/acpica/acopcode.h | 14 +++++++------- drivers/acpi/acpica/amlcode.h | 20 +++----------------- drivers/acpi/acpica/exconvrt.c | 1 + drivers/acpi/acpica/exresop.c | 1 + 4 files changed, 12 insertions(+), 24 deletions(-)
drivers/acpi/acpica/acopcode.h +7 -7
@@ -251,7 +251,7 @@#define ARGI_FIELD_OP ARGI_INVALID_OPCODE#define ARGI_FIND_SET_LEFT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF)#define ARGI_FIND_SET_RIGHT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_FROM_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) +#define ARGI_FROM_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET)#define ARGI_IF_OP ARGI_INVALID_OPCODE#define ARGI_INCREMENT_OP ARGI_LIST1 (ARGI_TARGETREF)#define ARGI_INDEX_FIELD_OP ARGI_INVALID_OPCODE
@@ -315,12 +315,12 @@#define ARGI_SUBTRACT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)#define ARGI_THERMAL_ZONE_OP ARGI_INVALID_OPCODE#define ARGI_TIMER_OP ARG_NONE -#define ARGI_TO_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) -#define ARGI_TO_BUFFER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_TARGETREF) -#define ARGI_TO_DEC_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_TARGETREF) -#define ARGI_TO_HEX_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_TARGETREF) -#define ARGI_TO_INTEGER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_TARGETREF) -#define ARGI_TO_STRING_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_TARGETREF) +#define ARGI_TO_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET) +#define ARGI_TO_BUFFER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) +#define ARGI_TO_DEC_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) +#define ARGI_TO_HEX_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) +#define ARGI_TO_INTEGER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) +#define ARGI_TO_STRING_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_FIXED_TARGET)#define ARGI_UNLOAD_OP ARGI_LIST1 (ARGI_DDBHANDLE)#define ARGI_VAR_PACKAGE_OP ARGI_LIST1 (ARGI_INTEGER)#define ARGI_WAIT_OP ARGI_LIST2 (ARGI_EVENT, ARGI_INTEGER)
drivers/acpi/acpica/amlcode.h +3 -17
@@ -274,23 +274,9 @@#define ARGI_DEVICE_REF 0x0D#define ARGI_REFERENCE 0x0E#define ARGI_TARGETREF 0x0F/* Target, subject to implicit conversion */ -#define ARGI_SIMPLE_TARGET 0x10/* Name, Local, Arg -- no implicit conversion */ -#define ARGI_STORE_TARGET 0x11/* Target for store is TARGETREF + package objects */ -/* -* #define ARGI_FIXED_TARGET 0x10 Target, no implicit conversion -* -* Removed 10/2016. ARGI_FIXED_TARGET was used for these operators: -* from_BCD -* to_BCD -* to_decimal_string -* to_hex_string -* to_integer -* to_buffer -* The purpose of this type was to disable "implicit result conversion", -* but this was incorrect per the ACPI spec and other ACPI implementations. -* These operators now have the target operand defined as a normal -* ARGI_TARGETREF. -*/ +#define ARGI_FIXED_TARGET 0x10/* Target, no implicit conversion */ +#define ARGI_SIMPLE_TARGET 0x11/* Name, Local, Arg -- no implicit conversion */ +#define ARGI_STORE_TARGET 0x12/* Target for store is TARGETREF + package objects */ /* Multiple/complex types */
drivers/acpi/acpica/exconvrt.c +1 -0
@@ -598,6 +598,7 @@ acpi_ex_convert_to_target_type(acpi_object_type destination_type,*/ switch (GET_CURRENT_ARG_TYPE (walk_state->op_info->runtime_args)) {case ARGI_SIMPLE_TARGET : +case ARGI_FIXED_TARGET :case ARGI_INTEGER_REF :/* Handles Increment, Decrement cases */ switch (destination_type) {
drivers/acpi/acpica/exresop.c +1 -0
@@ -305,6 +305,7 @@ acpi_ex_resolve_operands(u16 opcode,case ARGI_OBJECT_REF :case ARGI_DEVICE_REF :case ARGI_TARGETREF :/* Allows implicit conversion rules before store */ +case ARGI_FIXED_TARGET :/* No implicit conversion before store to target */ case ARGI_SIMPLE_TARGET :/* Name, Local, or arg - no implicit conversion */ case ARGI_STORE_TARGET :
Signature · 1 line
2.14.3